CSS3
新增盒模型属性
border-radius
:设置圆角,设置百分比是以自身为单位值1
:四角值1 值2
:左上右下角,右上左下角值1 值2 值3
:左上角,右上和左下角,右下角值1 值2 值3 值4
:左上角,右上角,右下角,左下角
box-shadow
:设置盒阴影值1
:影子水平偏移量值2
:影子垂直偏移量值3
:模糊度,不能为负数,默认为0值4
:影子的尺寸,默认为0px与元素一样大值5
:影子的颜色,默认透明值6
:内外阴影,默认外阴影,inset
为内阴影
新增样式属性
背景样式
background-clip
:背景裁剪border-box
:背景被裁剪到边框,默认padding-box
:背景被裁剪到内边距content-box
:背景被裁剪到内容区
background-origin
:背景图片偏移锚点位置border-box
:边框左上角,默认padding-box
:内边距左上角content-box
:内容区左上角
background-size
:背景图片大小,有两个值,水平方向上和垂直方向上,百分比是以盒子为准,只写一个值另一个默认为auto会自动等比例缩放cover
:填充整个盒子contain
:显示整张图片
background-image
:可以设置多张背景图片,用逗号分隔URL函数,在前面的层级高,用来制作带水印的图片background-color
:可以设置多个背景颜色,用逗号分隔颜色,在前面的层级高,通过渐变函数能制作特殊的背景background
:简写,不区分先后顺序,建议颜色 url() no-repeat 水平偏移 垂直偏移
,其他的还是分开写
渐变函数
- 渐变函数只能用于背景颜色和背景图片;
- 至少有两个颜色
- 省略渐变宽度默认第一个0%,最后一个100%,中间每个颜色宽度平均分配,若有不符合从小到大的顺序的,将按照边界值算
- 第一个和最后一个比较特殊,是从自己过渡到自己的颜色,所以若不是默认值则会是自己的颜色;
线性渐变
函数名 | 描述 |
---|---|
linear-gradient([direction,]...color [渐变宽度]) |
渐变方向是钟表方向,也可以是to 方位词1 方位词2 决定渐变方向,默认从上到下180deg; |
repeating-linear-gradient([direction,]...color [渐变宽度]) |
重复线性渐变,与普通线性渐变一样,只不过若不将所有渐变宽度用完,则会重复颜色渐变,直到所有渐变宽度用完 |
径向渐变
函数名 | 描述 | |
---|---|---|
radial-gradient([圆心位置,][渐变形状 渐变尺寸,]...color [渐变宽度]) |
默认圆心在盒子中间,若是具体数值则参照盒子定位,若是百分比则参照盒子的宽度,渐变形状和渐变尺寸默认是`ellipse closest-corner | farthest-corner椭圆形状和最近角|最远角,因为此时最近角和最远角是一样的,渐变形状还可以设置为 circle圆,渐变方向还可以设置为 closest-side最近边和 farthest-side`最远边 |
repeating-radial-gradient([圆心位置,][渐变形状 渐变尺寸,]...color [渐变宽度]) |
重复径向渐变渐变,与普通径向渐变一样,只不过若不将所有渐变宽度用完,则会重复颜色渐变,直到所有渐变宽度用完 |
文本样式
text-shadow
:文本阴影值1
:影子水平偏移量值2
:影子垂直偏移量值3
:影子模糊度,不能为负,默认为0值3
:影子颜色,默认前景色
word-break
:文本断开规则,换行规则break-all
:该换行就换行,英文会断开单词,中文会不会将标点放在单独一行,和正常一样keep-all
:中文标点符号华换行,英文空格和连字符换行
word-wrap:break-word
:英文单词会断开,中文无效果text-overflow
:文本溢出,一定要配合overflow:hidden
使用clip
:溢出裁剪ellipsis
:溢出省略号显示,需要在配合white-space:nowrap
使文字不换行
字体样式
-
自定义字体
@font-face{ /*自定义规则,字体声明*/ font-family:"fontName"; /*为自定义字体起名*/ src:url("font.woff") format("woff"); /*url引入字体文件,format说明字体文件格式*/ /* 常见的字体格式 后缀 类型 *.eot embedded-opentype ie浏览器专用的嵌入式字体格式 ,ie浏览器支持 *.woff woff ttf或otf的压缩版本,web open font format简写,现代浏览器都支持 *.ttf truetype windows和mac系统字体 ,safari浏览器、苹果和安卓系统 *.otf opentype ttf格式基础上的字体 *.svg svg 矢量图字体 ,其他浏览器和苹果系统 */ /*一般将常用字体格式放上面,*/ }
CSS3变形
transform
:声明变行,属性值可以是一个或多个变形函数,用空格隔开transform-origin:x y z
:设置变化参考点,默认是50% 50% 0,可以使用百分比、具体值、也可以是方位词
特点:不会影响其他元素,原位置保留,类似相对定位,默认
2D变形
函数名 | 描述 | 参数说明 |
---|---|---|
rotate(angle) |
几何中心旋转 | 旋转角度,正数顺时针,单位deg默认0度 |
translate(X,Y) |
相对于左上角平移 | 平移长度,正数向右和下,百分比参照自身宽度和高度,若只有一个参数则是水平方向 |
scale(X,Y) |
几何中心缩放 | 水平和垂直缩放系数,若只有一个参数则是等比例缩放,默认是1 |
skew(Xangle,Yangle) |
几何中心扭曲 | 水平和垂直斜切角度,正数是逆时针,单位deg默认0度,若只有一个参数则是水平方向 |
3D变形
函数名 | 描述 | 参数说明 |
---|---|---|
rotate3d(x,y,z,angle) |
3d旋转 | x、y、z是绕不同坐标轴旋转的程度,0-1之间的数字,angle是旋转角度,参数不允许省略 |
translate3d(X,Y,Z) |
3d平移 | 平移长度,正数是向右、下、屏幕外,参数不允许省略 |
scale3d(X,Y,Z) |
3d缩放 | 三个方向的缩放系数,参数不允许省略 |
矩阵变换
matrix(a, b, c, d, tx, ty)
:变化矩阵如下,要注意的是这个2d变化矩阵是3d变化矩阵的转置矩阵
matrix3d(a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4)
:变化矩阵如下
CSS3过渡
注意
- 过渡一定要有事件发生才能发生过渡效果
- 在事件选择器中的写过渡,只有到来的这个时间段有效果,在普通选择器中写过渡,到来和回去的时候都有效果
transition-property
:设置要过渡的属性,可以是all
也可以是具体的属性名,多个用逗号隔开,默认是all
transition-duration
:设置过渡持续时间,单位秒(s)或毫秒(ms),默认0transition-timing-function
:设置过渡时间曲线linear
:线性过渡,匀速ease
:平滑过渡,由慢到快(加速度不一样),默认ease-in
:由慢到快(加速度一致)ease-out
:由快到慢(加速度一致)ease-in-out
:慢快慢(加速度一致)steps(步数[,start|end])
:进步函数,第二个参数可省默认end,可通过长时间短步数观察end和start的区别cubic-bezier()
:贝塞尔曲线运动函数,0-1之间的四个数
transition-delay
:设置过渡延时,单位秒或毫秒,默认0transition:property duration timing-function delay
:简写,注意顺序
CSS3动画
- 关键帧
@keyframes name{ /*像函数一样,指定关键帧动画的名字*/
0%{/*css过渡样式*/} /*from等价于0%*/
100%{/*css过渡样式*/} /*to等价于100%*/
}
-
animation-name
:调用的动画名称 -
animation-duration
:动画持续时间,默认0 -
animation-timing-function
:动画时间曲线,与过渡时间曲线一致,请参照过渡动画时间曲线 -
animation-delay
:动画延时,默认0 -
animation-iteration-count
:动画迭代次数infinite
:无限次- 具体次数,默认1次
-
animation-direction
:动画方向normal
:正方向reverse
:反方向alternate
:先正在反交替执行,必须循环次数大于一次才有效果alternate-reverse
:先反在正交替执行,必须循环次数大于一次才有效果
-
animation-fill-mode
:设置动画播放前后动画效果是否可见(动画初始和结束状态与元素状态不一致时效果明显)none
:动画不改变元素状态forwards
:保留最后一帧动画backwards
:延时期间使用动画中的第一帧both
:即使用第一帧又使用最后一帧
-
animation-play-state
:设置动画状态paused
:暂停动画running
:运行,默认
-
animation
:简写,动画名称和持续时间是必须的,写在最前面;若只有一个时间则是持续时间,两个时间,则第一个时间是持续时间第二个是延时时间;其他的无序管顺序 -
will-change:要过渡的属性名
:只有3d动画才能使用GPU加速,适当的使用该属性可以提升动画渲染的效率,一般使用js来控制该属性
FlexBox
使用display:flex
设置为块级弹性容器或display:inline-flex
设置为行内弹性容器
弹性容器的子元素就是弹性项,要注意的是只是子元素是弹性项,而孙元素及后代的元素不是弹性元素,并且子元素的float
、clear
和vertical-align
属性将失效
一个元素可以既是弹性容器又是弹性项,所以可以嵌套定义
弹性容器样式
flex-direction
:主轴方向row
:从左到右,默认row-reverse
:从右到左column
:从上到下column-reverse
:从下到上
flex-wrap
:容器中的弹性项换行规则nowrap
:不换行wrap
:自动换行wrap-reverse
:自动换行后交叉轴方向翻转
flex-flow
:上两个属性的简写属性,没有顺序要求justify-content
:主轴上元素在主轴方向的排列方式(理解为元素在水平方向排列)flex-start
:主轴起边对齐flex-end
:主轴终边对齐center
:主轴居中对齐space-around
:主轴两端对齐,每个弹性项的空白都是一样的,所以首尾元素的贴边空白比中间元素的空白的少一半space-between
:主轴两端对齐,首尾元素贴边,其他元素被空白平均围绕在弹性项的周围space-evenly
:主轴两端对齐,空白平均围绕在弹性项的周围
align-items
:主轴上元素在交叉轴方向的排列方式(理解为元素在垂直方向排列)stretch
:伸展对齐,保证同一主轴上的元素大小一致,默认flex-start
:交叉轴起边对齐flex-end
:交叉轴终边对齐center
:交叉轴居中对齐baseline
:文字基线对齐
align-content
:交叉轴上的多个主轴排列方向(理解为主轴线的的排列方式)flex-start
:交叉轴起边对齐,默认flex-end
:交叉轴终边对齐center
:交叉轴居中对齐space-around
:交叉轴两端对齐,每个主轴的空白都是一样的,所以首尾主轴元素的贴边空白比中间主轴元素的空白的少一半space-between
:交叉轴两端对齐,首尾元素贴边,其他元素被空白平均围绕在弹性项的周围space-evenly
:交叉轴两端对齐,空白平均围绕在弹性项的周围
弹性项样式
flex-grow
:伸展系数,默认为0不伸展flex-shrink
:收缩系数,默认为1,若设置为0不收缩flex-basis
:元素在主轴上的基础长度,默认auto
参考元素设置的宽高flex
:上述三个属性的简写属性,顺序要求flex-grow
、flex-shrink
、flex-basis
order
:弹性项会按照此属性设置的值大小来排列顺序,数值越小越靠前,默认0align-self
:用来覆盖弹性容器设置的align-items
属性,设置自己的在交叉轴方向上的排列方式
理解对齐方式属性
- 对于
justify-content
、align-items
和align-content
来说,都是对齐属性 justify
前缀代表的是主轴方向(默认水平方向),align
前缀代表交叉轴方向(默认垂直方向)content
后缀代表的是当容器内容部分的出现剩余空间时的排列方式,items
后缀代表的是当前项相对与其他项目的对齐方式- 对于网格布局也是如此
GridBox
使用display:grid
设置为块级网格容器或display:inline-grid
设置为行内网格容器
弹性容器的子元素就是网格项,要注意的是只是子元素是网格项,而孙元素及后代的元素不是网格元素,并且子元素的float
、display: inline-block
、display: table-cell
、vertical-align
和column-*
属性将失效
一个元素可以既是网格容器又是网格项,所以可以嵌套定义
网格容器样式
grid-template-columns
:划分每一列的宽度,用空格隔开,可以是百分比和具体值,也使用fr
单位表示所占的份数,也可以使用repeat()
和minmax()
函数grid-template-rows
:划分每一行的高度,用空格隔开,可以是百分比和具体值,也使用fr
单位表示所占的份数,也可以使用repeat()
和minmax()
函数grid-auto-columns
:与grid-template-columns
用法一致但是只有一个参数,当超过设置的网格个数时自动添加的网格列宽,若不设置此属性则会以内容大小来决定超过设置的网格大小grid-auto-rows
:与grid-template-rows
用法一致但是只有一个参数,当超过设置的网格个数时自动添加的网格行高,若不设置此属性则会以内容大小来决定超过设置的网格大小grid-row-gap
:设置行间距,默认是0grid-column-gap
:设置列间距:默认是0grid-gap
:设置行列间距的简写属性,顺序要求:grid-row-gap
、grid-column-gap
,若只写一个值,则行列间距相等grid-auto-flow
:元素放置顺序row
:先行后列,默认column
:先列后行dense
:紧密放置,尽可能的不会出现空位
justify-items
:元素相对于自己单元格的水平对齐方式stretch
:伸展对齐start
:始边对齐(左对齐)end
:终边对齐(右对齐)center
:居中对齐
align-items
:元素相对于自己单元格的垂直对齐方式stretch
:伸展对齐start
:始边对齐(上对齐)end
:终边对齐(下对齐)center
:居中对齐
justify-content
:单元格的水平对齐方式start
:起边对齐(左对齐),默认end
:终边对齐(右对齐)center
:居中对齐space-around
:两端对齐,每个单元格的空白都是一样的,所以首尾单元格的贴边空白比中间单元格的空白的少一半space-between
:两端对齐,首尾元素贴边,其他元素被空白平均围绕在单元格的周围space-evenly
:两端对齐,空白平均围绕在单元格的周围
align-content
:单元格的垂直对齐方式start
:起边对齐(上对齐),默认end
:终边对齐(下对齐)center
:居中对齐space-around
:(上下两端)两端对齐,每个单元格空白都是一样的,所以首尾单元格的贴边空白比中间单元格的空白的少一半space-between
:(上下两端)两端对齐,首尾单元格贴边,其他元素被空白平均围绕在单元格的周围space-evenly
:(上下两端)两端对齐,空白平均围绕在单元格的周围
网格项样式
align-self
:用来覆盖网格容器设置的align-items
属性,设置自己的在单元格水平方向上的排列方式justify-self
:用来覆盖网格容器设置的justice-items
属性,设置自己的在单元格垂直方向上的排列方式grid-column-start
:左边框所在的网格线,从一开始否则无效,可接受span n
表示从当前位置跨越n个网格元素grid-column-end
:右边框所在的网格线,从一开始否则无效,可接受span n
表示从当前位置跨越n个网格元素grid-column
:上两个属性的简写属性,采用/
分隔,表示从那个网格线跨越到那个网格线,同样可以使用span n
grid-row-start
:上边框所在的网格线,从一开始否则无效,可接受span n
表示从当前位置跨越n个网格元素grid-row-end
:下边框所在的网格线,从一开始否则无效,可接受span n
表示从当前位置跨越n个网格元素grid-row
:上两个属性的简写属性,采用/
分隔,表示从那个网格线跨越到那个网格线,同样可以使用span n
网格标签模板
在容器中通过grid-template-areas
属性定义模板,该模板使用类似矩阵样式的字符串形式,每一个双引号字符串都代表一行,例如:
body {
display: grid;
grid-template-areas:
"header header header" /*设置header标签的元素会自动占据三个单元格,无需做跨行操作*/
"body1 body2 body3"
"foot foot foot";
}
在网格项中通过grid-area
属性指定该项所属标签中的哪一个位置,这里不需要加双引号,就像标签是变量一样,例如:
.item {
grid-area: body2;
}
媒体查询
语法
mediaType and (query)
:多个条件可以使用多个and
连接,若是或则使用逗号连接而不是or
在最前面使用not
则是对整个and
语句的否定,也就是说使用逗号是分开的
- 媒体类型
all
:全部设备,默认,不写时and
也不能写print
:打印设备screen
:屏幕设备speech
:屏幕阅读器设备
- 查询语句
max-width
:小于等于该宽度值min-width
:大于等于该宽度值orientation
:屏幕旋转方向landscape
:横屏portrait
:竖屏
使用方式
注意使用顺序,一般小屏幕优先
link
和style
标签上使用media
属性
<link rel="stylesheet" href="style.css" media="screen and (min-width : 768px)">
<style media="screen and (min-width : 768px)">
/* code */
</style>
- CSS中使用
@media
和@import
时
@import url("style.css") screen and (min-width: 768px);
@media screen and (min-width: 768px){
/* code */
}
Comments NOTHING