使用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发光搜索表单分享
Apr 11 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
Nov 06 HTML / CSS
详解Html5原生拖拽操作
Jan 12 HTML / CSS
HTML5 File API改善网页上传功能
Aug 19 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
Apr 24 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
May 27 HTML / CSS
html5本地存储 localStorage操作使用详解
Sep 20 HTML / CSS
使用phonegap查找联系人的实现方法
Mar 31 HTML / CSS
html5简介及新增功能介绍
May 18 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
Sep 23 HTML / CSS
HTML5逐步分析实现拖放功能的方法
Sep 30 HTML / CSS
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
Apr 29 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中copy on write写时复制机制介绍
2014/05/13 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
运动会口号大全
2014/06/07 职场文书
2014年部门工作总结
2014/11/12 职场文书
北京颐和园导游词
2015/01/30 职场文书
创业计划书之甜品店
2019/09/18 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS