请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-2-2 17:29 编辑
雨丝需要场景,这里,我们用一个偏暗色的 div 来做呈现雨丝的舞台,这就是传说中又是经常说到的父元素:
.papaDiv { margin: auto; position: relative; background: #333; width: 720px; height: 460px; }
父元素用绝对定位,以便稍后,子元素的绝对定位有所依据。下一步就是制作雨丝。想象一下下雨的时候,一般的情况雨丝静态时是细长的,所以我们用1*8的、背景色接近白色的子元素来模拟雨丝静态时的样子,然后雨丝看上去像是断续的直线,这部分由 keyframes 来设计。我们先来制作静态状况下的雨丝:
.rain { width: 1px; height: 8px; top: -5px; left: 100px; background: #eee; position: absolute; animation: rain 0.5s linear infinite; }
position一定要设定,绝对定位还是相对定位根据需要设定就好。最后一句是调用我们还没有设计出来的动画,动画名称我们定义为 rain:
@keyframes rain { 0% { opacity:0.2; } 100% { opacity:0.5; top:80%; } }
动画很简单:百分之零时,不透明度是0.2,百分之百时,变为0.5,也就是逐渐清晰,符合自然现象的规律。当雨丝落到父窗体80%(可调)的时候停止。其余雨通常是斜着下的,可以考虑100%时left值与初始值有所差异,这里省略掉。
最后是 HTML 代码,注意,rain 类的 div 要嵌套在父窗体 papaDiv 之内:
<div class="papaDiv"> <div class="rain"></div> </div>
效果演示:
当然,这里我们仅仅创建了一个独立的雨点单位,生成多多的雨丝可以手动去写HTML代码的子 div,每一个雨丝的初始 left 值都要重新定义,比如下一个雨丝:
<div class="rain" style="left: 215px;"></div>
它们这些子div必须写在 papaDiv 的框架之内,做 papaDiv 的子元素。
如果会JS,那就用JS生成合适数量的雨丝div,可以令JS随机产生 left 的起始值,这样,雨丝的出发点各不相同,得到的效果就是雨丝是分散着的、大致均匀分布的。 |