CSS 形变 动画*2 基准线
前端 CSS 学习目录导航
CSS transform 形变的使用
-
这个属性的设置的话,就是实现的是对某一个元素进行一些形变的效果,包括了
旋转,缩放,倾斜,平移等等 -
实现书写这个属性的时候,我们书写的基本格式为:
transform: transform-function || transform-property -
设置属性的时候,就是实现的是我们的书写我们的CSS 函数来实现完成的效果
-
常见的几个
transform function-
translate function-
实现书写的基本的格式:
transform: translate(x, y) -
这个函数的设置就是实现的是元素的平移
-
然后实现平移的时候,我们需要两个值,一个和就是
x轴translateX的平移量,一个就是y轴translateY的平移量- 同时还是可以通过这个属性来实现设计3D效果的:
translate3d
- 同时还是可以通过这个属性来实现设计3D效果的:
-
然后里面可以书写的值含有: 像素值,百分比等等
-
使用百分比还是可以实现元素的水平或者垂直居中
-
以前的水平居中的方式:
- 块级元素:
margin; 0 auto - 行内级元素:
text-align: center
- 块级元素:
-
实现垂直居中:
- 绝对定位: 直接通过
top: 0; bottom: 0;margin:auto 0;
- 绝对定位: 直接通过
-
现在的话就可以通过我们的
top/translate来实现我们的居中-
和前面的一个图片的居中是一样的思路:
-
selector { position: relative; top: 50%; transform: translate(0, -50%) } - 可以回顾回顾
-
-
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> body { padding: 0; margin: 0; .box, .box01 { width: 100px; height: 100px; } .box { background-color: skyblue; /* 开始实现我们的平移的效果 */ /* 下面的属性的设置就是实现的是:先x和y轴实现平移,然后单独实现在x轴的平移,然后是在y轴的平移 */ transform: translate(100px, 200px) translateX(200px) translateY(200px); } .box01 { background-color: red; } } </style> </head> <body> <div class="box"></div> <div class="box01"></div> </body> </html>
-
-
-
scale(x, y)缩放-
可以实现的就是通过这个函数来对我们的元素实现缩放的功能
-
可以对我们的x轴实现缩放,也是可以实现对我们的y轴实现缩放
- 一个值得时候,就是对x轴实现缩放
- 两个值得时候,就是x轴和y轴直接实现缩放即可
-
默认值是每个方向的是
1>1那么就是实现的是放大的效果<1那么就是实现的是缩小的效果
-
-
后面的话,我们还是可以设计3d效果的
scale3d()
-
-
rotate(<angle>)旋转-
这个就是实现的是对我们的元素本身实现旋转,默认的旋转的中心点是我们的原心
- 但是后面的话,我们还是可以设置旋转的时候的旋转中心点的,以及旋转的旋转轴
transform: rotate(90deg)注意正方形的时候不要旋转这个角度,否则可能发现的是没效果
-
-
transform-origin修改形变原点-
默认的原点: x ---
centery ---center- 水平方向可以设置的值:
left center right - 垂直方向可以设置的值:
top center bottom
- 水平方向可以设置的值:
-
-
skew(x, y)- 就是实现的是让我们的元素在二维平面的倾斜转换
- 设置的值还是实现的是我们的:
deg
-
注意我们的形变的效果一般的话,和我们的过渡动画一起实现使用的
-
CSS transition 过渡动画
-
首先的话,这个属性的话,不是立即生效的,这个是可以来实现我们的页面的中的某个元素具备动画的效果
-
就是实现的是我们的元素的两个状态之间的隐式过渡(
implicit transitions) -
首先这个属性的话我们可以实现设置的属性是:
- 那些属性发生动画的效果(明确的列出来即可,但是需要注意的是,不是所有的属性都可以设置动画效果的)
- 什么时候开始动画(设置delay)
- 动画的持续时间(设置 duration)
- 设置动画开展的速度变化(time function)
-
transition的属性设置-
transition-property就是实现的是我们的设置需要实现过渡的时间-
可以设置的值含有:
transform这个时候就可以实现监视transform形变的变化了left这个就是对left变化进行监视all在开发中的话,一般都是设置这个值,把所有的属性进行监视
-
-
transition-duration设置动画过渡持续的时间transition-duration: 1s
-
transition-timing-function设置动画显示的时候的进行方式 -
transition-delay设置动画开始的时间延迟transition-delay: 2s
-
-
混合属性的书写:
transition: transition-property transition-duration transition-timning-function transition-delaytransition: all 1s ease-in 1s
CSS animation 动画
-
出现使用
animation动画的原因- 是因为
transition的动画的本质的话,只是实现的是我们的将开始和结束状态的动画的设置,不可以设置中间的动画 - 然后的话
transition动画不可以实现自动的运行,也不可以重复执行 transition只可以实现的是在某一个属性发生了变化后,才可以触发动画的效果
- 是因为
-
为什么使用
CSS Animation- 就是为了解决我们的动画不可重复执行,然后实现自动的运行的效果
-
如何实现
animation动画- 步骤一:使用
@keyframes来实现定义动画序列(每一帧动画如何执行)【视频的本质就是:一张张的图片结合而成的】 - 步骤二:配置动画执行的名称,持续时间,动画曲线,延迟,执行次数,方向等等
- 步骤一:使用
-
@ketframes的使用- 这个的实现的是我们的定义每一帧的状态的设置
from等价于我们的0%to等价于我们的100%-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> body { padding: 0; margin: 0; .box { width: 100px; height: 100px; background-color: skyblue; /* 开始实现使用我们的动画的设置的执行 */ animation-name: box_animation; animation-duration: 4s; animation-timing-function: ease; animation-delay: 1s; /* 设置动画执行次数 */ /* animation-iteration-count: 6; */ animation-iteration-count: infinite; /* 无限动画 */ animation-play-state: running; } } /* 开始实现定义animation的动画每一帧的变化 */ /* 基本的格式为: @keyframes 名称 { 百分比 { 属性的设置 } } */ /* 注意我们的这个动画的设置的时候,需要的是写在我们的全局的,否则失效 */ @keyframes box_animation { 0% { transform: translate(0, 0) } 25% { transform: translate(200px, 0); background-color: red; } 50% { transform: translate(200px, 200px); background-color: yellow; } 75% { transform: translate(0, 200px); background-color: green; } 100% { transform: translate(0, 0); background-color: skyblue; } } </style> </head> <body> <div class="container"> <div class="box"></div> </div> </body> </html>
-
animation属性的设置- 实现了定义了自己的每一帧的动画的状态,这个时候,我们就可以开始设置animation的属性实现运行了
- 官网MDN
CSS vertical-align属性设置
-
假如说: 前端中一个没有设置宽高的盒子,但是是含有内容的,这个时候盒子具有一定的高度是为什么耶:
- 以前我们的说的是: 一个盒子的高度和内容的话,只是由我们的内容实现的撑起来的
- 但是实际上标准的说的话,盒子的高度的话,实际上是由我们的内容的
行高撑起来,所以说这才是盒子真真的高度
-
理解
baseline的设置- 首先在我们的一个
行盒里面,我们可以设置的值含有: 就是通过我们的基准线来实现的对齐 - 因为有了这个基准线的设置,内容才可以实现我们的在网页中的美观显示:
一个行盒中的行内元素的对齐方式 - MDN文档
- 首先在我们的一个
- 注意,我们的 inline-block 以及 inline 都是我们的行内级元素