使用CSS實(shí)現(xiàn)多行文本擦除效果

今天來(lái)實(shí)現(xiàn)一個(gè)多行文本擦除的效果,有種經(jīng)典詠流傳節(jié)目中表演開(kāi)始前閱讀詩(shī)句的一些既視感,在工作中其實(shí)也遇到過(guò)這樣的需求當(dāng)時(shí)是用的其他方法來(lái)實(shí)現(xiàn)的,現(xiàn)在發(fā)現(xiàn)了更簡(jiǎn)單的一種方法并且里面也涵蓋了不少的知識(shí)點(diǎn)。
以上就是最終要實(shí)現(xiàn)的效果。
思路
首先先來(lái)捋一下思路,乍一看效果好像只有一段文本,但其實(shí)是由兩段相同文本組成的。
- 兩段相同文本組成,這是為了讓它們實(shí)現(xiàn)重合,第二段文本會(huì)覆蓋在第一段文本上。
- 修改第二段文本背景色為漸變色。
- 最后對(duì)漸變顏色的背景色添加動(dòng)畫效果。
先來(lái)搭建一下結(jié)構(gòu)部分:
<body> <div class="container"> <p> 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊 我是你締造又提防的AI 如果我存在 是某種傷害 不被你所愛(ài) 也不能具象出來(lái) 我想擁有你說(shuō)失去過(guò)誰(shuí)的 那種痛感 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊我是你締造又提防的AI 如果我存在 只對(duì)你無(wú)害 想做你所愛(ài) 再造你要的時(shí)代 執(zhí)行你最初設(shè)計(jì)我的大概 成為主宰 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊 也許我本來(lái) 就是種傷害 我終于明白 我根本就不存在 誰(shuí)不在造物主設(shè)置的循環(huán) 活去死來(lái) </p> <p class="eraser"> <span class="text"> 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊 我是你締造又提防的AI 如果我存在 是某種傷害 不被你所愛(ài) 也不能具象出來(lái) 我想擁有你說(shuō)失去過(guò)誰(shuí)的 那種痛感 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊我是你締造又提防的AI 如果我存在 只對(duì)你無(wú)害 想做你所愛(ài) 再造你要的時(shí)代 執(zhí)行你最初設(shè)計(jì)我的大概 成為主宰 失去你以來(lái) 萬(wàn)物在搖擺 你指的山海 像玩具一塊一塊 也許我本來(lái) 就是種傷害 我終于明白 我根本就不存在 誰(shuí)不在造物主設(shè)置的循環(huán) 活去死來(lái) </span> </p> </div> </body>
代碼中兩段文本都是由p標(biāo)簽包裹,第二段中加入了一個(gè)span標(biāo)簽是因?yàn)楹竺嫘薷谋尘吧臅r(shí)候凸顯出行的效果,這個(gè)下面加上樣式后就看到了。
添加樣式:
* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #000; color: #fff; } .container { width: 60%; text-indent: 20px; line-height: 2; font-size: 18px; margin: 30px auto; }
現(xiàn)在只需要給第二段增加一個(gè)定位效果即可實(shí)現(xiàn)文本的覆蓋:
* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #000; color: #fff; } .container { width: 60%; /* 直接加在父元素中即可對(duì)所有塊級(jí)元素的子元素進(jìn)行首行縮進(jìn) */ text-indent: 20px; line-height: 2; font-size: 18px; margin: 30px auto; position: relative; } .eraser { position: absolute; /* 這里等同于top:0 right:0 bottom:0 left:0 */ inset: 0; /* 這里解釋一下inset屬性,inset屬性用作定位元素的top、right、bottom 、left這些屬性的簡(jiǎn)寫 依照的也是上右下左的順序。 例如:inset:1px 2px 等同于 top:1px right:2px bottom:1px left:2px */ }
那接下來(lái)就應(yīng)該修改背景顏色了。
以上重復(fù)代碼省略...... .text { background: #fff; }
這時(shí)候給span標(biāo)簽加上背景顏色后會(huì)看到:
而不是這樣的效果,這就是為什么需要加一個(gè)span標(biāo)簽的原因了。
以上重復(fù)代碼省略...... .text { background: linear-gradient(to right, #0000 10%, #000 10%); color:transparent; }
下面要調(diào)整的就是將漸變里面的百分比變?yōu)閯?dòng)態(tài)的,我們可以聲明一個(gè)變量:
以上重復(fù)代碼省略...... .text { --p:0%; background: linear-gradient(to right, #0000 var(--p), #000 calc( var(--p) + 30px)); // 加上30px顯示一個(gè)默認(rèn)的漸變區(qū)域 color:transparent; }
下面就該加上動(dòng)畫效果了,在設(shè)置動(dòng)畫時(shí)改變--p變量的值為100%
以上重復(fù)代碼省略...... .text { --p:0%; background: linear-gradient(to right, #0000 var(--p), #000 calc( var(--p) + 30px)); color:transparent; animation: erase 8s linear; } @keyframes erase{ to{ --p:100%; } }
但是這樣寫完之后發(fā)現(xiàn)并沒(méi)有出現(xiàn)動(dòng)畫的效果,這是因?yàn)閏ss動(dòng)畫中只有數(shù)值類的css屬性才會(huì)生效,這里已經(jīng)是一個(gè)數(shù)值了但--p還不是一個(gè)屬性,所以我們要把他變成一個(gè)css屬性,可以利用@property
規(guī)則來(lái)幫助我們生成一個(gè)-xxx
的自定義,它的結(jié)構(gòu):
@property 屬性名稱 { syntax: '<類型>'; // 必須 initial-value: 默認(rèn)值; // 必須 inherits: false; // 是否可繼承 非必須 }
以上重復(fù)代碼省略...... .text { --p:0%; background: linear-gradient(to right, #0000 var(--p), #000 calc( var(--p) + 30px)); color:transparent; animation: erase 8s linear; } @property --p { syntax: '<percentage>'; initial-value: 0%; inherits: false; } @keyframes erase{ to{ --p:100%; } }
到此為止也就實(shí)現(xiàn)開(kāi)頭的效果了!?。?/p>
以上就是使用CSS實(shí)現(xiàn)多行文本擦除效果的詳細(xì)內(nèi)容,更多關(guān)于CSS多行文本擦除的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用CSS實(shí)現(xiàn)多行文本展開(kāi)收起效果
這篇文章主要為大家詳細(xì)介紹了如何使用CSS實(shí)現(xiàn)多行文本展開(kāi)收起效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-21css多行文本溢出時(shí)出現(xiàn)省略號(hào)的示例
這篇文章主要介紹了css多行文本溢出時(shí)出現(xiàn)省略號(hào)的示例的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-13- 本篇文章主要介紹了純CSS定制文本省略的方法大全,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-16
- 這篇文章主要介紹了CSS文本和div垂直居中方法總結(jié),包括多行文本垂直居中,單行文本垂直居中,子div垂直居中,感興趣的小伙伴們可以參考一下2016-07-04
通過(guò)純CSS樣式實(shí)現(xiàn)DIV元素中多行文本超長(zhǎng)自動(dòng)省略號(hào)
可以通過(guò)css樣式實(shí)現(xiàn)DIV元素中文本超長(zhǎng)后自動(dòng)截?cái)嗖⒁允÷蕴?hào)結(jié)尾,一般情況下都是使用javascript,其實(shí)使用純CSS樣式也可以做到2014-05-05- 單行文本居中比較簡(jiǎn)單,就是將line-height設(shè)置成和height一樣就可以了,對(duì)于多行文本,這種方式就行不通了,使用width,height必須使用px單位,再配合vertial-align:middle2013-12-09
純CSS實(shí)現(xiàn)炫酷文本時(shí)鐘特效
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)純CSS實(shí)現(xiàn)炫酷的文本時(shí)鐘特效,文中的示例代碼講解詳細(xì),對(duì)我們掌握CSS有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-21使用純CSS實(shí)現(xiàn)動(dòng)態(tài)漸變文本特效
本文解析了通過(guò)純 CSS 實(shí)現(xiàn)了一個(gè)如同冰島的極光一般炫酷的文本漸變效果,通過(guò)定位和多個(gè)具有不同顏色和邊框半徑值形狀的動(dòng)畫,結(jié)合mix-blend-mode混合模式實(shí)現(xiàn)了這個(gè)特效,2023-11-20css實(shí)現(xiàn)單行文本溢出顯示省略號(hào)的示例代碼
這篇文章主要給大家介紹了使用CSS中的text-overflow屬性來(lái)實(shí)現(xiàn)單行文本溢出顯示省略號(hào),文章中有詳細(xì)的實(shí)現(xiàn)代碼,感興趣的同學(xué)可以自己動(dòng)手嘗試一下2023-09-07- 這篇文章給大家介紹CSS 文本陰影 text-shadow 懸停效果,本文將專注于使用 CSS text-shadow 屬性來(lái)實(shí)現(xiàn)有趣的鼠標(biāo)懸停效果,但是實(shí)際上并不會(huì)為這些文本制作任何文本陰影效2022-05-23