使用CSS3实现多列布局与多背景的技巧


Posted in HTML / CSS onFebruary 29, 2016

多列布局
CSS多列布局继承自块级布局模式,允许简单地定义多列文本。 一行太长的文字读起来很麻烦;当人眼从一行过长的文字末端移动到下一行开始处,就容易弄错到底该读哪一行。因此,为了最优化使用大的显示屏幕,设计者应该限制文字段落的宽度而并排排列,就像报纸一样。

糟糕的是如果不使用CSS和HTML在特定的位置强制换行,或者严格限制文本中允许的标记,或者夸张地使用脚本的话,这是不可能实现的。该限制通过从传统的块级布局模块中延伸出来的新的CSS属性得以解决。

列计数器和宽度

有两个CSS属性控制是否实现多列布局和显示多少列: column-count and column-width。

属性 column-count 设置特定数量的列数。例如,

CSS Code复制内容到剪贴板
  1. <div style="column-count:2;">Lorem ipsum dolor sit amet, consectetur adipisicing elit,    
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,    
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.    
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat    
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    
  6. qui officia deserunt mollit anim id est laborum</div>   

会以两列的方式显示内容:(如果你正使用支持多列布局的浏览器的话):

属性 column-width 设置期望的最小列宽。如果 column-count 没有设置,那么浏览器就会以合适的宽度尽量显示更多的列。

CSS Code复制内容到剪贴板
  1. <div style="column-width:20em;">Lorem ipsum dolor sit amet, consectetur adipisicing elit,   
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,   
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.   
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat   
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa   
  6. qui officia deserunt mollit anim id est laborum</div>   

变成:
使用CSS3实现多列布局与多背景的技巧

在多列块中,内容会自动从一列换到另一列中。所有 HTML, CSS 和 DOM 功能在列之间都得到支持, 比如编辑和打印。

columns 属性简写

多数时候,网页设计者都会使用 column-count 和 column-width 的一个. 由于它们的值没有重叠,一般使用简写属性 columns。例如,

CSS声明 column-width:12em 可替换成:

CSS Code复制内容到剪贴板
  1. <div style="columns:12em">Lorem ipsum dolor sit amet, consectetur adipisicing elit,    
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,    
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.    
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat    
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    
  6. qui officia deserunt mollit anim id est laborum</div>  

使用CSS3实现多列布局与多背景的技巧

CSS声明 column-count:4 可替换成:

CSS Code复制内容到剪贴板
  1. <div style="columns:4">Lorem ipsum dolor sit amet, consectetur adipisicing elit,    
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,    
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.    
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat    
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    
  6. qui officia deserunt mollit anim id est laborum</div>  

使用CSS3实现多列布局与多背景的技巧

CSS声明 column-width:8em 和 column-count:12 可替换成:

CSS Code复制内容到剪贴板
  1. <div style="columns:12 8em">Lorem ipsum dolor sit amet, consectetur adipisicing elit,    
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,    
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.    
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat    
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    
  6. qui officia deserunt mollit anim id est laborum</div>  

使用CSS3实现多列布局与多背景的技巧

高度平衡

CSS3多列规范需要列高平衡:即,浏览器自动设置最大列高,因此每列中的内容高度大致相同。Firefox浏览器是这样的。

然而,一些情况下,明确设置最大列高也是有用的,这样内容从第一列开始,尽可能多的生成列,甚至会溢出右边沿。因此,如果通过设置height 或 max-height 属性来限制列高,在生成新的一列之前每一列都会仅允许增加到这个高度。该模型对布局来说也更高效。

列间隙

列之间有缝隙。建议值为1em。该值可通过设置多列模块的 column-gap 属性来修改:

CSS Code复制内容到剪贴板
  1. <div style="column-width:20em; column-gap:2em;">Lorem ipsum dolor sit amet, consectetur adipisicing elit,    
  2. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,    
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.    
  4. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat    
  5. nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    
  6. qui officia deserunt mollit anim id est laborum</div>  

使用CSS3实现多列布局与多背景的技巧

优雅降级
多列属性会被不支持多列模型的浏览器忽略。因此,为这些浏览器创建单列结构而为支持多列的浏览器创建多列结构相对来说比较简单。

注意不是所有的浏览器都支持不带前缀的属性名。为了在大多数现代浏览器中应用这种特性,每个属性必须写三次: 一次用 -moz 前缀,一次用 -webkit 前缀,一次不使用前缀

多背景
通过使用 CSS3,你可以向元素应用多个背景。这些背景相互堆叠,第一个背景放在最上面,最后一个背景放在最下面。 仅最后一个背景允许拥有背景色。

指定多个背景很简单:

CSS Code复制内容到剪贴板
  1. .myclass {   
  2.   background: background1, background 2, ..., backgroundN;   
  3. }  

你既可以使用简写属性 background 也可以使用除 background-color 外的独立属性。即,,下面的属性可以用属性列表指定, 每个背景一个: background,background-attachment,background-clip, background-image,background-origin,background-position, background-repeat, background-size。

示例
该例中,三个背景进行堆叠:火狐标志,一个线性渐变, 和一张带有花的图片:

CSS Code复制内容到剪贴板
  1. .multi_bg_example {   
  2.   backgroundurl(http://demos.hacks.mozilla.org/openweb/resources/images/logos/firefox-48.png),   
  3.         linear-gradient(to rightright, rgba(255, 255, 255, 0),  rgba(255, 255, 255, 1)),   
  4.         url(http://demos.hacks.mozilla.org/openweb/resources/images/patterns/flowers-pattern.jpg);   
  5.   background-repeatno-repeatno-repeatrepeat;   
  6.   background-positionbottombottom rightrightleftrightright;   
  7. }  

结果
使用CSS3实现多列布局与多背景的技巧

HTML / CSS 相关文章推荐
css3教程之倾斜页面
Jan 27 HTML / CSS
CSS3中各种颜色属性的使用教程
May 17 HTML / CSS
CSS3标注引用的出处和来源的方法
Feb 25 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
Apr 24 HTML / CSS
谈一谈HTML5本地存储技术
Mar 02 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
五分钟学会HTML5的WebSocket协议
Nov 22 HTML / CSS
html5给汉字加拼音加进度条的实现代码
Apr 07 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
Jan 27 HTML / CSS
纯html+css实现打字效果
Aug 02 HTML / CSS
详解CSS3浏览器兼容
Dec 24 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
Feb 29 #HTML / CSS
CSS3媒体查询Media Queries基础学习教程
Feb 29 #HTML / CSS
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
Feb 27 #HTML / CSS
CSS3中currentColor关键字的妙用
Feb 27 #HTML / CSS
魔幻般冒泡背景的CSS3按钮动画
Feb 27 #HTML / CSS
CSS3 text-shadow实现文字阴影效果
Feb 24 #HTML / CSS
非常震撼的纯CSS3人物行走动画
Feb 24 #HTML / CSS
You might like
PHP字符串处理的10个简单方法
2010/06/30 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python3标准库总结
2019/02/19 Python
python文件写入write()的操作
2019/05/14 Python
Python2与Python3的区别点整理
2019/12/12 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
几个常见的软件测试问题
2016/09/07 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
论文诚信承诺书
2014/05/23 职场文书
幼儿教师求职信
2014/05/24 职场文书
课外科技活动总结
2014/08/27 职场文书
2014年审计工作总结
2014/11/17 职场文书
北京导游词
2015/02/12 职场文书
毕业证明模板
2015/06/19 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python