欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果-創(chuàng)新互聯(lián)

這篇文章主要介紹CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

為膠州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及膠州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、膠州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

玻璃窗

今天我們要實(shí)現(xiàn)的是雨滴效果,不過(guò)實(shí)現(xiàn)雨滴前,我們先把毛玻璃的效果弄出來(lái),沒(méi)有玻璃窗,雨都進(jìn)屋了,還有啥好敲打的。

<div class='window'></div>
.window {
            position: absolute;
            width: 100vw;
            height: 100vh;
            background: url("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg");
            background-size: cover;
            background-position: 100%;
            filter: blur(10px);
}

其實(shí)就是給一張圖片,做了個(gè)模糊化的效果,看起來(lái)像毛玻璃的效果

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果

一滴雨

雨滴的效果就很巧妙了,讓我們看下一滴雨完整的效果圖

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果

這滴雨其實(shí)分為兩個(gè)部分,第一部分是底部的陰影部分,其實(shí)是個(gè)邊框來(lái)的,代碼如下:

.border {
            position: absolute;
            margin-left: 92px;
            margin-top: 51px;
            border-radius: 100%;
            box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.6);
            transform: rotateY(0);
            width: 20px;
            height: 28px;
}

<div class='border'></div>

通過(guò)width和height屬性和border-radius把border拉成一個(gè)橢圓形,然后用box-shadow把陰影拉出來(lái),作為水滴的陰影,邊框的最終效果如下:

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果

然后是水滴的部分

.raindrop {
            filter: brightness(1.2);
            position: absolute;
            margin-left: 90px;
            margin-top: 50px;
            background-size: 5vw 5vh;
            border-radius: 100%;
            background-image: url("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg");
            transform: rotate(180deg) rotateY(0);
            background-position: 48.1994160428% 54.3259834959%;
            width: 24px;
            height: 28px;
}
<div class='raindrop'></div>
  • 水滴用background-image設(shè)置了玻璃的圖片作為倒影,倒影之所以是倒影,是因?yàn)橛白邮堑怪模杂胻ransform的rotate()旋轉(zhuǎn)了圖片180,正好倒過(guò)來(lái)

  • 通過(guò)background-position設(shè)置圖片在水滴的顯示的位置,后面不同的水滴會(huì)顯示出的倒影因?yàn)閳D片位置的變化都不同,顯得真實(shí)

  • raindrop的width比border的width多幾個(gè)像素,是為了讓水滴的兩邊蓋住border,只留border的上下顯示陰影

  • raindrop的margin-left和margin-top和border的也是略有不同,是為了raindrop能居中覆蓋在border上面,使得水滴和陰影融合的更真實(shí)

單獨(dú)無(wú)陰影的水滴效果如下:

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果

隨機(jī)雨滴

雨從來(lái)都不是一滴一滴來(lái)的,而且也不會(huì)很有規(guī)律的來(lái),為了讓雨滴隨機(jī)出現(xiàn)在玻璃窗上,css-doodle框架。

<css-doodle use="var(--rule)"></css-doodle>

先創(chuàng)建一個(gè)css-doodle的自定義組件

--rule: ( :doodle {
     @grid: 10x10/ 100%;
     overflow: visible;
}

打出10*10個(gè)grid,這樣最多可以出現(xiàn)100滴雨

transform: scale(@rand(.5, .9));

通過(guò)transform:scale讓雨滴隨機(jī)變大變小

:before {
    content: '';
    position: absolute;
    margin-left: @var(--mleft);
    margin-top: @var(--mtopb);
    border-radius: 100%;
    box-shadow: 0 0 0 @var(--shadow-size) rgba(0, 0, 0, 0.6);
    transform: rotateY(0);
    width: @var(--widthb);
    height: @var(--height);
}

:after {
    content: '';
    filter: brightness(1.2);
    position: absolute;
    margin-left: @var(--mleft);
    margin-top: @var(--mtopa);
    background-size: 5vw 5vh;
    border-radius: 100%;
    background-image: url("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg");
    transform: rotate(180deg) rotateY(0);
    background-position: @r(1%, 100%) @r(1%, 100%);
    width: @var(--widtha);
    height: @var(--height);
 }

這里的:before和:after大家看的是不是很眼熟,其實(shí):before里面的內(nèi)容就是前面border的樣式,:after里面的就是前面raindrop的樣式。content必須要有,因?yàn)樵趥卧兀╞efore,after)里如果沒(méi)有設(shè)置“content”屬性,偽元素是無(wú)用的,整個(gè):before和:after里面的配置就都無(wú)效了。為了讓雨滴顯得更清晰,加了filter: brightness(1.2)讓雨滴顯得更亮一些。

