绚烂的文本换行,打破常规元素背景填充规则

简介: 在我们的日常开发中,为一个元素设置背景、边框、阴影、内外边距等,通常是会应用在整个元素上; 例如我为一个元素设置一个背景图,根据背景图的填充规则设定,这个图片可能会出现重复,或者拉伸,或者多余的地方留

在我们的日常开发中,为一个元素设置背景、边框、阴影、内外边距等,通常是会应用在整个元素上;

例如我为一个元素设置一个背景图,根据背景图的填充规则设定,这个图片可能会出现重复,或者拉伸,或者多余的地方留白等等;

现在我带来一个新的效果,将元素设置背景、边框、阴影、内外边距等应用在每一行文字上。

就是下面的效果:

QQ录屏20221110114419.gif

背景、边框、阴影、内外边距

我们先来为一个元素设置背景、边框、阴影、内外边距,先来看看效果:

<style>
    .container {
    
    
        background: linear-gradient(120deg, #0029FF 0%, #001270 100%),
        radial-gradient(100% 222% at 0% 100%, #CD04FF 0%, #FF004D 57%),
        linear-gradient(270deg, #F2096B 0%, #ED0B0B 100%),
        linear-gradient(300deg, #C478B3 0%, #EA2856 100%),
        radial-gradient(90% 110% at 100% 100%, #96A300 45%, #875901 100%),
        linear-gradient(6.54deg, #20ADFD 7%, #1700A4 50%);
        background-blend-mode: exclusion, color-dodge, color-burn, color-burn, color-dodge, normal;
        border: 1px solid #000;
        box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
        padding: 20px;
        margin: 20px;
        color: #fff;
    }
</style>

<div class="container">
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
    这个里面随便来点内容,多来一点;
</div>

image.png

这个效果看起来真不错呀,但是这个效果是应用在整个元素上的,如果我想再追求一下效果,我要将这个效果应用在每一行文字上;

可能有小伙伴会想到将每一行文本单独放在一个元素里,然后再设置背景、边框、阴影、内外边距等;

这样做的确可以实现,但是这样做的话,这个单独的元素里面的内容也可能会换行呀,还得用上javascript来控制;

这里我推出一个新的方法,就是使用box-decoration-break属性,这个属性可以将元素的背景、边框、阴影、内外边距等应用在每一行文字上;

看效果

还是上面的代码,我们只需要将box-decoration-break属性设置为clone即可;

.container {
   
   
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    display: inline;
}

注意:因为这个属性只能在displayinline的元素上使用,所以我们需要将display设置为inline
同时,上面加上兼容性前缀并不是用来兼容,而是加了和不加的效果是不一样的,很神奇的设定,建议大家自行测试一下;

效果如下:

image.png

虽然这个效果看起来不咋地,因为都重叠到一起了,为啥会重叠到一起?接下来就来详解一下这个属性;

box-decoration-break

box-decoration-break属性是用来控制元素的背景、边框、阴影、内外边距等是否应用在每一行文字上;

看这段描述,再加上我们设置的样式,我们设置的每一个样式都应用在这个属性上面了。

来看看这个属性的取值:

  • slice:将元素的背景、边框、阴影、内外边距等应用在整个元素上;
  • clone:将元素的背景、边框、阴影、内外边距等应用在每一行文字上;

这个属性的取值只有两个,这两个有什么区别呢?

我们直接看效果,上面贴的图就是clone的,现在贴的是slice

image.png

  • slice的效果是将背景、边框、阴影、内外边距等应用在整个元素上,同时会将文字分割成多行,设置的样式也是分割处理;
  • clone的效果是将背景、边框、阴影、内外边距等应用在每一行文字上,每一行的文字样式都是相同的。

现在效果也看了,用法也知道了,那就再来看看约束吧。

box-decoration-break 的约束

上面提到了两次,这个属性只能在displayinline的元素上使用,这是第三遍提示,别设置了没用来找我。

它的作用范围,也就是影响的属性,有以下几个:

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

除了这些属性,其他的属性都不受影响。

除了上面这两点,还有就是兼容性前缀的问题,这个问题我在上面已经提到了,兼容性前缀不是为了兼容,而是为了让效果更好,这也算是兼容性的一种吧。

box-decoration-break 的兼容性

上面正好提到了兼容性,那就来看看兼容性吧:

image.png

简直是一团糟,但是咱们自己玩玩有什么关系呢?也不妨碍我现在了解,未来用呀。

来点效果

上面我们已经知道了这个属性的作用,那现在我们就用它来实现一下效果吧:

代码片段

这上面的效果除了使用了box-decoration-break属性,还使用了background-clip属性,这个属性是用来控制背景的显示范围的,这个属性的取值有以下几个:

  • border-box:背景将延伸到边框下面;
  • padding-box:背景将延伸到内边距下面;
  • content-box:背景将延伸到内容下面;
  • text:背景将延伸到文字下面。

这个属性我看有好多博主都写了,我就不嫌丑了。

目录
相关文章
|
存储 数据可视化 安全
一张图的七十二变——阿里云OSS图片处理实践
      小张是某视频网站的新入职的UED,日常工作就是创作各式各样的海报banner。踌躇满志的小张,上了三天班就蔫了。因为他在完成一张图的创作后,还需要考虑:• 同一张图会以不同的形式应用于网站各处:有时候需裁剪成不同形状,有时需要加水印,有时需转换格式....• 为了风格统一,不同的图需要保持样式统一:不同图片排列组成成一组,每组图片风格(
2828 0
|
11月前
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
293 19
|
弹性计算
为什么我在幻兽帕鲁里走路会回弹很卡顿
你可以尝试执行一段脚本,去掉游戏启动参数里的 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS 来尝试解决人物回弹的问题。
5524 0
|
机器学习/深度学习 数据采集 人工智能
【AI在金融科技中的应用】详细介绍人工智能在金融分析、风险管理、智能投顾等方面的最新应用和发展趋势
人工智能(AI)在金融领域的应用日益广泛,对金融分析、风险管理和智能投顾等方面产生了深远影响。以下是这些领域的最新应用和发展趋势的详细介绍
1690 1
|
开发者
哨兵2号分幅规则介绍及网格矢量下载
本文介绍哨兵2号(Sentinel-2)遥感影像数据的空间分幅规则,并提供其格网参考系(Military Grid Reference System,MGRS)的.kml格式文件、.shp格式矢量文件的下载方法~
1013 1
哨兵2号分幅规则介绍及网格矢量下载
|
运维 jenkins Linux
【Jenkins稳定运维】服务器频繁崩溃?资深管理员的应对策略
本文分享了作者作为管理员在面对服务器频繁崩溃时的应对策略,包括使用Shell脚本优化运维工作、学习Jenkins Pipeline插件以及一些运维技能扩展,强调了在运维工作中不断学习和实践的重要性。
185 0
【Jenkins稳定运维】服务器频繁崩溃?资深管理员的应对策略
|
存储 Kubernetes 调度
Kubernetes 是什么?
Kubernetes 是什么?
288 1
|
编解码 监控 API
惊艳登场!揭秘如何在Android平台上轻松玩转GB28181标准,实现多视频通道接入的超实用指南!
【8月更文挑战第14天】GB28181是公共安全视频监控联网的技术标准。本文介绍如何在Android平台上实现该标准下的多视频通道接入。首先准备开发环境,接着引入GB28181 SDK依赖并初始化SDK。实现设备注册与登录后,通过指定不同通道号请求多路视频流。最后,处理接收到的数据并显示给用户。此过程涉及视频解码,需确保应用稳定及良好的用户体验。
578 0
|
弹性计算 Kubernetes 容器
k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod
基于云ECS搭建的k8s,通常网络问题需要从网络配置,路由表、iptables 规则 以及FDB配置去判断问题,另外需要注意的是阿里云有一层企业安全组配置会对网络有影响,遇到配置问题都正常需要从安全组的角度去考虑了
8425 0
k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod
|
Kubernetes 测试技术 Linux
ChaosBlade安装问题之安装双架构如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集: