搜尋
首頁web前端css教學深入探究css box-decoration-break屬性

這篇文章帶大家一起深入了解box-decoration-break屬性。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

深入探究css box-decoration-break屬性

這兩天接觸到一個很有趣的 CSS 屬性 -- box-decoration-break。下面就一起去一探究竟。

因為 MDN 上關於這個屬性,沒有中文文檔,所以一直在想一個合理貼切的中文翻譯。直譯:

  • box -- 盒,可以理解為元素盒模型
  • decoration -- 裝飾,理解為元素樣式
  • break -- 斷​​行,參考word-break ,理解為斷行時候的表現

那麼,這個屬性可以先理解為,元素在發生斷行時其樣式的表現形式。

MDN 上英文釋意為:The box-decoration-break CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages。大意是 box-decoration-break 屬性規定了一個元素片段在發生折行/斷行時,應該如何被渲染。

可選取值只有兩個:

{
    box-decoration-break: slice;   // 默认取值
    box-decoration-break: clone;
}

換行範例

#這個屬性通常作用於內聯元素。假設我們存在如下結構,並且給它添加一個邊框:

<span>ABCDEFGHIJKLMN</span>
span {
    border: 2px solid #999;
}

嗯,效果如下,平平無奇:

深入探究css box-decoration-break屬性

好,接下來就是break,我們把上面一行的文字斷行,樣式不變:

<span>ABCD <br>EFG <br> HI<br> JKLMN</span>

得到如下結果:

深入探究css box-decoration-break屬性

O,可以看到,文字換行的同時,邊框也隨之變化,頭尾兩行都有3 邊邊框,中間兩行只有上下兩邊邊框。如果將 4 行合起來,可以拼成圖一,這個是正常的展示效果。

接下來,我們加上本文的主角box-decoration-break: clone

span {
    border: 2px solid #999;
+   box-decoration-break: clone;
}

生效後,我們將會得到這樣的結果:

深入探究css box-decoration-break屬性

box-decoration-break: clone 使用小結

看到這裡,我們已經可以大概理解這個屬性的作用了:

使用了box-decoration-break: clone 的內聯元素,如果存在折行顯示,那麼每一行都會擁有原本單行的所有完整樣式

再看個例子加深下理解,存在如下結構,其使用了 box-decoration-break: clone  前後兩種效果:

<span >每一行 <br/>样式 <br/> 都 <br/> 保持<br/> 完整独立</span>

深入探究css box-decoration-break屬性

#CodePen Demo -- box-decoration-break

https://codepen.io/Chokcoco/pen/NJKoNq

#box-decoration-break: clone 生效樣式影響範圍

當然,使用了box-decoration-break: clone 的元素並非對每一個樣式都會生效,只會作用於下列樣式:

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

#box-decoration-break: clone 實際應用

<p></p>

接下來看看,有沒有什麼可靠的實際應用場景。

box-decoration-break: clone 實作文字選取效果將會有這樣的場景,我們希望對一個多行文字中的特定一段文字進行著重展示。這時候,我們可以透過

<p></p>

嵌套

,對

深入探究css box-decoration-break屬性 包裹的文字進行一些特定的展示。

譬如我們有這樣一段文案:<pre class='brush:php;toolbar:false;'>&lt;p&gt; The &lt;span&gt;box-decoration-break&lt;/span&gt; CSS property specifies how an element&amp;#39;s fragments should be rendered when broken across multiple lines, columns, or pages..Each box fragment is rendered independently with the &lt;span&gt;specified border, padding, and margin wrapping each fragment.&lt;/span&gt; The border-radius, border-image, and box-shadow are applied to each &lt;span&gt;fragment independently.&lt;/span&gt; &lt;/p&gt;</pre>其中,我們將需要強調的內容透過

標籤包裹起來,賦予特定樣式並且加上深入探究css box-decoration-break屬性box-decoration-break: clone

,這樣,無論強調文案是否換行,每一處的強調背景都是一致的:
p {
    font-size: 22px;
    line-height: 36px;
}

span {
    background-image: linear-gradient(135deg, deeppink, yellowgreen);
    color: #fff;
    padding: 2px 10px;
    border-radius: 50% 3em 50% 3em;
    box-decoration-break: clone;
}

得到如下效果:

<p></p>##########如果不加###box-decoration-break: clone### 呢?那如果有換行,效果會大打折扣:##################CodePen Demo -- text-decoration-break 文字選取效果######https:// codepen.io/Chokcoco/pen/rRaLqo###

box-decoration-break 每行文字带特定边框

又会有这样的场景,我们希望每一行文案都带有特定的边框样式,像这样:

深入探究css box-decoration-break屬性

怎么实现呢?也许可以每一行都是一个 <p></p>,每一行 <p></p> 设定上述样式。但是如果文本内容不确定,容器的宽度也不确定呢

这种场景,使用 box-decoration-break 也非常便捷。当然这里有个小技巧,正常而言, box-decoration-break: clone 只对 inline 元素生效,如果我们的文案像是这样包裹在 <p></p> 标签内:

<p>
The box-decoration-break CSS property specifies how an element&#39;s fragments should be rendered when broken across multiple lines, columns, or pages..Each box fragment is rendered independently with the specified border, padding, and margin wrapping each fragment. The border-radius, border-image, and box-shadow are applied to each fragment independently. 
</p>

要使 box-decoration-break: clone<p></p> 生效,可以通过设定 <p></p>display: inline 来实现。如此一来,要实现上述效果,我们只需要:

p {
    display: inline;
    box-decoration-break: clone;
    background:linear-gradient(110deg, deeppink 0%, deeppink 98%, transparent 98%, transparent 100%);
}

无论文本内容或者容器宽度如何变化,都能完美适配:

深入探究css box-decoration-break屬性

CodePen Demo -- box-decoration-break 每行文字带特定边框

https://codepen.io/Chokcoco/pen/gEbMGr?editors=1100

box-decoration-break 结合过渡动画

结合上面的内容,我们还可以考虑将 box-decoration-break 与过渡效果或者动画效果结合起来。

譬如,我们希望当我们 hover 文字内容的时候,一些重点需要展示的文字段落能够被强调展示,可能是这样:

深入探究css box-decoration-break屬性

CodePen Demo -- box-decoration-break 过渡动画

https://codepen.io/Chokcoco/pen/ZPGpmd

又或者是这样:

深入探究css box-decoration-break屬性

CodePen Demo -- box-decoration-break 结合过渡动画

https://codepen.io/Chokcoco/pen/ZPGpmd

你可以尝试点进 Demo ,然后去掉 box-decoration-break: clone ,会发现效果大打折扣。

兼容性

额,按照惯例兼容性应该都不太行。并且 MDN 也给出了这样的提示:

This is an experimental technology. Check the Browser compatibility table carefully before using this in production.

看看 Can I Use,其实还好,除了 IE 系列全军覆没,所以可以考虑应用在移动端。即便这个属性不兼容,降级展示对页面不会造成什么影响:

1深入探究css box-decoration-break屬性

另外,本文中,给出的代码都是 box-decoration-break: clone ,CodePen 自带了 autoprefixer 实际中可能需要写成:

{
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
}

最后

国内看到了大漠老师和张鑫旭大大都已经写过这个属性,大家可以对比着看看,加深理解:

好了,本文到此结束,希望对你有帮助 :)

更多编程相关知识,请访问:编程视频!!

以上是深入探究css box-decoration-break屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
@rules具有多少特異性,例如@keyframes和@media?@rules具有多少特異性,例如@keyframes和@media?Apr 18, 2025 am 11:34 AM

前幾天我得到了這個問題。我的第一個想法是:奇怪的問題!特異性是關於選擇者的,而在符號不是選擇器,那麼...無關緊要?

您可以嵌套@Media和@support查詢嗎?您可以嵌套@Media和@support查詢嗎?Apr 18, 2025 am 11:32 AM

是的,您可以,而且它並不重要。不需要CSS預處理器。它在常規CSS中起作用。

快速吞噬緩存破壞快速吞噬緩存破壞Apr 18, 2025 am 11:23 AM

您應該肯定會在CSS和JavaScript(以及圖像和字體以及其他內容)等資產上設置遙遠的高速緩存標頭。告訴瀏覽器

尋找可以監視CSS質量和復雜性的堆棧尋找可以監視CSS質量和復雜性的堆棧Apr 18, 2025 am 11:22 AM

許多開發人員寫瞭如何維護CSS代碼庫的文章,但並沒有很多關於如何測量該代碼庫質量的文章。當然,我們有

數據學家用於建議不執行值的值數據學家用於建議不執行值的值Apr 18, 2025 am 11:08 AM

您是否曾經有一種需要接受簡短而任意的文本的表格?喜歡名字或其他。那完全是用的。有很多

蘇黎世的最初會議蘇黎世的最初會議Apr 18, 2025 am 11:03 AM

我很高興能前往瑞士蘇黎世參加前界(Love the Name and URL!)。我以前從未去過瑞士,所以我很興奮

使用CloudFlare工人建立全棧無服務器應用程序使用CloudFlare工人建立全棧無服務器應用程序Apr 18, 2025 am 10:58 AM

我在軟件開發方面最喜歡的發展之一是無服務器的出現。作為一個傾向於陷入細節的開發人員

在NUXT應用程序中創建動態路由在NUXT應用程序中創建動態路由Apr 18, 2025 am 10:53 AM

在這篇文章中,我們將使用我構建和部署的電子商務商店演示來進行Netlify,以展示如何為傳入數據製作動態路線。這是一個公平的

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器