目录
一、column-count
column-count语法:
取值说明:
兼容的浏览器:
HTML Code
CSS Code
效果:
二、column-width
column-width语法:
首页 web前端 html教程 CSS3 Multi-columns 之列数和列宽_html/css_WEB-ITnose

CSS3 Multi-columns 之列数和列宽_html/css_WEB-ITnose

Jun 24, 2016 am 11:19 AM

Multi-column ”译成中文就是“多列”,这个" Multi-column "是 W3C 给 CSS3 增加的一个 多列布局模块(CSS Multi-column Layout Module) 。它主要应用在文本的多列布局方面,对于文本的多列布局我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示:

对于上图的两列布局,我想Web攻城师们实现起来还是有相当大的难度。但是CSS3的“Multi-column”就可以帮大家解决上面这样的多列布局,所以Web攻城师们掌握了这个新的设计方法也就掌握了一样新的技术,那么今天开始主要和大家一起探讨一下CSS3的“Multi-column”使用方法和注意事项。

CSS3 的" Multi-column "按大块主要分成以下几块:

1、 列数和列宽 : column-count ; column-width ; columns

2、 列的间距和分列样式 : column-gap ; column-rule-color ; column-rule-style ; column-rule-width ; column-rule ;

3、 列的分栏符 : break-before ; break-after ; break-inside ;

4、 跨越列 : column-span ;

5、 填充列 : column-fill 。

从今天开始花几节专门针对上面所列每个部分的东西进行介绍,首先开始第一部分 列数和列宽

一、column-count

column-count作用:主要是用来描述一个Multi元素的列数

column-count语法:

column-count: auto || 数字
登录后复制

取值说明:

1、auto:此值为column-count的默认值,当column-count没有设置任何值时,默认的值就是auto,此时的栏数是根据别的参数来确定的,比如说列宽;

2、数字:这里可以是任何正整数数字,但不可以带有任何单位,用来表示Multi元素分列的列数。

兼容的浏览器:

从上图中可以看出,IE全家都不支持这个属性,但是在Firefox和Webkit下还是需要自己的私有属性:-moz和-webkit,这样正确的兼容写法如下:

/*Firefox*/  -moz-column-count:auto || 数字;  /*Webkit*/  -webkit-column-count:auto || 数字;  /*W3C标准*/  column-count:auto || 数字; /*Opera11.0+*/
登录后复制

接下来先创建一个简单的段落Demo

HTML Code

<div class="demo">Lorem ipsum dolor sit ... deserunt mollit anim id est laborum.</div>
登录后复制

CSS Code

.demo {     width: 400px;     border: 1px solid #ccc;     padding: 10px;  }
登录后复制

首先看第一种情况:column-count:auto。前面也说过,当column-count取值为auto时,元素分栏是由其他属性决定的比如说,column-width,具体我们来看代码如何实现:

.columnCountAuto {	-moz-column-count: auto;	-webkit-column-count: auto;	column-count: auto;	-moz-column-width: 193px;	-webkit-column-width: 193px;	column-width: 193px;  }
登录后复制

其实column-count值为auto时,可以不要显式的设置,因为其默认值就是auto,所以上面的代码中大家可以尝试的把column-count:auto这个去掉,看看结果不是不是一样。这里有一点需要说明的就是当只用column-width来控制显示的列数时,其column-width的取值最好不要超过下面公式计算出来的值 :

column-width = (width-(n-1)*font-size)/n  /*其中n大于或等于2;并且其他值为默认值*/
登录后复制

就拿本例来说,n=2,font-size:14px;那么column-width的值应该是(400-14)/2=193px( Opera下最好再减1个px,当然如果你是中文的话也最好这样做,减1-2px,至于为什么,我也说不清楚。 );当你把column-width值大于193px时,只会显示一列,上面公式计算出来的值,我测试过可以使用正常(其它相关值为默认值)。

效果:

上面是column-count取值为auto的使用,现在一起来看其取值为具体数值时的应用,基于前面的实例,把列数换成三列,如:

.columnCountLength{     -moz-column-count:3;     -webkit-column-count:3;     column-count:3;   }
登录后复制

效果:

从上面的效果图中可以知道,只要给Multi元素指定列数,自己根据列数和总宽度来计算每列的宽度,其计算公式也是如上所示,同样前提条件是相关参数为默认值。

二、column-width

column-width作用:此属性是用来控制Multi元素的列宽

column-width语法:

column-width: <length> || auto;
登录后复制

取值说明:

1、 auto :此值是其默认值。如果column-width设置值为auto或者没有显式的设置值时,此时Multi元素的列宽将由其他属性来决定,比如前面的实例就是由column-count来决定的(当然column-count的值不能为auto了,不然是无效果的);

2、 :此值使用固定值来设置Multi元素的宽度,其单位可以是px或者em;但不能是负值;

兼容的浏览器:

同样是IE整个家族都不支持,同时w3c标准语法目前只有Opera11+支持,在Firefox和Safari以及Chrom下都需要带上自己的前缀,如:

/*Firefox*/   -moz-column-width:<length> || auto;   /*Webkit*/   -webkit-column-width:<length> || auto;   /*W3C*/   column-width:<length> ||  auto;
登录后复制

了解完column-width的属性等相关知识后,首先来看一个普通的例子,这里所说的普通就是指,元素分列的列宽不指定确定的宽度值,并且其他参数都为默认值,如:

.columnWidth {	-moz-column-width: auto;	-webkit-column-width: auto;	column-width: auto;						   }
登录后复制

效果:

从效果中清楚的知道,给Multi元素仅设置auto是没有任何效果的,因为此时的值是需要根据元素的列数来定的,在这里并没有指定列数的值,所以默认为1列

在上面的实例的基础上,变通一下,给他加上一个column-count:2:

.columnWidthCount {	-moz-column-width: auto;	-webkit-column-width: auto;	column-width: auto;	-moz-column-count: 2;	-webkit-column-count: 2;	column-count: 2;  }
登录后复制

效果:

这个再次说明,当column-width为auto时需要配合column-count的设置才能有分列效果。

下面一起来看两个比较特殊的实例,假设现在列宽为195px,同时列之间的距离为0;而且他们之间没有任何样式:

.columnWidthBig {      -moz-column-width: 195px;      -webkit-column-width: 195px;      column-width: 195px;      -moz-column-gap: 0;      -webkit-column-gap: 0;      column-gap: 0;      -moz-column-rule: 0 none;       -webkit-column-rule: 0 none;      column-rule: 0 none;					   }
登录后复制

效果:

此时两列的宽度为了填补列与列之间的空间,他们两列的宽度自动变成了200px。大家还可以测试一下,当你把column-gap样式禁掉时,此时列只会显示一列,前面也说过,如果没有显示设置column-gap值时,其值大小会根据你所设置的font-size来定,因此容器无法容现两列的位置,从而第一列宽度扩展到容器大小一样。

接着来看第二个特殊效果,就是当列的宽度大于元素容器的宽度

.columnWidthBig2 {      -moz-column-width: 450px;      -webkit-column-width: 450px;      column-width: 450px;      -moz-column-gap: 0;      -webkit-column-gap: 0;      column-gap: 0;      -moz-column-rule: 0 none;       -webkit-column-rule: 0 none;      column-rule: 0 none;   }
登录后复制

效果:

上图效果告诉我们,虽然设置的列宽大于元素容器的宽度,但并不会让元素内容按列的宽度进行布局而撑破元素容器。他只会把列宽降到与元素容器宽度相等。

综合上述各种情形,为了分列能适应各种屏幕大小,最好设置一个确切的列宽或者列数,并相应指定相关属性,比如元素的width,column-gap,column-rule-width等,如果column-gap,column-rule-width使用默认值,在多列设计中最好明确写定好column-width和column-count的值。

上面分别介绍了使用column-count和column-width来分列布局,其实这两个属性可以合并在一起使用,这就是要介绍的有关于Multi-columns中的第三个属性columns。columns是把前面两个属性合并在一起使用,先来看其语法吧:

columns: column-width || column-count
登录后复制

取值说明:

column-width和column-count分别是指列的宽度和列数;

兼容的浏览器:

这种简写格式只有在webkit和opera下支持,为了兼容Firefox浏览器,个人建议拆分书写更为安全。

下面一起来看一个简写的例子吧:

.columns {     -webkit-columns: 2 180px;     columns: 2 180px;   }
登录后复制

效果:

上图上在Opera11+和Webkit下的效果,在Firefox5版本及其以下版本是没有任何效果的。这样一来,我个人认为如果需要兼容更多的浏览器,最好不要使用合并的columns功能,具体原因我想不需要我说大家都非常清楚。那么有关于 CSS3 Multi-columns 中的第一部分: 列数和列宽(column-count和column-width) 就介绍完了,下一节将继续其中的第二部分: 列的间距和分列样式 。感兴趣的朋友请继续观注。

如需转载烦请注明出处:W3CPLUS

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
了解HTML,CSS和JavaScript:初学者指南 了解HTML,CSS和JavaScript:初学者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML,CSS和JavaScript:Web开发人员的基本工具 HTML,CSS和JavaScript:Web开发人员的基本工具 Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML:结构,CSS:样式,JavaScript:行为 HTML:结构,CSS:样式,JavaScript:行为 Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来:网络设计的发展和趋势 HTML的未来:网络设计的发展和趋势 Apr 17, 2025 am 12:12 AM

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML,CSS和JavaScript的未来:网络开发趋势 HTML,CSS和JavaScript的未来:网络开发趋势 Apr 19, 2025 am 12:02 AM

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML与CSS vs. JavaScript:比较概述 HTML与CSS vs. JavaScript:比较概述 Apr 16, 2025 am 12:04 AM

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTML:建立网页的结构 HTML:建立网页的结构 Apr 14, 2025 am 12:14 AM

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

See all articles