热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

css3多列布局(columnz),多列布局相关属性

Css3多列布局(columns)为什么会出现多列布局?当一行文字太长时,读者读起来就比较费劲,有可能读错行或读串行;人们的视点从文本的一端移到另一端、然后换到下一行的行首,如果眼球
Css3多列布局(columns)

为什么会出现多列布局?

当一行文字太长时,读者读起来就比较费劲,有可能读错行或读串行;人们的视点从文本的一端移到另一端、然后换到下一行的行首,如果眼球移动浮动过大,他们的注意力就会减退,容易读不下去。所以,为了最大效率的使用大屏幕显示器,页面设计中需要限制文本的宽度,让文本按多列呈现,就像报纸上的新闻排版一样。

浏览器支持状态:

        Internet Explorer 10 和 Opera 支持多列属性。

        Firefox 需要前缀 -moz-。

        Chrome 和 Safari 需要前缀 -webkit-。

        注释:Internet Explorer 9 以及更早的版本不支持多列属性。

用法

不管想让一段文本呈多少列显示,你需要的只是两个属性:column-count 和 column-width(每一列的宽度)。

column-count: | auto·

  • :用整数值来定义列数。不允许负值
  • auto:根据column-width自定分配宽度

column-width: | auto(宽度值)

  • :用整数值来定义列数。不允许负值
  • auto:当只有column-width时,auto为其父元素宽度,当使用columns属性时,column-width属性值为auto时,根据column-count划分其每列宽度。

当给列只设置column-count时,浏览器会将文本分为它所设置的列的个数,宽度由浏览器自定义。column-width属性控制列的宽度。如果你没有提供column-count属性值,那么,浏览器就是自主决定将文本分成合适的列数。但是,column-width不可为0和负值;当column-width的值为auto或column-width的值大于元素宽度width一半时,没有分列效果(更准确地,由其他属性来决定)


简写方式

Columns属性

columns:[ column-width ] || [ column-count ]

如:columns:12em;   或columns:4; 等可以代替column-count 和 column-width。
若同时声明时,可以写为   columns:12 8em;  前后顺序无影响

列高度的平衡

CSS3规范里描述的是,各列的高度是均衡的,浏览器会自动调整每列里填充多少文本、均分文本,来使各列的高度保持均衡一致。

然而,有时候,我们需要设定列的最大高度,这个时候,文本内容会从第一列开始填充,然后第二列,第三列,也许以后的列会填不满,也许会溢出。所以,当对多列布局设定了height或max-height属性值后,列会伸长到指定高度——无论内容有多少,够不够或超不超。

列之间的缝隙间隔宽度

两列之间会有缝隙间隔。缺省情况下这个间隔宽度是1em,但如果你使用column-gap属性,就会修改这个缺省的宽度值。

column-gap

设置或检索对象的列与列之间的间隙·

column-gap:  | normal

  • :用长度值来定义列与列之间的间隙。不允许负值
  • normal:与font-size大小相同。假设该对象的font-size为16px,则normal值为16px,类推。

兼容性

为了保证浏览器最大的兼容性,我们在使用多列布局属性时,最好添加浏览器引擎前缀,最基本的要加上三种:谷歌浏览器的-webkit-,火狐浏览器的-moz-,IE浏览器的-ms-,最后,别忘了不带前缀的写法。

column-rule   复合属性

设置或检索对象的列与列之间的边框。复合属性。

综合:column-rule:[ column-rule-width ] || [column-rule-style ] || [ column-rule-color ]

    [ column-rule-width ]:设置或检索对象的列与列之间的边框厚度。

    [ column-rule-style ]:设置或检索对象的列与列之间的边框样式。

    [ column-rule-color ]:设置或检索对象的列与列之间的边框颜色。

 

设置或检索对象的列与列之间的边框厚度。

1.column-rule-width: | thin | medium | thick

    :用长度值来定义边框的厚度。不允许负值

    medium:定义默认厚度的边框。

    thin:定义比默认厚度细的边框。

    thick:定义比默认厚度粗的边框。

设置或检索对象的列与列之间的边框样式。

2.column-rule-style:none | hidden | dotted | dashed | solid |double | groove | ridge | inset | outset

    none:无轮廓。column-rule-color与column-rule-width将被忽略

    hidden:隐藏边框。

    dotted:点状轮廓。

    dashed:虚线轮廓。

    solid:实线轮廓

    double:双线轮廓。两条单线与其间隔的和等于指定的column-rule-width值

    groove:3D凹槽轮廓。

    ridge:3D凸槽轮廓。

    inset:3D凹边轮廓。

    outset:3D凸边轮廓。

3.column-rule-color:


跨列

设置或检索对象元素是否横跨所有列。

column-span:none | all

    none:不跨列

    all:横跨所有列

横跨一列或不跨列的例子:(缩得比较小,主要看样子)

横跨多列的例子:

在代码部分,你需要将要跨列的内容写在需跨列的元素之内,eg


在列布局中,有时由于内容不足,多列中的最后列往往没有足够内容填充,这时要实现所有列都具有相同高度的效果,需要使用列填充属性column-fill设置或检索对象所有列的高度是否统一。规定如何对列进行填充,所有主流浏览器都不支持

column-fill:auto | balance

  • auto列高度自适应内容
  • balance:所有列的高度以其中最高的一列统一

设置或检索对象之前是否断行

.column{
                 column-width:auto;
                -webkit-column-width:auto;
                column-width:200px;
                -moz-column-width:200px;
                -webkit-column-width:200px;
                -o-column-width:200px;
                -ms-column-width:200px;
            
                /*按照列的个数的划分*/            
                column-count:4;
                -webkit-column-count:4;
                -moz-column-count:4;
                -ms-column-count:4;
                -o-column-count:4;
                        
            /*按照列和宽固定划分*/            
                columns:200px 4;
                -webkit-columns:200px 4;
                -moz-columns:200px 4;
                -ms-columns:200px 4;
                -o-columns:200px 4;
                
                
                /*列之间的分隔线*/
                -moz-column-rule:3px outset #ff0000;    /* Firefox */
                -webkit-column-rule:3px outset #ff0000;    /* Safari and Chrome */
                -o-column-rule:3px outset #ff0000;
                -ms-column-rule:3px outset #ff0000;
                column-rule:3px outset #ff0000;
                
                column-gap:100px;
                -webkit-column-gap:100px;
                -moz-column-gap:100px;
                -ms-column-gap:100px;
                -o-column-gap:100px;
                
                -moz-column-fill:balance;
            }
            
            /*跨列*/
            h1{
                /*横跨所有列*/
                column-span:all;
                -webkit-column-span:all;
                /*-ms-column-span:all;
                -moz-column-span:all;*/
                
                /*横跨一列*/
                /*column-span:1;
                -webkit-column-span:1;
                -ms-column-span:1;
                -moz-column-span:1;*/
            }

html部分:

            

这是人民网北京2月24日电 (记者 刘阳)国家发展改革委近日发出通知,

            人民网北京2月24日电 (记者 刘阳)国家发展改革委近日发出通知,决定自2月25日零时起将汽、柴油价格每吨分别提高300元和290元,折算到90号汽油和0号柴油(全国平均)每升零售价格分别提高0.22元和0.25元。此次国内成品油价格调整幅度,是按照现行国内成品油价格形成机制,根据国际市场油价变化情况确定的。去年11月16日国内成品油价格调整以来,受市场预期欧美经济复苏前景向好以及中东局势持续动荡等因素影响,国际市场原油价格先抑后扬,2月上旬WTI和布伦特原油期货价格再次回升至每桶95美元和115美元以上。虽然近两日价格有所回落,但国内油价挂钩的国际市场三种原油连续22个工作日移动平均价格上涨幅度已超过4%,达到国内成品油价格调整的边界条件。通知指出,这次成品油调价后,国家将按照已建立的补贴机制,继续对种粮农民、渔业(含远洋渔业)、林业、城市公交、农村道路客运(含岛际和农村水路客运)等给予补贴。同时,为保证市场物价基本稳定,防止连锁涨价,对与居民生活密切相关的铁路客运、城市公交、农村道路客运(含岛际和农村水路客运)价格不作调整。通知要求,中石油、中石化、中海油三大公司要组织好成品油生产和调运,保持合理库存,加强综合协调和应急调度,保障成品油供应。各级价格主管部门要加大市场监督检查力度,依法查处不执行国家价格政策,以及囤积居奇、造谣惑众、合谋涨价、搭车涨价等违法行为,维护正常市场秩序。  

下面三个属性可能参考了这份博客详情请点击链接。

column-break-before:auto | always | avoid | left | right | page| column | avoid-page | avoid-column

  • auto:既不强迫也不禁止在元素之前断行并产生新列
  • always:总是在元素之前断行并产生新列(不管上一列有没有填满,都另起一列)
  • avoid:避免在元素之前断行并产生新列

 

设置或检索对象之后是否断行

column-break-after:auto| always | avoid | left | right | page | column | avoid-page | avoid-column·

  • auto:既不强迫也不禁止在元素之后断行并产生新列
  • always:总是在元素之后断行并产生新列(不管本列有没有填满,后面新建一列)
  • avoid:避免在元素之后断行并产生新列

设置或检索对象内部是否断行。

column-break-inside:auto| avoid | avoid-page | avoid-column

  • auto:既不强迫也不禁止在元素内部断行并产生新列
  • avoid:避免在元素内部断行并产生新列

欢迎补充,谢谢!


推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 为了实现跨浏览器兼容的禁用文本选择功能,可以通过在全局CSS样式中定义一个特定的类来禁止用户选中文本。具体做法是在全局样式表中添加一个名为 `.no-select` 的类,并在需要禁用文本选择的元素上应用该类。这样可以确保在不同浏览器中都能达到一致的效果。此外,还可以结合JavaScript进一步增强用户体验,例如在某些交互场景下动态启用或禁用文本选择功能。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • CSS中的pointer-events属性详解与应用
    在CSS中,`pointer-events`属性是一个非常实用但常被忽视的功能。它主要用于控制元素是否响应鼠标事件。当一个元素覆盖在其他元素之上时,通过设置`pointer-events`属性,可以决定该元素是否能够接收鼠标点击、悬停等交互操作,从而实现更灵活的用户界面设计。例如,将`pointer-events`设置为`none`可以使元素透明地传递鼠标事件,方便实现复杂的叠加效果和交互逻辑。 ... [详细]
  • 软件测试工程师必备:全面解析Web应用的浏览器兼容性测试方法与工具
    随着市场上浏览器种类的不断增多,特别是在平板和移动设备上的普及,确保网站在各种浏览器中都能正常运行变得尤为重要。本文将深入探讨Web应用的浏览器兼容性测试方法与工具,帮助软件测试工程师全面掌握这一关键技能,以提高应用的用户体验和可靠性。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
author-avatar
虚线老母阳
推荐一首歌《春风十里》,我的个人订阅号:虚线老母阳
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有