box-shadow: 10px 10px 10px rgba(54,54,54,0.36);
元素阴影,这个不会影响页面布局;分别指定如下参数:
border-radius: 2px;
边框圆角半径,会影响box-shadow显示
border-radius: 30px/10px;
粘滞定位,和相对定位类型,不同的是粘滞定位可以在元素到达某个位置时将其固定住,兼容性不好;
通过设置top、bottom、left、right设置固定范围,当这些值设置为0px时,就是整个视口
渐变是图片,需要通过background-image
进行设置;
渐变默认是从上到下;
linear-gradient(red, yellow)
从上到下,红色到黄色的渐变linear-gradient(to right, red, yellow)
to right
指定渐变方向,这个指定方向还可以设置deg(度),turn(圈)background-image: linear-gradient(red 20px, yellow 80px);
,指定渐变分界颜色出现的位置background-image: repeating-linear-gradient(red 0px, yellow 40px);
radial-gradient(red, yellow)
red中心向四周辐射yellow整体和线性渐变一样;默认情况下径向渐变的形状根据元素形状来计算,即:
元素为正方形,径向渐变就是圆形
元素为长方形,径向渐变就是椭圆
可以手动指定径向渐变范围的大小radial-gradient(100px 200px, red, yellow)
这个指定大小存在预设值
可以手动指定元素的径向渐变形状:radial-gradient(circle, red, yellow)
或者radial-gradient(ellipse, red, yellow)
可以手动执行元素径向渐变的中心点位置radial-gradient(100px 200px at 0px 0px, red, yellow)
background-image: repeating-radial-gradient(red 0px, yellow 40px);
过渡,只有在属性、样式发生变化的时候才会执行,如hover状态;
transition: 对象 时间
,通过过渡指定一个属性切换到目标状态以过渡的方式,主要有两个,一个是目标状态,一个当前状态,一个是过渡时间;
transition: all 2s
所有属性再2s内进行过渡transition: width 0.5s, height 1s;
同时指定多个使用逗号隔开简写属性无顺序要求,只是路过同时使用duration和delay,那么第一个是duration,第二个是delay
transition-property 指定要执行过渡的属性,多个属性使用逗号隔开,如果要针对所有属性,那就设置为all
transition-property: width, height;
transition-property: all;
transition-duration 执行执行过渡的持续时间,针对transition-property
不同属性设置的transition-duration
也使用逗号隔开,然后会对应上去,如:
transition-property: width, height;
transition-duration: 1s, 2s;
transition-timing-function 执行过渡的时间分布效果,注意,要看到效果一定要先指定transition-during
;
https://cubic-bezier.com/#.17,.67,.83,.67
可以得到这个曲线transition-delay 指定进行过渡的延时
设置动画效果,必须先要设置一个关键帧,动画效果执行完毕就正常显示元素。
简写属性无顺序要求,只是路过同时使用duration和delay,那么第一个是duration,第二个是delay
@keyframes
关键帧设置了动画执行的每一个步骤;
transition – 过渡,与transition类型,但是transition需要当元素属性发生变化才会发生;而动画可以自动触发动态效果;
.parent-30 {
width: 100px;
height: 100px;
background-color: silver;
/* 设置动画 */
animation-name: keyframe-1;
animation-duration: 2s;
animation-delay: 1s;
animation-timing-function: ease-in-out;
}
@keyframes keyframe-1 {
/* to表示动画的开始位置,也可以使用 0% 表示 */
from {
width: 100px;
height: 100px;
}
/* from表示动画的结束位置,也可以使用 100% 表示 */
to {
width: 200px;
height: 200px;
}
<div class="parent-30">
div>
变形是指元素形状或位置发生的改变;他不会影响页面布局;这个就是和margin的区别,margin会影响到布局。
transform 用来设置变形效果,变形效果如果想要看到3D效果,就要对变形元素的父元素设置persprctive
属性
perspective
:transform: perspective(800px) translateZ(200px);
;设置视距之后Z轴平移才有效果;transform: translateX(-50%) translateY(-50%);
这个是按照顺序进行变形的。
旋转的时候立体坐标系的原点在元素的中心位置,横穿原点的是x轴,纵穿原点的是y轴,垂直显示器平面的是Z轴,站在轴的正方向,顺时针旋转时,旋转角度为正数;逆时针为负数。
通过旋转可以使元素沿着x、y、z旋转指定的角度
perspective
有立体效果perspective
有立体效果transform: rotateZ(45deg);
backface-visibility
transform: rotateY(45deg) translateZ(100px);
,这个是按照顺序进行变形的,先旋转Y轴,然后Z轴也会跟着旋转,因此平移Z轴时移动的方向并不是正对着人,而是会有一个偏移。
perspective
和transform-style
均设置在父元素中
perspective 指定了观察者与 z=0 平面的距离,使具有三维位置变换的元素产生透视效果。z>0 的三维元素比正常大,而 z<0 时则比正常小,大小程度由该属性的值决定。
三维元素在观察者后面的部分不会绘制出来,即 z 轴坐标值大于 perspective 属性值的部分。
当该属性值不为 0 和 none 时,会创建新的 层叠上下文。在这种情况下,容器内元素的层叠关系像是使用了 position: fixed 一样。
transform-style
preserve-3d
,那么在显示时会显示Z轴方向上的信息。缩放的本质是对轴进行拉伸,他是一种对像素的增益,而不是直接修改了像素,也就是说显示像素=元素像素*增益
transform: scaleX(2)
水平方向缩放transform: scaleY(3)
垂直方向缩放transform: scale(3)
双方向上的缩放transform: scaleZ(3)
transform-style
为默认情况,即flat
,那么对于单个元素,此时scaleZ()是看不出效果的,因为这种元素他只是一个平面的概念,他是没有Z轴的,要看到Z轴的效果,就要将两个元素(也就是两个平面)利用position: absolute
放置到相同x、y位置,然后旋转Y轴才看的出来两者的Z轴间隙。transform-origin,设定变形原点,所有的缩放均围绕变形原点进行变形:旋转、缩放均与该属性相关。
n/2
,奇数为n/2 + 1
transform-origin: 0px 0px
兼容性差;
css中有变量的概念,但是兼容性存在问题。
定义就是在一个元素中使用--key: value;
进行定义
css定义的变量的作用域是当前元素以及当前元素的后代元素
var(--key)
<div class="parent-1">
<div class="box-1">div>
<div class="box-2">
123
div>
div>
兼容性差
如width: calc(100px / 2);