简体   繁体   中英

CSS 3 Column float (2 fixed, 1 dynamic)

I'm designing a header which is made of 3 parts.

The page must be fluid: min-width:940px; max-width:1200px; min-width:940px; max-width:1200px;

The first two parts of the header will be fixed size:

   left       middle        right
<---------><---------><----------------->
   134px      183px       (Fill the remaining space)

I'd like the right part to change depending on the size of the page, I'll paste what I have so far but my problem is making it fill the gap completetly.

HTML:

<div class="main">

<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>

CSS:

    .main{
        margin:auto;
        min-width:940px;
        max-width:1200px;
        background-color:#000;
    }

    .left{
    float: left;
    width: 134px;
    height: 191px;
    background-color:#0000ff;
    }
    .middle{
    float: left;
    width: 183px;
    height: 191px;
    background-color:#ffff00;
    }

    .right{
    float: left;
    width: 60%;
    height: 191px;
    background-color:#ff0000;
    }

Try this:

<html>
<head>
<title>Three columns</title>
<style type="text/css">
div.main { background-color: #000; }
div.left { float: left; width: 134px; height: 191px; background-color:#0000ff; }
div.middle { float: left; width: 183px; height: 191px; background-color:#ffff00; }
div.right { height: 191px; background-color: #ff0000; margin-left: 317px; }
</style>
</head>
<body>
<div class="main">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
</body>
</html>

I don't have enough reputation to comment, but I just wanted to endorse the correctness of the previous answer. I was looking for something slightly different: fixed-liquid-fixed, so tweaked it as follows:

<html>
<head>
<title>Three columns</title>
<style type="text/css">
div.main { background-color: #000; }
div.left { float: left; width: 134px; height: 191px; background-color:#0000ff; }
div.middle { height: 191px; background-color: #ff0000; margin-left: 134px; margin-right: 183px;}
div.right { float: right; width: 183px; height: 191px; background-color:#ffff00; }
</style>
</head>
<body>
<div class="main">
<div class="left"></div>
<div class="right"></div>
<div class="middle"></div>
</div>
</body>
</html>

Key points to notice: - margins, with float, are used to prevent the body overlapping with the edges. - in my case, you need to reverse the order of the divs in the html - you actually don't need a div for the "middle". One site that does without is the quirksmode blog (it just sets margins directly on the "body" element): http://www.quirksmode.org/blog/archives/browsers/index.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM