真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

這篇文章主要介紹“如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫”文章能幫助大家解決問題。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了海晏免費(fèi)建站歡迎大家使用!

單行與多行文本的漸隱

首先,我們來看這樣一個(gè)例子,我們要實(shí)現(xiàn)這樣一個(gè)單行文本的漸隱:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

使用 mask,可以輕松實(shí)現(xiàn)這樣的效果,只需要:

Lorem ipsum dolor sit amet consectetur.

p {
    mask: linear-gradient(90deg, #fff, transparent);
}

但是,如果,場(chǎng)景變成了多行呢?我們需要將多行文本最后一行,實(shí)現(xiàn)漸隱消失,并且適配不同的多行場(chǎng)景:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

這個(gè)就會(huì)稍微復(fù)雜一點(diǎn)點(diǎn),但是也是有多種方式可以實(shí)現(xiàn)的。

首先我們來看一下使用 background 的方式。

使用 background 實(shí)現(xiàn)

這里會(huì)運(yùn)用到一個(gè)技巧,就是 display: inline 內(nèi)聯(lián)元素的 background 展現(xiàn)形式與 display: block 塊級(jí)元素(或者 inline-block、flexgrid)不一致。

簡(jiǎn)單看個(gè)例子:

Lorem .....

Lorem .....

這里需要注意,

元素是塊級(jí)元素,而 內(nèi)聯(lián)元素

我們給它們統(tǒng)一添加上一個(gè)從綠色到藍(lán)色的漸變背景色:

p, a {
  background: linear-gradient(90deg, blue, green);
}

看看效果:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

什么意思呢?區(qū)別很明顯,塊級(jí)元素的背景整體是一個(gè)漸變整體,而內(nèi)聯(lián)元素的每一行都是會(huì)有不一樣的效果,整體連起來串聯(lián)成一個(gè)整體。

基于這個(gè)特性,我們可以構(gòu)造這樣一種布局:

Mollitia nostrum placeat consequatur deserunt velit ducimus possimus commodi temporibus debitis quam

p {
    position: relative;
    width: 400px;
}

a {
    background: linear-gradient(90deg, transparent, transparent 70%, #fff);
    background-repeat: no-repeat;
    cursor: pointer;
    color: transparent;
    
    &::before {
        content: "Mollitia nostrum placeat consequatur deserunt velit ducimus possimus commodi temporibus debitis quam";
        position: absolute;
        top: 0;
        left: 0;
        color: #000;
        z-index: -1;
    }
}

這里需要解釋一下:

這樣,我們就能得到這樣一種效果:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

這里, 元素的漸變?yōu)閺耐该鞯桨咨煤竺娴陌咨饾u遮住文字。

如果我將漸變改為從黑色到白色(為了方便理解,漸變的黑色和白色都帶上了一些透明),你能很快的明白這是怎么回事:

a {
    background: linear-gradient(90deg, rgba(0,0,0, .8), rgba(0,0,0, .9) 70%, rgba(255, 255, 255, .9));
}

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

當(dāng)然,這個(gè)方案有很多問題,譬如利用了 z-index: -1,如果父容器設(shè)置了背景色,則會(huì)失效,同時(shí)不容易準(zhǔn)確定位最后一行。因此,更好的方式是使用 mask 來解決。

使用 mask 實(shí)現(xiàn)

那么,如果使用 mask 的話,問題,就會(huì)變得簡(jiǎn)單一些,我們只需要在一個(gè) mask 中,實(shí)現(xiàn)兩塊 mask 區(qū)域,一塊用于準(zhǔn)確控制最后一行,一塊用于控制剩余部分的透明。

也不需要特殊構(gòu)造 HTML:

Lorem ipsum dolor sit amet ....

p {
    width: 300px;
    padding: 10px;
    line-height: 36px;
    mask: 
        linear-gradient(270deg, transparent, transparent 30%, #000),
        linear-gradient(270deg, #000, #000);
    mask-size: 100% 46px, 100% calc(100% - 46px);
    mask-position: bottom, top;
    mask-repeat: no-repeat;
}

效果如下:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

核心在于整個(gè) mask 相關(guān)的代碼,正如上面而言的,mask 將整個(gè)區(qū)域分成了兩塊進(jìn)行控制:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

在下部分這塊,我們利用 mask 做了從右向左的漸隱效果。并且利用了 mask-position 定位,以及 calc 的計(jì)算,無論文本都多少行,都是適用的!需要說明的是,這里的 46px 的意思是單行文本的行高加上 padding-bottom 的距離??梢赃m配任意行數(shù)的文本:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

添加動(dòng)畫效果

好,看完靜態(tài)的,我們?cè)賮韺?shí)現(xiàn)一種**動(dòng)態(tài)的文字漸隱消失。

整體的效果是當(dāng)鼠標(biāo) Hover 到文字的時(shí)候,整個(gè)文本逐行逐漸消失。像是這樣:

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

這里的核心在于,需要去適配不同的行數(shù),不同的寬度,而且文字是一行一行的進(jìn)行消失。

這里核心還是會(huì)運(yùn)用上內(nèi)聯(lián)元素 background 的特性。

實(shí)現(xiàn)整段文字的漸現(xiàn),從一種顏色到另外一種顏色

Button

Lorem ipsum dolor sit amet consectetur adipisicing elit. Mollitia nostrum placeat consequatur deserunt velit ducimus possimus commodi temporibus debitis quam, molestiae laboriosam sit repellendus sed sapiente quidem quod accusantium vero.

a {    
    background: 
        linear-gradient(90deg, #999, #999),
        linear-gradient(90deg, #fc0, #fc0);
    background-size: 100% 100%, 0 100px;
    background-repeat: no-repeat;
    background-position: 100% 100%, 0 100%;
    color: transparent;
    background-clip: text;
}
.button:hover ~ p a {
    transition: .8s all linear;
    background-size: 0 100px, 100% 100%;
}

這里需要解釋一下,雖然設(shè)置了 color: transparent,但是文字默認(rèn)還是有顏色的,默認(rèn)的文字顏色,是由第一層漸變賦予的 background: linear-gradient(90deg, #999, #999), linear-gradient(90deg, #fc0, #fc0),也就是這一層:linear-gradient(90deg, #999, #999)

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

當(dāng) hover 觸發(fā)時(shí),linear-gradient(90deg, #999, #999) 這一層漸變逐漸消失,而另外一層 linear-gradient(90deg, #fc0, #fc0)` 逐漸出現(xiàn),借此實(shí)現(xiàn)上述效果。

CodePen -- background-clip 文字漸現(xiàn)效果

好,我們可以借鑒這個(gè)技巧,去實(shí)現(xiàn)文字的漸隱消失。一層為實(shí)際的文本,而另外一層是進(jìn)行動(dòng)畫的遮罩,進(jìn)行動(dòng)畫的這一層,本身的文字設(shè)置為 color: transparent,這樣,我們就只能看到背景顏色的變化。

大致的代碼如下:

    Mollitia nostrum placeat consequatur deserunt.     Mollitia nostrum placeat consequatur deserunt.

p {
    width: 500px;
}
.word {
    position: absolute;
    top: 0;
    left: 0;
    color: transparent;
    color: #000;
}
.pesudo {    
    position: relative;
    background: linear-gradient(90deg, transparent, #fff 20%, #fff);
    background-size: 0 100%;
    background-repeat: no-repeat;
    background-position: 100% 100%;
    transition: all 3s linear;
    color: transparent;
}
p:hover .pesudo,
p:active .pesudo{
    background-size: 500% 100%;
}

其中,.word 為實(shí)際在底部,展示的文字層,而 pesudo 為疊在上方的背景層,hover 的時(shí)候,觸發(fā)上方元素的背景變化,逐漸遮擋住下方的文字,并且,能適用于不同長(zhǎng)度的文本。

如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫

當(dāng)然,上述方案會(huì)有一點(diǎn)瑕疵,我們無法讓不同長(zhǎng)度的文本整體的動(dòng)畫時(shí)間一致。當(dāng)文案數(shù)量相差不大時(shí),整體可以接受,文案相差數(shù)量較大時(shí),需要分別設(shè)定下 transition-duration 的時(shí)長(zhǎng)。

關(guān)于“如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。


網(wǎng)站名稱:如何使用純CSS實(shí)現(xiàn)多行文本的漸隱動(dòng)畫
分享路徑:http://weahome.cn/article/gshsdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部