前面介绍过通过float属性或通过display:inline-box来实现多栏布局,但通过这两种方式实现的多栏布局底部无法对齐,而且通过传统方式来实现多栏布局比较烦琐。为了解决这个问题,CSS 3专门提供了多栏布局的功能。
CSS 3新增的分栏功能
通过CSS 3实现分栏非常简单,只要简单地增加column-count属性即可。
注意
目前各主流浏览器都暂未支持使用标准的column-count属性,因此在各浏览器中需增加特定的浏览器前缀,如下面页面代码所示。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 分栏布局 </title>
<style type="text/css">
div#content {
column-count: 2;
-moz-column-count: 2;
-o-column-count: 2;
-webkit-column-count: 2;
}
</style>
</head>
<body>
<div id="content">
<h2>疯狂软件介绍</h2>
疯狂Java品牌专注高级软件编程,以“十年磨一剑”的心态打造全国最强(不是之一)疯狂Java学习体系:包括疯狂Java体系原创图书,疯狂Java学习路线图,这些深厚的知识沉淀已被大量高校、培训机构奉为经典。<br/>
疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。经过八年沉淀,疯狂Java强势回归。疯狂Java创始人李刚,携疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。
</div>
</body>
</html>
设置分栏样式
为了实现分栏效果,CSS 3增加了大量属性,如下所示。
➢ columns:这是一个复合属性,通过该属性可同时指定栏目宽度、栏目数两个属性值。该属性相当于同时指定column-width、column-count属性。
➢ column-width:该属性指定一个长度值,用于指定每个栏目的宽度。
➢ column-count:该属性指定一个整数值,用于指定栏目数。
➢ column-rule:这是一个复合属性,用于指定各栏目之间的分隔条。该属性可同时指定分隔条的宽度、样式、颜色。该属性相当于同时指定column-rule-width、column-rule-style、column-rule-color属性。
➢ column-rule-width:该属性指定一个长度值,用于指定栏目之间分隔条的宽度。
➢ column-rule-style:该属性用于设置分隔条的线型。该属性支持的属性值有none、dotted、dashed、solid、double、groove、ridge、inset、outset,这些属性值与前面介绍边框线型时各属性值的意义完全相同。
➢ column-rule-color:该属性用于设置分隔条的颜色。
➢ column-gap:该属性指定一个长度值,用于指定各栏目之间的间距。
➢ column-fill:该属性用于控制栏目的高度。该属性支持如下两个属性值。
□ auto:各栏目的高度随着其内容的多少自动变化。
□ balance:各栏目的高度将会统一成内容最多的那一栏的高度。
注意:
column-width、column-count这两个属性可以相互影响,它们指定的栏目宽度、栏目数并不是绝对的。当分栏内容所在容器的宽度大于column-width×column-count+间距时,有的浏览器会增加栏目数,有的浏览器会增加栏目宽度。为了避免不同浏览器出现这种差异,一般建议让容器的宽度与column-width×column-count+间距大致相等。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 分栏布局 </title>
<style type="text/css">
div#container{
width: 1100px;
border: 1px solid black;
}
div#content {
/* 设置栏目数, 以及各栏目的宽度*/
columns: 240px 3;
-moz-columns: 240px 3;
-o-columns: 240px 3;
-webkit-columns: 240px 3;
}
</style>
</head>
<body>
<div id="container">
<div id="content">
<h2>疯狂软件介绍</h2>
疯狂Java品牌专注高级软件编程,以“十年磨一剑”的心态打造全国最强(不是之一)疯狂Java学习体系:包括疯狂Java体系原创图书,疯狂Java学习路线图,这些深厚的知识沉淀已被大量高校、培训机构奉为经典。<br/>
疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。经过八年沉淀,疯狂Java强势回归。疯狂Java创始人李刚,携疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。
</div>
</div>
</body>
</html>
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 分栏布局 </title>
<style type="text/css">
div#container{
margin:auto;
width: 840px;
border: 1px solid black;
}
div#content {
/* 设置栏目数, 以及各栏目的宽度*/
columns: 240px 3;
-moz-columns: 240px 3;
-o-columns: 240px 3;
-webkit-columns: 240px 3;
/* 设置栏目之间的间距*/
column-gap: 50px;
-moz-column-gap: 50px;
-o-column-gap: 50px;
-webkit-column-gap: 50px;
/* 设置栏目之间的分隔条*/
column-rule: 10px inset #aaa;
-moz-column-rule: 10px inset #aaa;
-o-column-rule: 10px inset #aaa;
-webkit-column-rule: 10px inset #aaa;
}
</style>
</head>
<body>
<div id="container">
<div id="content">
<h2>疯狂软件介绍</h2>
疯狂Java品牌专注高级软件编程,以“十年磨一剑”的心态打造全国最强(不是之一)疯狂Java学习体系:包括疯狂Java体系原创图书,疯狂Java学习路线图,这些深厚的知识沉淀已被大量高校、培训机构奉为经典。<br/>
疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。经过八年沉淀,疯狂Java强势回归。疯狂Java创始人李刚,携疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。
</div>
</div>
</body>
</html>
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。