惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
aimingoo的专栏
aimingoo的专栏
腾讯CDC
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
F
Fortinet All Blogs
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
博客园_首页
B
Blog RSS Feed
D
Docker
M
MIT News - Artificial intelligence
爱范儿
爱范儿
I
InfoQ

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
CSS/CSS3 box-decoration-break属性简介 « 张鑫旭-鑫空间-鑫...
张鑫旭,zhangxinxu · 2019-01-05 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=8346
本文可全文转载,个人网站无需授权,只要保留原作者、出处以及文中链接即可,任何网站均可摘要聚合,商用请联系授权。

CSS box-decoration-break属性

一、box-decoration-break属性简介

CSS box-decoration-break属性可以指定元素片段在跨行、跨列或跨页(如打印)时候的样式渲染表现。

默认情况下,元素的跨行或跨列渲染都是裁剪分割,各得一部分。

举个例子,如下HTML和CSS:

<div class="box">
  <span class="text">专门弄了个社交专用的微信号:zhangxinxu-job</span>
</div>
.box { width: 200px; color: #fff; }
.text { border-radius: 30px; background-color: #cd0000; }

结果如下(实时渲染):

专门弄了个社交专用的微信号:zhangxinxu-job

可以看到换行的位置是直直切割,圆角在最开始和最后面(如下截图箭头标记):

圆角首尾各一个

有些丑!

设计师看不下去了,拿着40米的大刀走过来,说道:“哎呀,王哥,上面一行和下面一行两端都是圆角显然要更好看,可不可以实现啊?”

这个时候就体现出CSS基础知识的重要性了。

是可以实现的,就是借助CSS box-decoration-break属性。

CSS改动如下:

.box { width: 200px; color: #fff; }
.text { 
  border-radius: 30px; background-color: #cd0000;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

结果如下(实时渲染):

专门弄了个社交专用的微信号:zhangxinxu-job

可以看到断开的两个内联盒子两端都是圆角:

上下内联盒子左右都是圆角

二、box-decoration-break语法

在CSS布局中,总会存在元素box盒子断开的情况(page/column/region/line),box-decoration-break可以决定断开时候的渲染表现。

当然,只能影响部分CSS的渲染,都有哪些呢?

  • background
  • border
  • border-image
  • box-shadow
  • border-radius
  • clip-path
  • margin
  • padding

等。

box-decoration-break语法如下:

box-decoration-break: slice;  /* 默认值 */
box-decoration-break: clone;

其中

slice
slice是切片,分割的意思。默认值。表示各个盒子断开的部分如同切割开一般。
clone
clone是克隆,独立的意思。表示断开的各个盒子样式独自渲染。

三、跨列渲染demo案例

下面看一个跨列的样式案例。

如下HTML:

<div class="box">
    <p class="text">2018年...</p>
</div>

我们只要column布局使两列显示,同时设置p元素有边框:

.box {
    columns: 2;
}
.text {
    border: 5px solid #cd0000;
}

此时如下图,布局break处无边框,表现为slice。

columns布局边框断开

此时,我们设置box-decoration-break属性值为clone,结果会怎么样呢?在Firefox浏览器下如下:

两列分别边框截图

左右两栏内容分别呈现红色边框,符合我们的预期。

您可以狠狠地点击这里:box-decoration-break跨列布局渲染demo

//zxx: 经过测试,在Chrome浏览器下并没有表现出预期的效果,应该是渲染上的bug。把p标签改成span这种内联标签倒是有预期的效果,可惜按钮toggle样式的时候并不会重渲染,相信以后会修复这个问题的。

理论上CSS Regions布局也能有类似渲染,只是由于CSS Regions布局各大浏览器已经放弃了支持,本文不展示相关案例。

四、实际应用案例

借助box-decoration-break属性,我们可以实现不规则的内联文本整体渐变效果。

效果如下截图:

内联文本的渐变效果

您可以狠狠地点击这里:box-decoration-break文本不规则渐变demo

其中,关键CSS就是设置内联元素的box-decoration-breakclone,如下示意:

.text {
    padding: 5px;
    background-image: linear-gradient(to right, blue, red 200px);
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}

而默认状态下,内联元素换行渐变效果是这样的,上下行累加为一个渐变,而不是每一行都是渐变:

默认渐变效果

五、兼容性、结语

CSS box-decoration-break属性兼容性如下图:

box-decoration-break兼容性截图

在移动端页面,包括小程序中可以放心使用。Android,Chrome等浏览器下还需要-webkit-私有前缀,Firefox浏览器完全支持。

没有结语。

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=8346

(本篇完)