如何利用JavaScript實(shí)現(xiàn)一個(gè)文字擦除效果
前言
動(dòng)畫實(shí)際上就是一個(gè)視覺(jué)欺騙功能,一個(gè)前端如果不會(huì)視覺(jué)欺騙,那么針對(duì)很多效果將會(huì)手無(wú)足措,實(shí)際上學(xué)習(xí)動(dòng)畫的過(guò)程中,也能更好理解視覺(jué)欺騙,實(shí)際開發(fā)一些場(chǎng)景也會(huì)有更多實(shí)現(xiàn)方案
這里的擦除效果,就是利用視覺(jué)欺詐實(shí)現(xiàn)一個(gè)文字擦除效果(前面寫到的進(jìn)度條也有視覺(jué)欺騙在里面)
核心原理,就是在文本上方放置同樣的一個(gè)文本內(nèi)容,設(shè)置顏色將其蓋住,通過(guò)css屬性動(dòng)畫逐步放開遮擋區(qū)間,這樣看起來(lái)就像是文本逐漸展示了(實(shí)現(xiàn)是不是和看起來(lái)效果有點(diǎn)不太一樣,這就是視覺(jué)欺騙了)
實(shí)現(xiàn)
import "./App.css";
//基礎(chǔ)文本
const text = `
“再也不能罵人了!”近日,一條以“罵人也違法了
最高可判三年”為關(guān)鍵詞的話題登上熱搜,迅速引發(fā)公眾熱議。這背后,是自2026年1月1日起正式施行的新修訂《治安管理處罰法》,言語(yǔ)威脅、辱罵他人可能構(gòu)成違法!公然辱罵他人或捏造事實(shí),造成重傷或死亡的還涉嫌犯罪。請(qǐng)謹(jǐn)言慎行,莫因“口無(wú)遮攔”承擔(dān)法律責(zé)任。
法律依據(jù) 《中華人民共和國(guó)治安管理處罰法》(2026),第五十條規(guī)定:
有下列行為之一的,處五日以下拘留或者一千元以下罰款;情節(jié)較重的,處五日以上十日以下拘留,可以并處一千元以下罰款:
(一)寫恐嚇信或者以其他方法威脅他人人身安全的;
(二)公然侮辱他人或者捏造事實(shí)誹謗他人的;
(三)捏造事實(shí)誣告陷害他人,企圖使他人受到刑事追究或受到治安管理處罰的;
(四)對(duì)證人及其近親屬進(jìn)行威脅、侮辱、毆打或者打擊報(bào)復(fù)的;
(五)多次發(fā)送淫穢、侮辱、恐嚇等信息或者采取滋擾、糾纏、跟蹤等方法,干擾他人正常生活的;
(六)偷窺、偷拍、竊聽(tīng)、散布他人隱私的。
有前款第五項(xiàng)規(guī)定的滋擾、糾纏、跟蹤行為的,除依照前款規(guī)定給予處罰外,經(jīng)公安機(jī)關(guān)負(fù)責(zé)人批準(zhǔn),可以責(zé)令其一定期限內(nèi)禁止接觸被侵害人。對(duì)違反禁止接觸規(guī)定的,處五日以上十日以下拘留,可以并處一千元以下罰款。
《中華人民共和國(guó)刑法》第二百四十六條:
以暴力或者其他方法公然侮辱他人或者捏造事實(shí)誹謗他人,情節(jié)嚴(yán)重的,處三年以下有期徒刑、拘役、管制或者剝奪政治權(quán)利。
`;
function App() {
return (
//使用兩個(gè)一摸一樣的文本效果,這樣更好蓋住
//為了能重合使用絕對(duì)定位來(lái)處理
<p className="App">
<p className="box">
{text}
</p>
<p className="box">
//不適用匿名盒子,是為了更好操作該行盒
<span className="earser">{text}</span>
</p>
</p>
);
}
css實(shí)現(xiàn),除了使用行盒子實(shí)現(xiàn)背景的逐行變化,這里借助css自定義屬性,來(lái)實(shí)現(xiàn)動(dòng)畫(畢竟動(dòng)畫只能應(yīng)用css內(nèi)置屬性,不能直接應(yīng)用變量)
css實(shí)現(xiàn)
ps:當(dāng)然使用 background-position屬性,就不用自定義屬性了,容我裝一下哈??
.App {
margin: 0;
color: black;
position: relative;
display: block;
color: #000;
}
.box {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
@property --per {
syntax: '<percentage>';
inherits: false;
initial-value: 5%;
}
//使用行盒子設(shè)置背景,才能達(dá)到我們想要的效果
.earser {
--per: 5%;
color: transparent;
background: linear-gradient(to right, transparent var(--per), #fff calc(var(--per) + 100px));
animation
: earser 5s linear forwards;
}
//關(guān)鍵幀動(dòng)畫
@keyframes earser {
to {
--per: 100%;
}
}
這是一個(gè)簡(jiǎn)易的部分擦除效果(gif懶得生成)

最后
思考一下,如果文本區(qū)域存在一個(gè)背景圖的話,那么這種遮蓋方式可能就不行了,這種情況怎么實(shí)現(xiàn)文字擦除效果么,不妨思考一下
相關(guān)文章
CheckBox多選取值及判斷CheckBox選中是否為空的實(shí)例
下面小編就為大家?guī)?lái)一篇CheckBox多選取值及判斷CheckBox選中是否為空的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
javascript 自動(dòng)轉(zhuǎn)到命名錨記
javascript 自動(dòng)轉(zhuǎn)到命名錨記,方面業(yè)內(nèi)控制導(dǎo)航等信息2009-01-01
關(guān)于js獲取radio和select的屬性并控制的代碼
對(duì)于聯(lián)動(dòng)菜單大家都不會(huì)陌生了,但是這還是我第一次寫聯(lián)動(dòng)的了。原理很簡(jiǎn)單,但是自己寫起來(lái)就感覺(jué)還是有點(diǎn)難度的了2011-05-05
Javascript下的urlencode編碼解碼方法附decodeURIComponent
而本文,就大概說(shuō)說(shuō)如何在js中通過(guò)系統(tǒng)自帶的函數(shù)去解決這個(gè)問(wèn)題。2010-04-04
JavaScript實(shí)現(xiàn)按鍵精靈的原理分析
這篇文章主要介紹了JavaScript實(shí)現(xiàn)按鍵精靈的原理分析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
如何讓easyui gridview 寬度自適應(yīng)窗口改變及fitColumns應(yīng)用
在使用Easyui GridView時(shí),如果要Gridview的寬度和窗口的寬度相同,只需要設(shè)置fitColumns: true即可,感興趣的你不要走開啊,接下來(lái)為您詳細(xì)介紹2013-01-01
JS簡(jiǎn)單實(shí)現(xiàn)父子窗口傳值功能示例【未使用iframe框架】
這篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)父子窗口傳值功能,結(jié)合具體實(shí)例形式分析了javascript實(shí)現(xiàn)不使用iframe框架進(jìn)行窗口之間簡(jiǎn)單傳值的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
wap手機(jī)圖片滑動(dòng)切換特效無(wú)css3元素js腳本編寫
手機(jī)圖片滑動(dòng)切換,網(wǎng)上有很多這樣的例子,但都借助于其他組件,讓代碼混亂的不行,本例無(wú)css3元素js腳本編寫,需要的朋友可以參考下2014-07-07
jquery插件jquery.confirm彈出確認(rèn)消息
這篇文章介紹了插件jquery.confirm彈出確認(rèn)消息的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2015-12-12

