《web前端笔记30》css三栏布局、左右两栏宽度固定,中间自适应

html-css017

《web前端笔记30》css三栏布局、左右两栏宽度固定,中间自适应,第1张

三栏布局一般指的是页面中一共有三栏, 左右两栏宽度固定,中间自适应的布局 ,三栏布局的具体实现:

利用浮动和负边距来实现。父级元素设置左右的 padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为父级元素的宽度,因此后面两列都被挤到了下一行,通过设置 margin 负值将其移动到上一行,再利用相对定位,定位到两边。

你的D不是和父容器宽度一样吗,如果D的父容器知道宽度,D就有宽度,进而B就有宽度。你的说法说存在有问题,那估计D的父容器也没有指定宽度。这些div宽度都没有可信赖可参照的宽度,自然有问题。

换种方式,将B宽度设个固定值,A,C自适应,D设成display: inline-block,D宽=A+B+C。以这种方式看看能不能行。

<html>

<head>

<style>

#contant{

height:50pxborder:1px solid #000display: inline-block

}

#line{

width: 500height:10pxbackground:#222border:1px solid #000display: inline-blockmargin-top: 3px

}

#left{

float: leftbackground:#888display: inline-block

}

#right{

float: rightbackground: #bbbdisplay: inline-block

}

</style>

</head>

<body>

<div id="contant">

<div id="left">左</div>

<div id="line"></div>

<div id="right">右</div>

</div>

</body>

</html>

其实很简单,用四个DIV。将三个DIV放到一个大的DIV中。然后三个小DIV第一个用float:left第二个用float:right第三个不用float也不用position,只需要用margin-left:第一个div的宽度,margin-right:第二个div的宽度。将最大的DIV设置一下min-width属性。以免页面太窄,会将DIV挤下来。

代码如下:

<div class="wrapper">

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

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

<div class="content">center</div>

</div>

<style type="text/css">

.wrapper{min-width:1000px}

.left{float:leftwidth:200px}

.right{float:rightwidth:200px}

.content{margin-left:210pxmargin-right:210px}

</style>