解决 多列 布局

<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="right">
		<p>right</p>
		<p>right</p>
	</div>
</div>

多列布局
一列定宽另一列自适应
(1) float + margin
兼容性有点问题,IE7以后,没问题
IE6有问题,有3像素的问题,可以通过hack解决。

<style type="text/css">
	.left {float: left; height:30px; width: 100px; background-color: #ccc;}
	.right {margin-left:110px; background-color: #369;}
</style>

(2) float + margin + fix
优点,兼容性很好,
缺点,结构多一点。

<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="right-fix">
		<div class="right">
			<p>right</p>
			<p>right</p>
		</div>
	</div>
</div>

<style type="text/css">
	.left {
		float: left;
		width: 100px;
		background-color: #999;
		position: relative;		/*提高层级,否则无法选中其中的元素,因为fix在后面*/
	}
	.right-fix {
		float: right;
		width:100%;
		background-color: #ddd;
		margin-left:-100px;
	}
	.right {
		margin-left:110px;
		background-color: #369;
	}

</style>

(3)float + overflow
缺点IE6,不行
<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="right">
		<p>right</p>
		<p>right</p>
	</div>
</div>

<style type="text/css">
	.left {
		float: left;
		width: 100px;
		margin-right: 20px;
		background-color: #999;
	}

	.right {
		overflow: hidden;	/*触发bfc,bfc模式与外界隔离*/
		background-color: #ddd;
	}

</style>

(4)table

<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="right">
		<p>right</p>
		<p>right</p>
	</div>
</div>

<style type="text/css">
	.parent {
		display: table;
		width: 100%;
		table-layout: fixed;	/*两个好处(1)加速table渲染,实现布局优先。*/
		background-color: #999;
	}

	.left, .right {
		display: table-cell;
		background-color: #eee;
	}

	.left {
		width: 100px;
		background-color: #369;
		padding-right: 20px;
	}

</style>

(5)flex
兼容性问题。性能稍微差一点,小范围布局。

<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="right">
		<p>right</p>
		<p>right</p>
	</div>
</div>

<style type="text/css">
	.parent {
		display: flex;
	}

	.left {
		background-color: #369;
		left: 100px;
		margin-right: 20px;
	}

	.right {
		flex : 1;	/*1 1 0; 剩余宽度都给了右边*/
		background-color: #eee;
	}

</style>

多列定宽,一列自适应
<div class="parent">
	<div class="left">
		<p>left</p>
	</div>
	<div class="center">
		<p>center</p>
	</div>
	<div class="right">
		<p>right</p>
		<p>right</p>
	</div>
</div>

------------1---------------
<style type="text/css">
	.parent {
		display: flex;
	}

	.left, .center {
		background-color: #369;
		left: 100px;
		margin-right: 20px;
	}

	.right {
		flex : 1;	/*1 1 0; 剩余宽度都给了右边*/
		background-color: #eee;
	}

</style>

------------2---------------

<style type="text/css">

	.left, .center {
		background-color: #369;
		float: left;
		width: 100px;
		margin-right: 20px;
	}

	.right {
		overflow: hidden;
		background-color: #eee;
	}

</style>

多列布局
<div class="parent">
	<div class="left">
		<p>left</p>
	</div>

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

左右自适应
(1) float + overflow

<style type="text/css">
	.left {
		background-color: #369;
		float: left;
		margin-right: 20px;
	}

	.right {
		overflow: hidden;
		background-color: #eee;
	}
</style>


(2)	table

<style type="text/css">

	.parent {
		display: table;
		width: 100%;
		table-layout: fixed;
	}

	.left, .right {
		display: table-cell;
	}

	.left {
		width: 100px;
		padding-right: 20px;
		background-color: #369;
	}
	.right {
		background-color: #eee;
	}

</style>

(3)flex

<style type="text/css">

	.parent {
		display: flex;
	}

	.left {
		width: 200px;
		margin-right: 20px;
	}
	.right {
		flex:1;
		background-color: #369;
	}

</style>

  

时间: 2024-08-10 02:09:04

解决 多列 布局的相关文章

如何通过 CSS 实现一个左边固定宽度、右边自适应的两列布局

最近在百度 IFE 训练营中看见的一道题目: 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定.右侧部分宽度随浏览器宽度的变化而自适应变化  个人总结出如下三种实现思路: 通过绝对定位实现 See the Pen absolute-two-column by xal821792703 (@honoka) on CodePen. 注意点如下: 需要套一个“positioned”的父元素 div-a 绝对定位,并将位置调整为浏览器左上角 div-b margin-left 属性值为 div-

纯CSS无hacks的跨游览器多列布局

利用纯CSS创建一个等高多列的布局并不件易事,本教程将着重分析出现在多列布局的多个问题,然后为大家等来一个简单全游览器通吃的解决方法,不使用图片,脚本,CSS hacks并在最严格的XHTML 规范中都能通过验证. 问题的症结所在 如上图所示,由于各列的内容不一致导致其背景的高度也不统一.而背景实质上是内容(标准的盒子模型是由内容区,补白区,边框区与边界区组成,背景存在于前三者中:IE为前两者)的自适应的问题.再转化一下,如何撑大那些较短的列的高度,让所有列的高度等于最高的列的高度?这个,的确很

两列布局中单列定宽单列自适应布局的5种思路

× 目录 [1]float [2]inline-block [3]table[4]absolute[5]flex 前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute和flex这五种思路来详细说明如何巧妙地实现布局 思路一: float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错

web标准(复习)--2 列布局

今天我们开始学习一列布局,包含以下几种形式: 1.一列固定宽度 2.一列固定宽度居中 3.一列自适应宽度 4.一列自适应宽度居中 5.一列二至多块布局 前一节我们回顾了xhtml基础和css基础部分,今天我们正式开始使用网页制作软件--adobe公司出品的dreamweaver来开始网页设计之旅.相信之前您已经用过这个软件了,具体怎么使用我就不讲了.为了照顾部分朋友,今天课程的css部分我们是以可视化生成方式,不过建议大家能手写的尽量还是手写,这样有助于提高效率. 一.一列固定宽度我们先看一下一

八种创建等高列布局

高度相等列在Web页面设计中永远是一个网页设计师的需求.如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了.但是,如果一个或多个列需要单独设置自己的背景色,那么它的视觉完整性的设计就显得非常重要了.大家都知道当初Table实现等高列布局是多么的简单,但是我们使用CSS来创建等高列布局并非是那么容易的事情. 如果一个设计是固定宽度(非流体的宽度设计),那么实现多列等高效果是相当的容易.最好的技术就是使用Dan Cederholm的Faux

web标准(复习)--3 二列和三列布局

今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三列固定宽度居中 IE6的3像素bug 一.两列自适应宽度下面以常见的左列固定右列自适应为例,因为div为块状元素,默认情况下占据一行的空间,要想让下面的div跑到右侧,就需要做助css的浮动来实现.首先创建html代码如下: <style>#side { background-color:#99F

八种创建等高列布局(转载)

高度相等列在Web页面设计中永远是一个网页设计师的需求.如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了.但是,如果一个或多个列需要单独设置自己的背景色,那么它的视觉完整性的设计就显得非常重要了.大家都知道当初Table实现等高列布局是多么的简单,但是我们使用CSS来创建等高列布局并非是那么容易的事情. 如果一个设计是固定宽度(非流体的宽度设计),那么实现多列等高效果是相当的容易.最好的技术就是使用Dan Cederholm的Faux

等高列布局、水平垂直居中与置顶页脚(转载)

等高列布局 在<八种创建等高列布局>一文中详细介绍了八种创建等高列布局的不同方法.可以说这些方法足以满足你的业务需求,当然其中有一些方法略为繁琐,也有时转得人头晕.在今天这种技术环境之下,如果的业务对IE低版本依赖性不是非常强的情况之下,可以考虑一些新的方法来实现.接下来我与大家一起探讨几种新方法实现等高列布局. Flexbox方式 Flexbox是一个强大而又神奇的CSS3模块,而且到现在,也得到众开浏览器的支持.有了这个模块,可以帮助我们做很多事情,而且较之以前的方案要更简单,唯一蛋疼的是

常用布局的实现(两列布局、三列适应布局,两列等高适应布局等)

两列布局:左侧定宽,右侧自适应方法一:利用float和负外边距 <style> * { margin: 0; padding: 0; } .main,.sitebar { font: bolder 20px/300px; } .main { width: 100%; float: left; } .main .content { margin-left: 200px; background-color: red; } .sitebar { width: 200px; float: left;