這里面比較奇怪的是@var(),它其實(shí)就是css的變量,在css-doodle做了一層包裝,作用和css的var()是一樣的,我們看下這些變量的定義

--size:(4 + @r(1, 8));
--shadow-size: calc(((@var(--size)*0.3) - 1)*1px);
--mleft:@r(1, 100)px;
--mtop:@r(1, 100);
--mtop1:(@var(--mtop) - 1);
--mtopb:calc(@var(--mtop)*1px);
--mtopa:calc(@var(--mtop1)*1px);
--height:@r(15, 25)px;
--width:@r(8, 20);
--width2:(@var(--width) + 5);
--widthb:calc(@var(--width)*1px);
--widtha:calc(@var(--width2)*1px);

這里有幾個(gè)坑要說(shuō)明一下:

1號(hào)坑:css-doodle提供了@calc(),但是這里計(jì)算還是要用css的calc(),使用@calc()無(wú)效。
2號(hào)坑:在使用@var做加減法的時(shí)候,+-號(hào)的兩遍要有空格,否則計(jì)算無(wú)效,切記切記。
3號(hào)不是坑:計(jì)算好數(shù)值后,怎么帶上px單位呢,用calc(value*1px)這種方法就可以了,其他的單位也可以用這種方法。
4號(hào)說(shuō)明:為什么要用變量?是因?yàn)閎efore和after不在一起,為了讓boder和raindrop的margin-left、margin-top、width、height等屬性能夠保持一致,就需要用變量在before和after外面定義好,傳值到里面去。

最終的效果如下:

CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果

沒(méi)動(dòng)畫(huà)效果怎么敲打我窗

雨點(diǎn)如果只是這樣灑在窗戶,那就沒(méi)有敲打的意思,為了體現(xiàn)敲打,我決定讓雨點(diǎn)動(dòng)起來(lái)。

:before {
    content: '';
    position: absolute;
    margin-left: @var(--mleft);
    margin-top: @var(--mtopb);
    border-radius: 100%;
    box-shadow: 0 0 0 @var(--shadow-size) rgba(0, 0, 0, 0.6);
    transform: rotateY(0);
    width: @var(--widthb);
    height: @var(--height);
    opacity: 0;
    animation: raindrop-fall 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
    animation-fill-mode: forwards;
    animation-delay: @var(--delay);
}
:after {
    content: '';
    filter: brightness(1.2);
    position: absolute;
    margin-left: @var(--mleft);
    margin-top: @var(--mtopa);
    background-size: 5vw 5vh;
    border-radius: 100%;
    background-image: url("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg");
    transform: rotate(180deg) rotateY(0);
    background-position: @r(1%, 100%) @r(1%, 100%);
    width: @var(--widtha);
    height: @var(--height);
    opacity: 0;
    animation: raindrop-fall 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
    animation-fill-mode: forwards;
    animation-delay: @var(--delay);
}

重點(diǎn)是:before和:after里面的最后三行,是用來(lái)實(shí)現(xiàn)動(dòng)畫(huà)效果的。

cubic-bezier()控制動(dòng)畫(huà)的速度,使得雨滴落到玻璃窗的效果更逼真

animation-delay 雨點(diǎn)出現(xiàn)的時(shí)間隨機(jī),同樣是為了效果更逼真,逼真的效果真麻煩

再來(lái)看看raindrop-fall的@keyframe設(shè)置

@keyframes raindrop-fall {
    0% {
        opacity: 0;
        transform: rotate(180deg) scale(2.5, 2.3) rotateY(0);
    }
    100% {
        opacity: 1;
        transform: rotate(180deg) scale(1, 1) rotateY(0);
    }
}

以上是“CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:CSS怎么實(shí)現(xiàn)雨滴動(dòng)畫(huà)效果-創(chuàng)新互聯(lián)
新聞來(lái)源:http://chinadenli.net/article34/cojspe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站營(yíng)銷(xiāo)型網(wǎng)站建設(shè)用戶體驗(yàn)小程序開(kāi)發(fā)網(wǎng)站制作定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名