css3简单动画效果
2018-05-23 本文已影响45人
海娩
前记:嘤嘤嘤,原本是想写很多其他干货的笔记的。。然而,,看到css3 动画就停不下来,哎,总是经不起诱惑,大概就是自己拿不到想要的offer的原因吧哭泣。。其他的笔记后来再补上吧
来源: 30 Second of CSS
加载条
之前呢,在做公司项目的时候,为了显示进度,需要有回调来显示进度,所以用js控制了这个css3, 今天看到一个加载的, 觉得实在是太简单了!!!!
.donut {
width: 50px;
height: 50px;
border: 5px solid #ccc;
border-bottom-color: #1395ba;
border-radius: 50%;
animation: donut 2s linear infinite;
}
@keyframes donut {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
<div class="donut"></div>
donghua.gif
emmmm,那就再做多一个小功能,就是可以暂停的, 我觉得可以暂停会比较好玩嘻嘻,其实也就是添加多一个class, 设置一个animation-play-state
嘻嘻, 附上代码
<div class="container">
<input type="button" value="暂停" onclick="changeType()" id="button">
<div class="donut" id="donut"></div>
</div>
<script>
function changeType() {
var donut = document.getElementById('donut');
var button = document.getElementById('button');
if(button.value=='暂停') {
donut.classList.add('stop');
button.value='继续';
} else {
donut.classList.remove('stop');
button.value='暂停';
}
}
</script>
.stop {
animation-play-state: paused;
}
就只添加了一个控制添加多一个class的功能而已啦。。
弹动加载效果
先看效果吧 GIF.gif嘿嘿,其实也不难, 主要是要分析,仔细观察第一个球球, 什么动画效果呢?就是上下和透明度嘛。。然后接下来的两个球球跟第一个就是一个延时的区别而已了。。
.container {
position: relative;
text-align: center;
width: 100px;
}
.item {
display: inline-block;
height: 15px;
width: 15px;
border-radius: 50%;
background: #969aec;;
animation: item 1s ease-in-out infinite;
}
.b {
animation-delay: .2s;
}
.c {
animation-delay: .4s;
}
@keyframes item {
0% {
transform: translateY(0);
opacity: 1;
}
50% {
transform: translateY(20px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
</style>
<div class="container">
<div class="item a"></div>
<div class="item b"></div>
<div class="item c"></div>
</div>
下横线
嘤嘤嘤,这个是最让我生气的东西了。。之前不用css3属性的时候,直接是写一个span标签绝对定位,jq实现动画效果的。然后现在用css实现, 超容易超流畅的好吗!!
GIF.gif
这里是怎么实现呢?
这里主要就是用到了伪元素,::after
, transition
, :hover
,嗯,就是这么简单的。。
<style>
.underline {
display: inline-block;
position: relative;
line-height: 2; /*这里设置line-height是为了让下横线不要太贴着文字了。。*/
}
.underline::after {
content: '';
position: absolute;
left: 0;
bottom: 0;
transform: scaleX(0); /*设置x方向缩放*/
height: 2px;
width: 100%;
transform-origin: 50% bottom; /*这里呢,从左到右,从上到下*/
background: #1395ba;
transition: transform 1s;
}
.underline:hover::after {
transform: scaleX(1);
transition: transform 1s;
}
</style>
<p class="underline">我是小娩娩</p>