今天给大家分享一下,使用纯css实现一只可爱的兔子,它拥有移动,跳跃等的动画效果,代码中使用了基本布局和css3动画 ,效果预览如下:
代码实现
首先定义 dom,页面中包含 2 个元素,分别代表兔子和云朵:
<div class="rabbit"></div>
<div class="clouds"></div>
css样式部分:
<style>
.tz_box {
width:100%;
height:300px;
background:#e2b29f;
font-size:120%;
display: flex;
align-items: center;
justify-content: center;
}
.rabbit {
width:5em;
height:3em;
background:#fff;
border-radius:70% 90% 60% 50%;
position:relative;
box-shadow:-0.2em 1em 0 -0.75em #b78e81;
-webkit-transform:rotate(0deg) translate(-2em,0);
transform:rotate(0deg) translate(-2em,0);
animation:hop 1s infinite linear;
z-index:1
}
.no-flexbox .rabbit {
margin:10em auto 0
}
.rabbit:before {
content:"";
position:absolute;
width:1em;
height:1em;
background:white;
border-radius:100%;
top:.5em;
left:-0.3em;
box-shadow:4em .4em 0 -0.35em #3f3334,0.5em 1em 0 white,4em 1em 0 -0.3em white,4em 1em 0 -0.3em white,4em 1em 0 -0.4em white;
animation:kick 1s infinite linear
}
.rabbit:after {
content:"";
position:absolute;
width:.75em;
height:2em;
background:white;
border-radius:50% 100% 0 0;
-webkit-transform:rotate(-30deg);
transform:rotate(-30deg);
right:1em;
top:-1em;
border-top:1px solid #f7f5f4;
border-left:1px solid #f7f5f4;
box-shadow:-0.5em 0 0 -0.1em white
}
.clouds {
background:white;
width:2em;
height:2em;
border-radius:100% 100% 0 0;
position:relative;
top:-5em;
filter:alpha(opacity=0);
opacity:0;
-webkit-transform:translate(0,0);
transform:translate(0,0);
animation:cloudy 1s infinite linear forwards;
box-shadow:5em 2em 0 -0.3em white,-2em 2em 0 0 white
}
.clouds:before,.clouds:after {
content:'';
position:absolute;
box-shadow:5em 2em 0 -0.3em white,-2em 2em 0 white
}
.clouds:before {
width:1.25em;
height:1.25em;
border-radius:100% 100% 0 100%;
background:white;
left:-30%;
bottom:0
}
.clouds:after {
width:1.5em;
height:1.5em;
border-radius:100% 100% 100% 0;
background:white;
right:-30%;
bottom:0
}
@keyframes hop {
20% {
-webkit-transform:rotate(-10deg) translate(1em,-2em);
transform:rotate(-10deg) translate(1em,-2em);
box-shadow:-0.2em 3em 0 -1em #b78e81
}
40% {
-webkit-transform:rotate(10deg) translate(3em,-4em);
transform:rotate(10deg) translate(3em,-4em);
box-shadow:-0.2em 3.25em 0 -1.1em #b78e81
}
60%,75% {
-webkit-transform:rotate(0) translate(4em,0);
transform:rotate(0) translate(4em,0);
box-shadow:-0.2em 1em 0 -0.75em #b78e81
}
}
@keyframes kick {
20%,50% {
box-shadow:4em .4em 0 -0.35em #3f3334,0.5em 1.5em 0 white,4em 1.75em 0 -0.3em white,4em 1.75em 0 -0.3em white,4em 1.9em 0 -0.4em white
}
40% {
box-shadow:4em .4em 0 -0.35em #3f3334,0.5em 2em 0 white,4em 1.75em 0 -0.3em white,4.2em 1.75em 0 -0.2em white,4.4em 1.9em 0 -0.2em white
}
}
@keyframes cloudy {
40% {
filter:alpha(opacity=75);
opacity:.75;
-webkit-transform:translate(-3em,0);
transform:translate(-3em,0)
}
55% {
filter:alpha(opacity=0);
opacity:0;
-webkit-transform:translate(-4em,0);
transform:translate(-4em,0)
}
90% {
-webkit-transform:translate(0,0);
transform:translate(0,0)
}
}
</style>
通过display: flex实现居中布局,border-radius来画出兔子的身体,然后用径向渐变画出兔子的眼睛,用伪元素画出兔子的右耳、尾巴和阴影,用阴影画出兔子的左耳、腿、云朵,
最后利用css3动画增加兔子跳动和云朵飘动的动画。
最后“fly63前端网”祝大家兔年大吉大利,财源滚滚!!
今天这篇文章就来讲讲使用JavaScript来实现这种分屏的视觉UI效果。现在在网站上这种分屏视觉效果应用的也非常广泛,比如 Corsair website。
在css中使用伪类虽然实现了样式的改变,但由于没有过渡效果会显得很生硬。以前如果要实现过渡,就需要借助第三方的js框架来实现。现在只需要使用CSS3的过渡(transition)功能,就可以从一组样式平滑的切换到另一组样式。
js最近有个小伙伴问到了怎么实现新手引导的效果,然后便去网上找了下实现方案。可以通过css的border来实现。
设计图含有斜切角的效果时,我们一般想到的方法是切出四个角为背景,然后用border连起来,这样就能显示出该效果了,那么直接使用css呢?下面就整理css做斜边的效果。
这篇文章在不使用任何插件的情况,以最简洁的原生javascript来实现打字机效果和跑马灯效果。打字效果即把一段话一个字一个字的显示出来。
一般遮罩加上透明度opacity就是阴影效果。阴影效果和一般遮罩一样,唯一不同的是设置.mask遮罩的背景色用rgba()表示,当然hsla()也是可以的。模糊效果(毛玻璃效果) 通过 filter来实现
主要运用的是1.border 组成的直角三角形。2,before 和 after 伪元素 。3,z-index属性;将元素的长宽设置为0,并且将border的3条边设置为透明的,就会出现border颜色的直角三角形
文字选中效果,这个可能很少有人注意过。在默认状态先一般选中的文本颜色是白字蓝底的,不过可以通过CSS进行设置。::selection定义元素上的伪选择器,以便在选定元素时设置其中文本的样式。
发布iPhone XR的时候 各种心动 去官网看了一遍又一遍。闲着无聊发现 里面的介绍很用大篇幅的有背景文字来介绍。Like this:看着挺酷炫的还不错 就看了下实现方式。还挺简单的。
多元素之间如何实现过渡动画效果呢?这么写行不行呢?肯定是不行的,因为 Vue 在两个元素进行切换的时候,会尽量复用dom,就是因为这个原因,导致现在动画效果不会出现。如果不让 Vue 复用dom的话,应该怎么做呢?只需要给这两个div不同的key值就行了
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!