CSS学习笔记(不断更新)
时间:2022-09-10 10:00:00
目录
PC端
选择器
标签选择器-toc" style="margin-left:80px;">标签选择器
类选择器
id选择器
通配符选择器
多类名
字体属性
字体:font-family
大小:font-size
粗细:font-weight
样式:font-style
复合属性:font
文本属性
颜色:color
水平对齐:text-align
装饰:text-decoration
首行缩进:text-indent
行高间距:line-height
引入方式
内部样式
行内样式
外部样式
emmet语法
生成标签
生成样式
复合选择器
后代选择器
子选择器
并集选择器
伪类选择器
元素显示模式
块元素
行内元素
行内块元素
元素显示模式转换
单行文字垂直居中
背景
三大特性
层叠性
继承
优先级
盒子模型
边框border
内边距padding
外边距 margin
去掉li小圆点
圆角边框border-radius
盒子阴影box-shadow
文字阴影text-shadow
浮动 float
清除浮动 clear
样式结构书写顺序
导航链接书写
定位 position
定位模式
边偏移
元素显示与隐藏
精灵图
字体图标
三角形书写
界面模式
鼠标样式 cursor
input轮廓线 outline
textarea防止拖拽 resize
图片和文字对齐方式 vertical-align
解决图片底部空白缝隙
溢出文本显示省略号
单行文本溢出显示省略号
多行文本溢出显示省略号
布局技巧
解决盒子边框合并变粗
文字环绕图片
直角三角形
CSS初始化
HTML5新特性
结构标签
多媒体标签
input
CSS3新特性
伪元素清除浮动
CSS3盒子模型
css3其它特性
CSS3过渡
项目规划
模块化
SEO优化
项目注意
购物车泡泡数量需要右对齐定位
商品分类和下拉子分类不要拆开 dt dd
轮播图要放ul li里,因为滚动是ul
选项卡标题tab_list 内容tab_content
一行里每一列都有不同宽度的可以命名col_宽度
a标签包含有宽度的盒子,需要把a转为块级元素
引入的公用样式需要写在上面,页面引入的独有的样式写在下面
免费服务器http://free.3v.do
CSS3 2D转换
移动 transform
旋转 rotate
动画
CSS3 3D
3D转换
浏览器私有前缀
前缀
写法
移动端
视口
布局视口layout viewport
视觉视口visual viewport
理想视口ideal viewport
二倍图
物理像素和物理像素比
多倍图
背景缩放 background-size
移动端技术解决方案
css初始化 normalize.css
CSS3盒子模型 box-sizing
特殊样式
移动端布局
流式布局(百分比布局)
京东常用样式
二倍精灵图
DPG图片格式
webp图片格式
flex弹性布局
PC端
选择器
标签选择器
p {
color: red;
}
div {
color: yellow;
}
类选择器
.red {
background-color: red;
}
id选择器
#userId {
color: red;
}
通配符选择器
* {
color: red;
}
多类名
细化相同配置,方便管理
红色
绿色
黄色
字体属性
字体:font-family
- 一般给body标签使用,这样里面所有元素都能使用到
- 要使用常用的字体,保证任何用户都能正解显示
- 最好使用多个字体,保证兼容性,默认使用第一个字体,字体之间用逗号隔开
- 字体名字存在多个单词需要用引号
body {
font-family: 'Microsoft YaHei', Arial, Helvetica, sans-serif;
}
大小:font-size
- 如果给body标签设置字体大小,里面除了标题标签以外都生效
- 标题标签需要另外设置
- 如果没设置字体大小会按照浏览器默认字体大小显示,谷歌默认16px
body {
font-size: 16px;
}
粗细:font-weight
- 开发中提倡使用数字表示,400=normal,700=bold
.bold {
font-weight: 400;
}
样式:font-style
- 项目中很少把文字变成斜体
- 可以把斜体em标签变成正常样式 normal
em {
font-style: normal;
}
复合属性:font
- 必须严格按照格式顺序: font: font-style font-weight font-size/line-height font-family
- 可以部份省略,但是font-size font-family两属性必须保留
body {
font: italic 400 16px 'Microsoft Yahei'
/* 可以省略样式和粗细 */
font: 16px/24px 'Microsoft Yahei'
/* 行高不写单位代表是当前文字大小的1.5倍 */
font: 16px/1.5 'Microsoft Yahei'
}
文本属性
颜色:color
- 开发中一般会用取色器得到想要的颜色
p {
color: #1696ec;
}
水平对齐:text-align
- 盒子里面文字左中右水平对齐
p {
text-align: center;
}
装饰:text-decoration
- none默认没有线、underline下划线、overline上划线、line-throuh删除线
- 常用来把超链接标签的下划线去掉
a {
text-decoration: none;
}
首行缩进:text-indent
- 缩进文字em单位
- 可以缩进像素px
p {
text-indent: 2em;
}
行高行间距:line-height
- 行高=上间距+文字高度+下间距
p {
line-height: 26px;
}
引入方式
内部样式
- 放在html内部,又称为嵌入式
- 适合做练习
行内样式
- 放在标签内部,多个样式要用分号隔开
- 只适合修改样式比较少的情况
虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。
外部样式
- 建css文件存放所有css代码,然后html引入
- 项目开发常用
emmet语法
生成标签
指定元素数量:div*3
指定包含结构:div>span
指定兄弟关系:div+p
指定类名:.nav
指定id名:#userId
指定标签加类名:p.nav
指定数量自增类名:.nav$*5
指定标签里的文件:div{文字}
$和*可以灵活运用
生成样式
支持缩写
w100 = width: 100px
h100 = height: 100px
ti2em = text-indent: 2em
复合选择器
后代选择器
- 里面所有符合的都选中
- 如果存在多组相同组合标签,应该在需要修改样式的那组标签添加类,然后用类名作为父层
ul li {
color: red;
}
子选择器
- 在下一层查找
div > a {
color: red;
}
并集选择器
- 用逗号分隔
div,
p,
.nav ul li {
color: red;
}
伪类选择器
1.链接伪类选择器
- 为了确保生效,必须lvha的顺序配置
- 就算body设置了样式,a标签都要独设置样式才会生效
2.焦点伪类选择器
- 获得光标的元素
input:focus {
background-color: skyblue;
}
元素显示模式
块元素
h1~h6,p,div,ul,ol,li
行内元素
- 不能设置宽高
a,strong,b,em,i,span,u
行内块元素
- 可以设置宽高
img,input,td
元素显示模式转换
- 转块元素
a {
display: block;
}
- 转行内元素
div {
display: inline;
}
- 转行内块元素
span {
display: inline-block;
}
单行文字垂直居中
- 让行高等于盒子高
div {
height: 40px;
line-height: 40px;
}
背景
1.背景颜色 background-color
a:hover {
background-color: #ff6700;
}
2.背景图片 background-image: url(路径)
- 图片压着背景颜色
div {
/* 默认平铺 */
background-image: url();
/* 不平铺 */
background-repeat: no-repeat;
/* x轴平铺 */
background-repeat: repeat-x;
/* y轴平铺 */
background-repeat: repeat-y;
}
3.背景图位置 background-position: center center;
- 后面的名词没有顺序要求,如果只写一个,第二个就默认居中
div {
background-color: skyblue;
width: 200px;
height: 200px;
background-image: url(img/1.png);
/* 不平铺 */
background-repeat: no-repeat;
background-position: center center;
}
- 大图作为背景图设置
body {
background-image: url(img/bg.png);
background-position: center top;
}
- 精确单位 X坐标 Y坐标,如果只写一个,另外一个默认居中
body {
background-position: 20px 30px;
}
- 混合单位 X坐 Y坐标
body {
background-position: center 20px;
}
4.图像固定 background-attachment
- 默认scroll随着屏幕滚动而滚动
- fixed屏幕滚动,但背景不动,可以制作视差滚动效果
body {
background-image: url(img/bg.png);
background-position: center top;
background-attachment: fixed;
}
5.背景复合写法 background
- 开发中提倡使用
- 一般约定顺序为background: 背景颜色 背景图片 背景平铺 背景图像滚动 背景图片位置
body {
background: red url(image.jpg) no-repeat fixed top center;
}
6.背景半透明 background: rgba(0,0,0,透明度)
- 透明度的0可以省掉 background: rgba(0, 0, 0, .3);
- 关于背景设置的都变成透明,但内容不受影响
body {
background: rgba(0, 0, 0, 0.3);
}
三大特性
层叠性
- 就近形式
- 如果选择器相同,但属性没有冲突,不会覆盖
- 如果属性冲突会被覆盖
继承
- 父标签会被子标签继承某些样式
跟文字相关的样式会被继承,text-,font-,line- 开头的元素,以及color属性会被继承
优先级
- 选择器相同,执行层叠性
- 选择器不同,优先权重执行,要学会计算权重
无限 , 0 , 0 , 0 , 0 , 0
!important > 行内样式 > ID选择器 > 类选择器,伪类选择器 > 元素选择器 > 继承/*
要记住继承过来的样式优先级最少
复合选择器会有权重叠加 如:ul lu {}
- 为了避免权重问题,最好把父节点也选中 .nav .banner{}
盒子模型
边框 border
1.粗细 border-width
- 一般用px为单位
2.样式 border-style
- 实线边框 solid
- 虚线 dashed
- 点线 dotted
3.颜色 border-color
4.边框复合写法
- border: 粗细 模式 颜色
div {
border: 1px solid red;
}
5.拆分边框
- border-top、border-bottom、border-left、border-right
- 下面的样式会把上面的样式覆盖掉,所以想把上边框变成蓝色要这样写,顺序不能乱
div {
border: 1px solid red;
border-top: 1px solid blue;
}
6.相邻边框合并 boder-collapse: collapse;
- 可以解决表格里单元格之间的边框变粗的问题
7.盒子的大小不包含边框
- 开发中可以把边框像素计算进去盒子的大小
可以采取盒子大小减去边框*2
内边距 padding
- padding-left , padding-right ,padding-top ,padding-bottom
- 复合写法 padding: 上 右 下 左
如果只写1个:上下左右都是
如果只写2个:10px 20px 代表上下边距为10px 左右边距为20px
如果只写3个:10px 20px 30px 代表上10px 左右20px 下30px
div {
padding: 5px 10px 15px 20px;
}
- 内边距大小会影响盒子的大小
可以采取盒子大小减去内边距大小*2
- 如果遇到每个盒子里面的文字数量不同,会出现文字之间的间距有大有小
为每个盒子设置一个左右内边距,盒子不设置大小,这样文字之间的间距就都一样了
- 不管伸缩盒还是浮动盒子,只要使用到padding,就必须使用
box-sizing: border-box;
外边距 margin
- 控制盒子之间的距离 margin-left margin-right margin-top margin-bottom
- 复合写法 margin: 上 右 下 左 和padding完全一致
- 典型应用:中平居中
/* 盒子设置宽度 左右外边距自动 */
width: 400px;
margin: 0 auto;
- 想要盒子里面的行内或者行内块元素居中,设置盒子样式居中
text-align: center;
- 嵌套元素外边距会塌陷
子元素设置外边距会让父元素塌陷,解决方法有:
为了行内元素兼容性,尽量只设置左右内外边距,不要设置上下内外边距(不会生效)
但是转换为块级或者行内块元素就可以使上下边距生效
- 清除内外边距
* {
padding: 0;
margin: 0;
}
去掉li小圆点
list-style: none
圆角边框 border-radius
border-radius: 10px;
- 圆形
border-radius = 正文形盒子边长 / 2
或者 border-radius = 50%
- 复合写法:border-radius: 左上角 右上角 右下角 左下角
跟padding一样
- 分开来写
border-top-left-radius ................border-bott-left-radius............
盒子阴影 box-shadow
- box-shadow: X轴 Y轴 虚实度 大小 颜色;
box-shadow: 10px 10px 10px -2px rgba(0, 0, 0, 0.3);
文字阴影 text-shadow
- 跟上面一样
浮动 float
- 纵向用标准流 横向用浮动
- 设置了浮动的盒子会脱标,原来的位置会被其它标准流的元素占有
- 都是一行显示,当浏览器太小一行不能显示全部的时候会自动第二行显示
- 具有行内块元素特性,可以设置宽高
清除浮动 clear
- 解决父元素不方便给高度,子元素设置浮动后,父元素高度会变成0
方法1.在最后一个浮动元素后加一个块级元素空标签,样式设置clear: both 无用标签太多
方法2.给浮动元素的父元素设置overflow: hidden 方便但是有溢出问题
方法3.使用伪元素 相当于方法1,但没有无用标签
/* 给父元素加上clearfix */
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
/* 为了兼容IE6 7*/
*zoom: 1;
}
方法4.双伪元素 相当于前后加空标签
/* 给父元素加上clearfix */
.clearfix:before,.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
/* 为了兼容IE6 7*/
*zoom: 1;
}
样式结构书写顺序
- 布局结构
- 盒子属性
- 内容属性
- CSS3属性
导航链接书写
- 统一用li包含a标签的书写方式
- 如果不用li包含a标签会被搜索引擎判定为堆砌关键字,降权网站处理,被搜到的几率大大减少
定位 position
- 让盒子在某个盒子内移动位置或者固定到屏幕中一个位置,并且可以压住其它盒子
- 定位模式 + 边偏移
定位模式
- 静态定位:static(没用)
- 相对定位:relative
根据自己原来位置来移动,并且移动后会压着新位置上的盒子
原来位置仍然保留,其它盒子不会占有
使用场景:父元素使用,保留位置,不让其它盒子占有,稳定结构
- 绝对定位:absolute
情况1:如果没有父元素或者父元素没有定位属性,会以浏览器为准定位
情况2:如果父元素有除了静态定位以外的定位属性,会以最近的带有定位属性的父元素为准定位
原来的位置不会再保留,其它盒子会占有旧位置
使用场景:子元素使用,在父元素上面自由移动位置
- 固定定位:fixed
固定到浏览器可视窗口指定位置上,页面怎么滚动都会在窗口显示,并且压着其它盒子,不占有位置
永远靠着板心:
浏览器宽度的50%
margin-left:板心50%
- 粘性定位:sticky
可以设置盒子随着滚动条滚动而滚动,但是到了指定位置后让盒子固定在窗口显示
兼容性差,不支持IE
- 叠放次序:z-index
大的会把小的压住
只有定位属性才有的属性
- 水平居中
left:50%
margin-left: 负盒子的一半宽
- 垂直居中
top:50%
margin-top: 负盒子的一半高
- 行内和块级元素都可以加绝对定位属性
可以添加宽高
- 浮动不会压文字以及图片,但是绝对定位会压住
边偏移
- top right bottom left
元素显示与隐藏
- display属性
display: none; 隐藏对象,不再占有原来位置,用得最多
display: block; 转成块级元素或者 显示元素
- visibility属性
visibility: hidden 隐藏元素后会继续占有原来位置
visibility: visible 显示元素
- overflow 溢出内容显示与隐藏
overflow: hidden 超出多部分内容不显示
overflow: scroll 永远出现滚动条
overflow: auto 如果有超出会出现滚动条,没有超出不会显示
- 注意
定位元素的父元素慎用overflow: hidden,因为它会把超出盒子的定位元素隐藏了。
精灵图
- 把所有小图片放到一张图片里,减少服务器响应图片请求的压力
用FW软件里的切片工具把需要的小图片框起来,得到大小设置盒子大小,X轴和Y轴设置背景,换成负值
background-position: -x轴 -y轴
background: url(路径) no repeat -x轴 -y轴
字体图标
- 显示的图标都是文本,好处是体积小放大不失真不会请求服务器 ,精灵图属于图片体积大
- 适合简单的小图标
- 不能替代精灵图,因为复杂的图片字体图标无法做到
三角形书写
- 盒子宽高设置0
- line-height: 0 兼容性
- font-size: 0 兼容性
- border: 10px solid transparent 设置边框实线透明色
- border-left-color: 颜色 设置左边为底的三角形颜色
界面模式
鼠标样式 cursor
- pointer 小手
- move 移动
- text 文本
- not-allowed 禁止
input轮廓线 outline
- outline: 0或者none 取消
textarea防止拖拽 resize
- resize: none
书写时记得要一行写完textarea
图片和文字对齐方式 vertical-align
图片是行内块元素
- middle 居中
- 行内块元素vertical-align + 文字更搭配
解决图片底部空白缝隙
因为图片默认和文本基线对齐,解决有以下两种方法:
- vertical-align: middle/top/bottom 改变图片对齐方式
- display: block 把图片转变成块级元素
溢出文本显示省略号
单行文本溢出显示省略号
多行文本溢出显示省略号
布局技巧
解决盒子边框合并变粗
- 先把所有盒子浮动,然后margin-left: -1px
- 如果没有定位情况下需要添加鼠标经过显示边框效果
ul li:hover {
/*把当前盒子变成定位,压住其它盒子并且保留位置*/
position: relative;
/*加边框颜色*/
border: 1px solide color;
}
- 如果有定位情况下需要添加鼠标经过显示边框效果
ul li:hover {
/*提高层级*/
z-index: 1;
/*加边框颜色*/
border: 1px solide color;
}
文字环绕图片
把图片设置为浮动
直角三角形
width: 0;
height: 0;
border-color: transparent #fff #fff transparent;
border-style: solid;
border-width: 40px 20px 0 0;
CSS初始化
- 初始化所有元素,可以参考京东网站
- 为了兼容性中文字需要用unicode编码使用
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
legend,
button form,
fieldset,
input,
textarea,
p,
blockquote,
th,
td {
padding: 0;
margin: 0;
border: 0;
box-sizing: border-box;
}
/* 设置网页统一的字体大小、行高、字体系列相关属性 */
body {
font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei",
"Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif;
color: #333;
}
/* 去除默认的倾斜效果 */
em,
i {
font-style: normal;
}
/* 清除列表样式 */
ol,
ul {
list-style: none;
}
img {
/* 取消图片底侧有空白缝隙的问题 (也可以display:block)*/
vertical-align: middle;
}
button,
input {
/* 当我们鼠标经过button 按钮的时候,鼠标变成小手,并且去除轮廓线,设置文字颜色 */
cursor: pointer;
outline: none;
color: #333;
}
/* 左浮动 */
.fl {
float: left;
}
/* 右浮动 */
.fr {
float: right;
}
/* 清除a的下划线,并设置默认文字颜色 */
a {
text-decoration: none;
color: #333;
}
/* 双伪元素清除法 */
.clearfix::before,
.clearfix::after {
content: "";
display: table;
}
.clearfix::after {
clear: both;
}
/* 项目的版心 */
.w {
width: 1200px;
margin: 0 auto;
}
/* 设置表格的边框被合并为一个单一的边框, 指定分隔边框模型中单元格边界之间的距离为0*/
table {
border-collapse: collapse;
border-spacing: 0;
}
HTML5新特性
为了让搜索引擎区分内容,请使用新特性标签
结构标签
- aside侧边栏
- article内容
- section区域,相当于div
多媒体标签
- audio音频 使用MP3格式全兼容
autoplay="autoplay"自动播放
controls="controls"播放控件
loop="loop"循环播放
muted="muted"静音
- video视频 使用MP4视频格式全兼容
/*一般这样写就可以了*/
/*为了兼容火狐浏览器,这个了解就行*/
从上到下执行,能兼容就会运行
谷歌浏览器禁止了自动播放功能,但是使用muted静音可以解决
/*autoplay自动播放 muted静音*/
controls="controls"显示播放器控件
loop="loop"循环播放
poster="图片路径" 加载视频前显示的图片
input
- type
email url date time month week number tel search color
- 放在form标签里提交会自动验证
- required placeholder autofocus autocomplete multiple
CSS3新特性
- 属性选择器
权重为10
input[属性名] 例如:选中带有value属性的输入框 input[value]
input[attr=属性值] 例如:input[type=text]
div[attr^=名字]以什么开头的元素都选中 例如:div[attr^=nav]
div[attr$=名字]以什么结尾的元素都选中 例如:div[attr$=nav]
div[attr*=名字]带有什么的元素都选中 例如:div[attr*=nav]
- 结构伪类选择器
E:first-child第一个
E:last-child最后一个
E:nth-child(n)指定第几个
执行顺序section div:nth-child(1) 是先找到section里面的第1个,再看是不是div
隔行变色:n可以是even偶数,odd基数
如果写n:默认选中全部 从0开始,每次加1
如果n写成公式:2n 即 0*2,1*2,2*2 ,...
5n : 5的倍数
n+5 :从第5个开始
-n+5:前5个,包括第5个
E:first-of-type指定类型第一个
E:last-of-type指定类型最后一个
E:nth-of-type(n)指定类型第几个
执行顺序section div:nth-of-type(1) 先看section里的div,再看第1个
- 伪元素选择器 频繁使用在元素内加效果
权重为2
content属性必须有
::before 在元素内部前面插入内容
::after 在元素内部后面插入内容
div::before {
content: "我";
width: 100px;
height: 100px;
background-color: red;
}
div::after {
content: "red";
width: 100px;
height: 100px;
background-color: red;
}
/*鼠标经过nav显示*/
.nav {
width: 100px;
height: 100px;
background-color: red;
}
.nav::after {
content: "133";
display: none;
}
.nav:hover::after {
display: block;
}
伪元素清除浮动
.clearfix::after {
content: '';
display: block;
clear: both;
visibility: hidden;
height: 0;
}
- 完全闭合清除浮动
.clearfix::after,
.clearfix::before {
content: "";
display: table;
}
.clearfix::after {
clear: both;
}
CSS3盒子模型
- box-sizing
默认box-sizing:content-box 跟以前一样 盒子大小=width+边框+内边距
box-sizing:border-box 边框和内边距不会影响盒子大小
css3其它特性
- filter: 函数(5px)
filter: blur(5px); 设置模糊
- calc计算 +-*/
width:calc(100%-80px) 比父盒子少80像素
CSS3过渡
- transition 动画效果
和hover搭配使用
transition: 属性 时间 运动曲线(可以省略,默认ease) 开始时间(可以省略,默认0s)
/* 谁想有效果都给谁用 */
transition: width 0.2s ease 1s;
多属性都变化
transition: width .3s, height .2s;
/*所有属性都生效*/
transition: all .2s;
项目规划
模块化
样式一样的放到一个公共样式common.css文件里,用到的地方引进
- header footer都是相同的样式
SEO优化
为了搜索引擎更容易搜到我们的网站
- title 网站标题
网站名-网站介绍 不超过30个汉字
- description 说明
简要说明网站主要是做什么
- keywords 关键字
6 - 8个关键词,用逗号隔开,越靠前权重越高
- logo 标志
1.放一个h1标签
为了提权
2.放一个链接
首页链接
3.放一个网站名称文字,但不要显示出来
设置font-size:0
4.给链接一个title属性
鼠标在上面可以看到提示文字
项目注意
购物车泡泡数量需要右对齐定位
商品分类和下拉子分类不要拆开 dt dd
轮播图要放ul li里,因为滚动是ul
选项卡标题tab_list 内容tab_content
一行里每一列都有不同宽度的可以命名col_宽度
a标签包含有宽度的盒子,需要把a转为块级元素
引入的公用样式需要写在上面,页面引入的独有的样式写在下面
发现上面的盒子影响下面的盒子,可以为上面的盒子设置overflow:hidden
免费服务器http://free.3v.do
CSS3 2D转换
移动 transform
- 不会影响其它元素位置
- 移动后会压着其它元素
- 对行内标签不生效
/*transform: translate(X轴, Y轴);*/
transform: translate(100px, 100px);
/*只移动X轴*/
transform: translateX(100px);
/*只移动Y轴*/
transform: translateY(100px);
/*百分比是相对于自身大小来算的*/
transform: translateY(50%);
-
在父盒子里面左右垂直居中
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
旋转 rotate
transform: rotate(45deg);
-
利用旋转画方向图标
width: 30px;
height: 30px;
border: 1px solid black;
border-width: 0 1px 1px 0;
transform: rotate(45deg);
- 动画效果
div {
width: 30px;
height: 30px;
border: 1px solid black;
border-width: 0 1px 1px 0;
transform: rotate(45deg);
transition: all 0.3s;
}
div:hover {
transform: rotate(-135deg);
}
- 中心点设置
/*可以用名词,也可以用百分比或者像素*/
transform-origin: right bottom;
- 盒子内的元素旋转效果
div {
overflow: hidden;
width: 100px;
height: 100px;
background-color: red;
}
div::before {
content: "1";
display: block;
width: 100px;
height: 100px;
background-color: blue;
transform-origin: left bottom;
transform: rotate(90deg);
transition: all 0.3s;
}
div:hover::before {
transform: rotate(0deg);
}
- 缩放scale
以中心点缩放
/*数字是倍数,或者只写一个代表长宽都缩放一样,少于1代表缩小*/
transform: scale(1, 2);
- 综合写法
顺序不能乱,位移优先
transform: translate(100px, 100px) rotate(360deg) scale(0);
-
scale会把盒子的阴影放大
动画
- @keyframes:自定义动画名
- 动画序列,可以有多个。开始状态0% 结束状态100%,也可以from to
- animation-name:动画名 元素调用动画名
- animation-duration:动画需要的时间
@keyframes move {
0% {
transform: translate(1px);
}
50% {
transform: translate(100px, 500px);
/*不透明度*/
opacity: 1;
}
100% {
transform: translate(1000px);
}
}
div {
width: 100px;
height: 100px;
background-color: red;
/* 调用动画名 */
animation-name: move;
/* 动画所需要的时间 */
animation-duration: 4s;
}
- 其它非必要属性
/* 动画曲线默认ease linear是均速*/
animation-timing-function: ease;
/* 何时开始 */
animation-delay: 1s;
/* 重复次数默认1次 infinite无限*/
animation-iteration-count: infinite;
/* 反方向播放动画默认normal */
animation-direction: alternate;
/* 动画结束后元素停留默认ba