30 Seconds of CSS
TerryZwei opened this issue · 0 comments
TerryZwei commented
Bouncing loader
创建跳动加载动画
html
<div class="bouncing-loader">
<div></div>
<div></div>
<div></div>
</div>
css
@keyframes bouncing-loader {
from {
opacity: 1;
transform: translateY(0);
}
to {
opacity: 0.1;
transform: translateY(-1rem);
}
}
.bouncing-loader {
display: flex;
justify-content: center;
}
.bouncing-loader > div {
width: 1rem;
height: 1rem;
margin: 3rem 0.2rem;
background: #8385aa;
border-radius: 50%;
animation: bouncing-loader 0.6s infinite alternate;
}
.bouncing-loader > div:nth-child(2) {
animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
animation-delay: 0.4s;
}
解释
注意:1rem
一般是 16px
.
@keyframes
定义了一个动画的两种状态,当元素改变opacity
和使用tansform: translateY()
属性在2D平面上跳动..bouncing-loader
是跳动循环的父级容器和使用display: flex
和justify-content: center
把它们定位到中间位置上..bouncing-loader > div
设置父级元素下三个div
的样式.div
设置宽和高1rem
,使用border-radius: 50%
去将它们从方形变成原型.margin: 3rem 0.2rem
表明每一个原型元素的顶部/底部都有3rem
的边距和左右两边有0.2rem
的边距,以便它们相互之间不会黏在一起,给予它们喘息的空间.animation
是各种各样动画属性的简写属性:animation-name
,animation-duration
,animation-iteration-count
,animation-direction
在这里使用了这几个属性.nth-child(n)
定位到父元素下的第n个子元素.animation-delay
分别使用在第二第三个div元素上,是因为每一个元素不会在相同的时间点开始动画.
Box-sizing 重置
重置盒子模型以便于width
和height
都不会受到自身的border
或者padding
的影响.
css
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
解释
box-sizing: border-box
使padding
或者border
不会影响到元素的width
或者height
.box-sizing: inherit
使元素遵循父级元素的box-sizing
规则.
浏览器支持
IE8或IE8以上.
Circle
利用纯CSS方式创建一个圆形.
HTML
<div class="circle"></div>
CSS
.circle {
border-radius: 50%;
width: 2rem;
height: 2rem;
background: #333;
}
解释
border-radius: 50%
通过弯曲元素的边去创建一个圆.