1.&
这是sass less中的语法 代表选择当前元素
2.nth-of-type
这个 CSS 伪类匹配文档树中在其之前具有 *a*n+*b*-1
个相同兄弟节点的元素,其中 n 为正值或零值。简单点说就是,这个选择器匹配那些在相同兄弟节点中的位置与模式 an+b 匹配的相同元素。
3.keyframes
.hasHand{
opacity: 1;
animation: show-hand 2s ease-in forwards;
}
.noHand{
animation: hide-hand 2s ease-out forwards;
}
@keyframes show-hand{
0%{
opacity: 0;
color: aquamarine
}
50%{
opacity: .5;
color: yellow;
}
100%{
opacity: 1;
color: tomato
}
}
@keyframes hide-hand{
0%{
opacity: 1;
color: aquamarine
}
50%{
opacity: .5;
color: blanchedalmond
}
100%{
opacity: 0;
color: cornsilk
}
}
react官方推荐动画库
react-transition-group
image.png
.boxtext-enter {
opacity: 0;
}
.boxtext-enter-active {
opacity: 1;
transition: 2s ease-in;
}
.boxtext-enter-done {
opacity: 1;
}
.boxtext-exit {
opacity: 1;
}
.boxtext-exit-active {
opacity: 0;
transition: 2s ease-out;
}
.boxtext-exit-done {
opacity: 0;
}
image.png
<div class="circle"></div>
.circle {
position: absolute;
margin: 52px 45px;
width: 12px;
height: 12px;
background: #fff;
border-radius: 50%;
border: 1px solid #2090ff;
}
.circle:after {
content: '';
margin: 3px;
display: table;
width: 6px;
height: 6px;
background: #2090ff;
border-radius: 50%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
.ball-wrapper {
width: 100%;
height: 400px;
border-bottom: 1px solid #eee;
box-shadow: 0 10px 40px 0 rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.ball {
margin-bottom: 300px;
width: 100px;
height: 100px;
border-radius: 50%; /* 把正方形变成圆形*/
background-color: #ff5722; /* 设置颜色为橙色*/
/*
这里用数字创建一个(慢,慢,慢,快)的曲线 –
*/
animation: bounce 0.5s cubic-bezier(0.5, 0.05, 1, 0.5);
animation-direction: alternate;
animation-iteration-count: infinite;
}
/*
使用关键字 @keyframes,在后面跟动画名称
在 Keyframe 中,用 from 和 to 关键字来指定动画开始点和结尾点的 CSS 样式。
我们使用 transform 让球沿着三维轴平移,translate3D 函数需要 3 个输入参数,即 (x, y, z) 。
因为我们想让球上下跳动,我们只需要沿着 y 轴进行平移。因此,动画结束点(即 to 中样式)的 y 值变成了 300px 。
*/
@keyframes bounce {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 300px, 0);
}
}
/* 这里可以自定义动画名 */
@keyframes mykeyframes {
0% {
left: 0px;
}
50% {
left: 200px;
}
100% {
left: 0;
}
}
.square {
position: absolute;
width: 60px;
height: 60px;
background: #06a5ff;
animation: mykeyframes 3s cubic-bezier(0.8, 0.04, 0.83, 0.67) infinite;
}
.yuandian {
position: relative;
width: 16px;
height: 16px;
border-radius: 50%;
border: 1px solid #06a5ff;
background: #fff;
}
.yuandian::after {
content: "";
position: absolute;
top: 4px;
left: 4px;
width: 8px;
height: 8px;
border-radius: 50%;
background: #06a5ff;
}
</style>
</head>
<body>
<div class="ball-wrapper">
<div class="ball"></div>
</div>
<div class="square"></div>
<div class="yuandian"></div>
</body>
</html>
image.png
@keyframes:https://www.cnblogs.com/yadiblogs/p/8460489.html
cubic-bezier:https://cubic-bezier.com/#.8,.04,.83,.67
4.实现蒙版
.mongolian-layer {
margin-top: 25rpx;
width: 29rpx;
height: 35rpx;
position: absolute;
top: 0;
left: 82%;
}
.hasshadow {
background-image: linear-gradient(to right, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 1)); /* 标准的语法 */
}
image.png
5.vh vw
image.png
6.部分前端新特性
圆角-半径(border-radius:8px),
阴影(box-shadow:10px),
文字特效(text-shadow、),
线性渐变(gradient),
旋转(transform)
transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜
增加了更多的CSS选择器
多背景 rgba
7.常见的兼容性问题
(1)png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8。
(2)浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
(3)IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
(4)IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;
Firefox下,只能使用getAttribute()获取自定义属性;
解决方法:统一通过getAttribute()获取自定义属性。
(5)
IE下,even对象有x,y属性,但是没有pageX,pageY属性;
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性;
解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。
(6)Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。
8.实现放大缩小
<button class="button"></button>
<style type="text/css">
.button{
margin: 100px;
width: 30px;
height:30px;
background: orange;
border-radius: 50px;
animation: flipping 5s infinite;
/*去除button默认边框*/
background-position-x: -7px;
background-position-y: -7px;
border: 1px;
outline: none;
}
@keyframes flipping{
0%{
opacity: .2;
transform: scale(1);
}
25%{
opacity: 1;
box-shadow: 0 0 15px orange;
transform: scale(1.4);
}
50%{
opacity: .2;
transform: scale(1);
}
75%{
opacity: 1;
box-shadow: 0 0 15px orange;
transform: scale(1.4);
}
100%{
opacity: .2;
transform: scale(1);
}
}
</style>
涟漪扩散
<div class="live">
<img src="images/live.png" alt="">
<span></span>
<span></span>
</div>
.live{
position: relative;
width: 100px;
height: 100px;
}
.live img{
width: 100px;
height: 100px;
z-index: 0;
}
@keyframes living {
0%{
transform: scale(1);
opacity: 0.5;
}
50%{
transform: scale(1.5);
opacity: 0; /*圆形放大的同时,透明度逐渐减小为0*/
}
100%{
transform: scale(1);
opacity: 0.5;
}
}
.live span{
position: absolute;
width: 100px;
height: 100px;
left: 0;
bottom: 0;
background: #fff;
border-radius: 50%;
-webkit-animation: living 3s linear infinite;
z-index: -1;
}
.live span:nth-child(2){
-webkit-animation-delay: 1.5s; /*第二个span动画延迟1.5秒*/
}
雷达
<div class="container">
<div class="dot"></div>
<div class="pulse p1"></div>
<div class="pulse p2"></div>
</div>
.container {
position: relative;
}
.dot {
position: absolute;
width: 10px;
height: 10px;
left: 160px;
top: 160px;
border-radius: 50%;
border: 1px solid #33ccff;
background-color: #33ccff;
}
.pulse {
position: absolute;
width: 88px;
height: 88px;
left: 120px;
top: 120px;
border: 2px solid #3399ff;
border-radius: 50%;
opacity: 0;
}
.p1 {
animation: warn 2s ease-out infinite;
}
.p2 {
animation: warn2 2s ease-out infinite;
}
/*.p1 {
animation: warn 2s ease-out infinite;
}
.p2 {
animation: warn 2s ease-out infinite;
-webkit-animation-delay: 1.5s;
}*/
@keyframes warn {
0% {transform: scale(0.3);opacity: 0.0;}
25% {transform: scale(0.3);opacity: 0.1;}
50% {transform: scale(0.5);opacity: 0.3;}
75% {transform: scale(0.8);opacity: 0.5;}
100% {transform: scale(1);opacity: 0.0;}
}
@keyframes warn2 {
0% {transform: scale(0.3);opacity: 0.0;}
25% {transform: scale(0.3);opacity: 0.1;}
50% {transform: scale(0.3);opacity: 0.3;}
75% {transform: scale(0.5);opacity: 0.5;}
100% {transform: scale(0.8);opacity: 0.0;}
}
网友评论