CSS3
CSS用于控制网页的样式和布局。
CSS3是最新的CSS标准
CSS3划分出的模块
- 选择器
- 框模型
- 背景和边框
- 文本效果
- 2D/3D转换
- 动画
- 多列布局
- 用户界面
CSS3边框
圆角边框
在CSS3中border-radius属性用于创建圆角
div{
border:solid 1px #eee;
border-radius:25px;
}/*向该div元素添加圆角*/
边框阴影
div{
box-shadow:2px 2px 5px #ddd;
/*属性分别对应 横向偏移 左为正 右为负
纵向偏移 下为正 上为负
阴影模糊程度
阴影颜色*/
}
边框图片
border-image: source slice width outset repeat|initial|inherit;
值 | 描述 |
---|---|
border-image-source | 用于指定要用于绘制边框的图像的位置 |
border-image-slice | 图像边界向内偏移 |
border-image-width | 图像边界的宽度 |
border-image-outset | 用于指定在边框外部绘制 border-image-area 的量 |
border-image-repeate | 用于设置图像边界是否应重复(repeat)、拉伸(stretch)或铺满(round)。 |
CSS3背景
CSS3 background-size属性
用于调整背景图片大小,可以使用像素或百分比规定尺寸。
div{
background:url("image.gif");
background-size:50px 20px;/*使用百分比调整大小可以使图片基于父元素铺满填充区域*/
background-repeat:no-repeat;
}
CSS3 background-origin 属性
background-origin属性规定背景图片的定位区域
背景图片可以放置于content-box、padding-box或border-box区域。
CSS3 多重背景图片
body{
background-image:url(image1.gif),url(image2.gif);
}
CSS3文本效果
CSS3文本阴影
h1{
text-shadow:5px 5px #f00;
}/*为标题添加阴影*/
CSS3自动换行
p{word-wrap:break-word};/*允许对单词进行拆分,并进行换行*/
CSS3 2D转换
translate() 方法
根据给定的left和top坐标,元素从当前位置移动
div{
transform:translate(50px,20px);
}/*元素从当前位置向左侧移动50px,向下移动20px*/
rotate() 方法
div{
transform:rotate(90deg);
}/*元素顺时针旋转90度,若为负值为逆时针旋转*/
scacle() 方法
div{
transform:scale(2,1/2);
}/*把宽度转换为原始尺寸的2倍,把高度转换为原始高度的1/2倍*/
skew() 方法
div{
transform:skew(30deg,20deg);
}/*围绕x轴把元素翻转30度,围绕y轴翻转20度*/
3D转换
函数 | 描述 |
---|---|
translateX(x) | 定义 3D 转化,仅使用用于 X 轴的值。 |
translateY(y) | 定义 3D 转化,仅使用用于 Y 轴的值。 |
translateZ(z) | 定义 3D 转化,仅使用用于 Z 轴的值。 |
scaleX(x) | 定义 3D 缩放转换,通过给定一个 X 轴的值。 |
scaleY(y) | 定义 3D 缩放转换,通过给定一个 Y 轴的值。 |
scaleZ(z) | 定义 3D 缩放转换,通过给定一个 Z 轴的值。 |
rotateX(angle) | 定义沿 X 轴的 3D 旋转。 |
rotateY(angle) | 定义沿 Y 轴的 3D 旋转。 |
rotateZ(angle) | 定义沿 Z 轴的 3D 旋转。 |
CSS3 过渡
CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。
div{
transition:width 2s;
}/*宽度属性的过渡,时间为两秒*/
div:hover{
width:200px;
}/*当鼠标悬停在div上时,宽度变为200px*/
CSS3 动画
首先使用@keyframes规则创建动画
@keyframes first{
from{background:#f00;}
to{background:#0f0;}
}
@keyframes second{
0% {background:#f00;}
50% {background:#0f0;}
100% {background:#00f;}
}
使用@keyframes创建动画时,必须把他捆绑在某个选择器上,否则不会生效。
div{
animation:first 3s;
}
CSS3 多列
CSS3创建多列
column-count 属性规定元素被分隔的列数
div{
column-count:3;
}/*将文本分隔为3列*/
CSS3 规定列之间的距离
column-gap 属性规定列之间的间隔
div{
column-gap:20px;
}/*列之间的间隔为20像素*/
CSS3 列规则
column-rule 属性设置列之间的宽度、样式和颜色
div{
column-rule:2px outset #f00;
}
CSS3 弹性盒子
弹性盒子是CSS3的一种新的布局模式
CSS3弹性盒子,是一种当页面需要适应不同的屏幕大小以及设备类型是确保元素拥有恰当的布局方式。
CSS3弹性盒子内容
弹性盒子由弹性容器和弹性子元素构成。
弹性容器通过设置display属性的值为flex将其定义为弹性容器。
弹性容器内包含了一个或多个弹性子元素。
弹性子元素默认情况下在一行内从左到右显示,也可以通过direction属性为rtl(right-to-left),排列方式就会变为从右到左。
弹性内容属性
flex-direction 属性
flex-direction属性指定了弹性子元素在父容器中的位置。
flex-direction的值有:
- row:横向从左到右排列,默认的排列方式。
- row-reverse:反转横向排列,从后往前排,最后一项在最前面。
- column:纵向排列。
- column-reverse:反转纵向排列,最后一项在最上面。
justify-content 属性
justi-content属性应用在弹性容器上。
justi-content的值有:
- flex-start:弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。
- flex-end:弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。
- center:弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。
- space-between:弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。
- space-around:弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。
效果图展示:
align-items 属性
align-items属性设置或检索弹性盒子元素在侧轴方向上的对齐方式。
align-items各个值解析:
- flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
- flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
- center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
- base-line:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
- stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸。
flex-wrap 属性
flex-warp属性用于指定弹性盒子的子元素换行方式。
flex-warp各个值解析:
- nowrap:默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。
- wrap:弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行,
- warp-reverse:反转 wrap 排列。
align-content 属性
align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。
align-content 属性各个值解析:
- stretch:默认,各行将会伸展以占用剩余的空间。
- flex-start:各行向弹性盒容器的起始位置堆叠。
- flex-end:各行向弹性盒容器的结束位置堆叠。
- center:各行向弹性盒容器的中间位置堆叠。
- space-between:各行在弹性盒容器中平均分布。
- space-around:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。
弹性子元素属性
排序 order 属性
order属性设置弹性容器内弹性子元素的属性,用整数值来定义排列顺序,数值小的在前面,可以为负值。
对齐
设置margin
值为auto
值,自动获取弹性容器中剩余的空间。所以设置垂直方向margin
值为auto
,可以使弹性子元素在弹性容器的两上轴方向都完全居中。
align-self 属性
align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。
align-self 属性各个值解析:
- auto:如果’align-self’的值为’auto’,则其计算值为元素的父元素的’align-items’值,如果其没有父元素,则计算值为’stretch’。
- flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
- flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
- center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
- baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
- stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸。
flex 属性
flex属性用于指定弹性子元素之间如何分配空间
实例:
.flex-item {
background-color: cornflowerblue;
margin: 10px;
}
.item1 {/*第一个弹性子元素栈用2/4的空间*/
-webkit-flex: 2;
flex: 2;
}
.item2 {/*占用1/4的空间*/
-webkit-flex: 1;
flex: 1;
}
.item3 {/*占用1/4的空间*/
-webkit-flex: 1;
flex: 1;
}