css双飞翼布局

xiaoxiao2021-02-28  63

双飞翼布局主要解决俩问题:1、三列布局,中间宽度自适应,两边定宽; 2、中间栏要在浏览器中优先展示渲染。

 

三列布局的实现方式就是让三列外面套一个<div id="container">,如下代码:

1

2

3

4

5

<div id="container">

    <div id="center_div" class="column">主要内容</div>

    <div id="left_div" class="column"></div>

    <div id="right_div" class="column"></div>

</div>

浏览器是按照你写html的顺序渲染的,所以把中间div要写到前面,这就满足了问题里的第二个。但是正常是,写到前面也会显示到前面,咋办,别急,接着看:

 

然后让这三列div都浮动起来, float:left,

1

2

3

.column{

   float: left;

}

接着,让中间列div宽度占满整个宽度100%(宽度设成百分数是相对于父元素的宽度,所以container的100%是浏览器宽度,center_div宽度就是container全宽度,也等于浏览器宽度):

1

2

3

4

5

6

#container{

    width: 100%;

}

#center_div{

     width: 100%;

}

浮动的特点就是这一行占满了就既不进来别的元素了,只要宽度能挤下,就会挤进来。中间列div不是占了全部了吗,挤不下怎么办,办法是让左右两个div覆盖在上面,这样就挤下了,这就是负外边距的作用。

 

所以,

再接着,把左边div设置负边距margin-left:-100%和固定width(假设是300px),负边距的作用就是让左边div盖在中间div上面,设成100%就会盖在中间div最左边。(这个100%是指的外面div,也就是那个id="container"的宽度)

1

2

3

4

#left_div{

    width: 300px;

    margin-left: 100%;

}

右边div设置固定width,假设是200px,负边距margin-left:200px和这它的固定宽度一致,这样会盖在最中间div右边。

1

2

3

4

#right_div{

    width: 200px;

    margin-left: 200px;

}

 

-----------------------------------分割线--------------------------------

到这一步为止,如果你给每个div加上颜色,会看到它们已经形成了三列,但是问题在于,中间div的内容被挡住了,

所以最后一步,就是在中间div里再创建一个子div,让这个子div的左右外边距分别等于左边div和右边div的固定宽度,

如下:

1

2

3

4

5

6

<div id="container">    

    <div id="center_div" class="column">

    <div id="mainWrap">主要内容</div>   

  <div id="left_div" class="column"></div>    

  <div id="right_div" class="column"></div>

</div>

 

假设这个子div的id=mainWrap,那么CSS按照上面的取值就是这么写:

1

2

3

4

#center_div  #mainWrap{

    margin-left: 300px;

    margin-right: 200px;

}

 

OK,这样就完工了。你在各个div里放入一些文字,缩放一下浏览器窗口看看,左右宽度是不变的,中间的内容会随着内容的多少让网页高度变化。

转载请注明原文地址: https://www.6miu.com/read-54576.html

最新回复(0)