.clearfix{ *zoom:1; }
.clearfix::after{
content: "";
display: block;
clear:both;
visibility: hidden;
height: 0;
文本换行
white-space: nowrap;强制不换行
div内自动换行
word-break: break-all; 单词截断,下行接着显示
word-wrap: break-word; 单词不够放,放下一行限时
弹性盒子布局-flex
1)弹性盒子——css3中新增的布局方式。是一种当屏幕大小、设备类型不同的时候,都能够确保元素拥有恰当的布局方式
弹性性盒模型的内容包括:弹性容器、弹性子元素(项目)
引入弹性盒布局的目的:用一种较为有效的方式对容器中的子元素进行排列、对齐、分配空白空间,即使弹性子元素的尺寸发生动态变化,弹性盒布局也能正常工作
2)设置弹性盒子:
display: flex; 将元素设置为弹性盒容器
display: inline-flex; 将元素设置为弹性盒容器
注意:设置为flex布局之后,子元素的float、clear、vertical-align属性都会失效
3)基本概念:
容器
项目
主轴:默认水平方向,向右
主轴的起点
主轴的终点
交叉轴:默认垂直方向,向下
交叉轴的起点
交叉轴的终点
4)容器属性——添加弹性容器上
flex-direction属性:设置主轴的方向
flex-direction: row; /*默认值,设置主轴方向为水平方向,起点在左侧*/
flex-direction: row-reverse; /*设置主轴方向为水平方向,起点在右侧*/
flex-direction: column; /*设置主轴方向为垂直方向,起点在上方*/
flex-direction: column-reverse; /*设置主轴方向为垂直方向,起点在下方*/
justify-content属性:设置弹性子元素在主轴上的对齐方式
justify-content: flex-start; /*默认值,子元素位于弹性盒的开头*/
justify-content: flex-end; /*子元素位于弹性盒的结尾*/
justify-content: center; /*子元素位于弹性盒的中间*/
justify-content: space-around; /*子元素之前、之后、之间都有空白空间*/
justify-content: space-between; /*子元素和子元素之间有空白空间*/
align-items属性:设置弹性子元素在交叉轴上的对齐方式
align-items: stretch; /*默认值,如果子元素没有高度或高度为auto时,将占满整个容器的高*/
align-items: flex-start; /*子元素在交叉轴的起点对齐*/
align-items: flex-end; /*子元素在交叉轴的终点对齐*/
align-items: center; /*子元素在交叉轴的中点对齐*/
align-items: baseline; /*子元素在第一行文字的基线对齐*/
flex-wrap属性:设置弹性子元素在一根轴线上排不下的换行方式
flex-wrap: nowrap; /*默认值,不换行*/
flex-wrap: wrap; /*换行,第一行显示在上方*/
flex-wrap: wrap-reverse; /*换行,第一行显示在下方*/
align-content属性:设置多根轴线的对齐方式,如果只有一根轴线,属性失效
align-content: stretch; /*默认值,轴线占满整个交叉轴*/
align-content: flex-start; /*与交叉轴的起点对齐*/
align-content: flex-end; /*与交叉轴的终点对齐*/
align-content: center; /*与交叉轴的中点对齐*/
align-content: space-around; /*每根轴线之上、之下、之间都有留白*/
align-content: space-between; /*每根轴线之间都有留白*/
5)项目属性——添加在子元素上
order属性:调整子元素的排列次序
order: 数值; 数值不加单位,默认值为0,数值越大,排列越靠后
flex-grow属性:调整子元素的放大比例
flex-grow: 数值; 数值不加单位,默认值为0,表示不放大
flex-shrink属性:调整子元素的缩小比例
flex-shrink: 数值; 数值不加单位,默认值为1,表示当空间不足时,等比例缩小;值为0表示当空间不足时,不缩小
align-self属性:调整弹性容器中被选中的子元素的对齐方式
align-self: auto; /*默认值,继承了父容器的align-items属性,如果没有父元素值为stretch*/
align-self: stretch; /*占满整个容器的高度*/
align-self: flex-start; /*交叉轴起点对齐*/
align-self: flex-end; /*交叉轴终点对齐*/
align-self: center; /*交叉轴中点对齐*/
align-self: baseline; /*子元素的第一行文字的基线对齐*/
网格布局-Grid
flex布局——轴线,可以看成一维布局
1、基本介绍
Grid网格布局——二维布局
可以将容器分成“行”、“列”,产生单元格
2、基本概念
容器container——使用网格布局的区域
项目item——容器内使用网格定位的子元素
行row——容器中水平区域
列column——容器中垂直区域
单元格cell——行和列交叉区域,m行n列会产生的单元格数为m*n
网格线grid line——划分网格的线,m行有m+1根水平网格线
3、相关属性:
容器属性——写在父元素上
1)display属性:
display: grid; 容器采用网格布局
2)grid-template-rows属性、grid-template-columns属性 ——对容器的水平方向和垂直方向划分
属性值: 像素|百分比|auto|repeat()|fr|minmax()|网格线名称
repeat(),有两个参数,第一个参数表示重复的次数,第二个参数表示重复的值
minmax(),有两个参数,分别表示最大值和最小值
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 25% 100px;
grid-template-columns: 100px auto 100px;
grid-template-rows: repeat(3, 30%);
grid-template-rows: 1fr 2fr 1fr;/*3个值的和必须大于等于1,否则会有空白空间*/
grid-template-rows: repeat(2,1fr) minmax(100px,300px);
grid-template-rows: 1fr 1fr minmax(100px,200px);
grid-template-rows: [r1] 100px [r2] auto [r3] 100px; /*网格名称*/
grid-template-columns: [c1] 100px [c2] auto [c3] 100px;
3)grid-row-gap属性、grid-column-gap属性、grid-gap属性 ——定义网格中的网格间隙
定义网格中的网格间隙
简写:grid-gap: grid-row-gap grid-column-gap;
grid-row-gap: 10px; 行间距
grid-column-gap: 20px; 列间距
grid-gap: 10px 20px;
4)grid-auto-flow属性: ——排列顺序
grid-auto-flow: row; 默认值,先行后列
grid-auto-flow: column; 先列后行
5)justify-items属性、align-items属性、place-items属性——内容分布
justify-items属性:水平呈现方式
align-items属性:垂直呈现方式
属性值:start|end|center|stretch
开始|结束|中间|默认
简写:place-items: align-items justify-items;
place-items: start end;
6)justify-content属性、align-content属性、place-content属性 --整体分布
justify-content属性:水平分布方式
align-content属性:垂直分布方式
属性值:start|end|center|space-between|space-around|space-evenly;
开始|结束|中间|元素间留白|元素之前之间之后留白|元素间隔相等
简写:place-content: justify-content align-content;
7)grid-template-areas属性:定义区域
应用在子项目的属性:grid-area属性,规定项目所在区域
grid-template-areas: "box1 box1 box1"
"box2 box2 box3"
"box2 box2 box3";
划分三个区域box1、box2、box3
分配三个区域:
.wrap div:nth-child(1){
grid-area: box1;
}
.wrap div:nth-child(2){
grid-area: box2;
}
.wrap div:nth-child(3){
grid-area: box3;
}
项目属性:
1)grid-column-start属性、grid-column-end属性、grid-row-start属性、grid-row-end属性-项目的位置
grid-column-start属性:水平填充,左边框所在的垂直网格线
grid-row-start属性:垂直方向填充,上边框所在的水平网格线
grid-column-end属性:右边框所在的垂直网格线
grid-row-end属性:下边框所在的水平网格线
简写:
grid-column: grid-column-start / grid-column-end;
grid-row:grid-row-start / grid-row-end;
grid-column-start: 2; 第二根垂直轴线开始
grid-row-end: 3; 第三根水平轴线结束
注:单位是第几条轴线,左-上,起始和结束可以决定项目的大小
2)justify-self属性、align-self属性、place-self属性
justify-self属性:水平方向的对齐方式
align-self属性:垂直方向对齐方式
属性值:start|end|center|stretch
开始|结束|中间|默认
CSS选择器
0)伪元素选择器:
element::before{ content:"伪元素的内容"; 属性名称: 属性值; }
在element的内部,内容之前添加"伪元素的内容"
element::after{ content:"伪元素的内容"; 属性名称: 属性值; }
在element的内部,内容之后添加"伪元素的内容"
1)属性选择器
css2中的属性选择器:
element[attr]{ } 指定了属性名,但没有指定属性值得element元素
element[attr=value]{ } 指定了属性名,并且指定了属性值为value的element元素
element[attr~=value]{ } 指定了属性名,并且属性值可以为词列表中的包含指定属性值value的element元素
css3中的属性选择器:
element[attr^=value]{ } 指定了属性名,并且属性值以value开头的element元素
element[attr$=value]{ } 指定了属性名,并且属性值以value结尾的element元素
element[attr*=value]{ } 指定了属性名,并且属性值中包含value的element元素
2)结构性伪类选择器
:root{ } 匹配根元素
element:first-child{ } 选择一组相同元素中的第一个元素
element:last-child{ } 选择一组相同元素中的最后一个元素
element:nth-child(n){ } 选择一组相同元素中的第n个元素,n可以是数值、关键词、表达式
偶数:even 或 2n
奇数:odd 或 2n+1
element:nth-last-child(n){ } 选择一组相同元素中的倒数第n个元素,n可以是数值、关键词、表达式
element:nth-of-type(n){ } 一组元素中选择特定类型的元素,n可以是数值、关键词、表达式
element:nth-last-of-type(n){ } 一组元素中选择特定类型的元素,但是需要从最后一个开始计算
3)状态伪类选择器
element:checked{ } 选择页面中处于选中状态的element元素
element:disabled{ } 选择页面中处于禁用状态的element元素
element:enabled{ } 选择页面中处于可用状态的element元素
图片下方间隙问题
将图片转成块级元素,解决下方间隙;
为图片设置垂直对齐方式(vertical-align属性),解决下方间隙;
为图片的父元素设置高度,并添加overflow属性,解决下方间隙;
为图片的父元素设置font-size属性或line-height属性,属性值为0,解决下方间隙问题:
文本框和按钮不对齐现象
为input元素设置vertical-align属性;
为input元素设置浮动属性
生成BFC
根元素
float: left|right;
position: absolute|fixed;
overflow: hidden|scroll|auto;
display: inline-block;
盒子和文字阴影属性
1)盒子阴影box-shadow属性
box-shadow: x轴偏移量 y轴偏移量 阴影的羽化值 阴影的大小 阴影颜色 内阴影|外阴影(默认值);
x轴偏移量--水平方向的偏移,正值向右偏,负值向左偏
y轴偏移量——垂直方向的偏移,正值向下偏,负值向上偏
注意:可以向一个元素中添加多个阴影,多组阴影之间用逗号隔开
2)文字阴影text-shadow属性
text-shadow: x轴偏移量 y轴偏移量 阴影的羽化值 阴影颜色;
文本属性
border-width: 边框属性 thin;//thin细边框、medium中等、thick粗
outline属性:轮廓,不占位
outline: none; 去掉轮廓线
outline: 轮廓宽度 轮廓线型 轮廓颜色;
outline-offset属性:对轮廓进行偏移
letter-spacing属性:字间距
word-spacing属性:词间距
1)单行文本溢出
text-overflow: clip;文字溢出后直接修剪
text-overflow: ellipsis; 文字溢出后用省略号代表被修剪的文本
text-overflow: string; 文字溢出后用给定的字符串表示被修剪的文本。只在火狐浏览器中生效
注意:要实现文本溢出处理,需要与white-space属性和overflow属性配合使用
2)多行文本溢出显示省略号
(1)使用webkit的css扩展属性
.box1{
width: 200px;
border: 2px solid #000;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;/*将标签设置为弹性伸缩盒子*/
-webkit-line-clamp: 2;/*行数*/
-webkit-box-orient: vertical;/*伸缩盒子元素的排列方式*/
}
(2)使用伪元素模拟溢出显示省略号的效果
.box2{
width: 200px;
border: 2px solid #000;
height: 60px;
line-height: 30px;
overflow: hidden;
position: relative;
}
.box2::after{
content: "......";
position: absolute;
right: 0;
bottom: 0;
background: #fff;
padding-left: 4px;
padding-right: 10px;
}
边框圆角border-radius属性
border-radius: 20px; /*元素四周都有20px的圆角*/
border-radius: 10px 30px;/*左上角和右下角各有10像素,右上角和左下角各有30像素的圆角*/
border-radius: 10px 20px 30px;/*左上角有10像素,右上角和左下角各有20像素,右下角30像素的圆角*/
border-radius: 10px 20px 30px 50px;/*左上角10像素,右上角20像素,右下角30像素,左下角50像素的圆角*/
border-top-left-radius: 30px; /*左上角的圆角设置*/
border-top-right-radius: 30px;/*右上角的圆角设置*/
border-bottom-right-radius: 30px;/*右下角的圆角设置*/
border-bottom-left-radius: 30px;/*左下角的圆角设置*/
鼠标指针形状
cursor: pointer;/*鼠标指针为手型*/
cursor: crosshair;/*鼠标指针为十字形*/
cursor: text;/*鼠标指针为文本的I型*/
cursor: wait;/*程序正忙*/
cursor: move;/*对象是可移动的*/
cursor: help;/*可用的帮助信息*/
cursor: default;/*默认光标*/
cursor: auto;/*默认*/
css Hack技术
1)条件级Hack
if条件:是否、大于(gt)、大于等于(gte)、小于(lt)、小于等于(lte)、非指定版本(!)
2)属性级Hack
_: 选择IE及以下版本
*:IE6、7
\9: 选择IE6+
\0: 选择IE8+、opera15
3)选择级Hack
*html IE6及更早版本浏览器
*+html IE7
Hack有风险,使用需谨慎!
HTML5-新增的语义化标签
1、HTML5的新特性
1)在网页上绘制图形的canvas元素
2)多媒体相关video和audio元素
3)对本地离线存储的更好支持
本地存储:提供了两种在客户端存储数据的新方法
localStorage 没有时间限制的数据存储
sessionStorage 针对session的数据存储
离线应用:用户可以在应用离线的时候查看网站信息
4)新增的语义化的标签和表单控件
新增的结构元素
1)header标签:网页的头部区域或文档中某个内容区块的头部,双标签
一种具有引导和导航作用的结构元素,通常可以包含整个页面或一个内容区域的标题、搜索、相关logo图片等
2)footer标签:网页的底部区域或文档中某个内容区块的底部,双标签
通常可以包含:网页中的版权信息、相关阅读链接、文档的作者、使用条款等
3)nav标签:网页的导航区域,双标签
通常可以包含:网页中主要的导航链接组、传统的导航条、侧边栏导航、页内导航、翻页操作等
4)article标签:网页中独立的完整的内容,可以包含header标签,双标签
通常可以包含:一篇博文、论坛的帖子、报刊中的文章、一段用户评论或独立的插件
5)section标签:网页中内容的章节,双标签
通常可以包含页面中内容的分区,文章中章节
6)aside标签:侧边栏,表示当前网页或文章的附属信息,双标签
通常可以包含:与主要内容相关的引用、侧边栏、广告、链接组等
7)hgroup标签:标题组,双标签
通常包含多个标题
8)address标签:联系信息,双标签,文字自带斜体效果
通常包含:文档的作者或文档的编辑者名称、电子邮箱、地址、电话号码等
新增其他标签:
1)figure标签:自带间距
语法:<figure>
被主体内容引用的,相对独立的内容块,可以包含:图片、图表、代码块等
<figcaption>定义figure中的标题</figcaption>
</figure>
注意:在一个figure标签中只允许放一个figcaption标签
2)mark标签:定义带有标记的文本,目的吸引用户。默认自带背景颜色(黄色)和文字颜色(黑色),双标签
3)time标签:日期时间标签,定义公历时间,双标签
<time>2020年2月27日</time>
<time pubdate="pubdate" datetime="2020-2-27"></time>
pubdate属性:当前内容的发布时间
注意:datetime属性定义日期时间,如果没有该属性,必须在元素内规定日期和时间
4)progress标签:进度条
<progress></progress>
<progress max="100" value="50"></progress>
max属性:最大值
value属性:初始值
5)canvas标签:图形容器,如果绘制形状必须使用JavaScript来绘制
HTML5-新增多媒体标签
1)音频标签
audio 标签
<audio src="音频文件的路径">您的浏览器不支持audio元素播放音频。</audio>
IE8及更早版本的浏览器中不支持audio元素
HTML5中支持的音频格式:
ogg 支持的浏览器Chrome、Firefox、Opera10+
MP3 支持的浏览器Chrome、Firefox、Opera10+、IE9+、Safari5+
wav 支持的浏览器Chrome、Firefox、opera、Safari
常用属性:
src属性:音频文件的URL地址
controls属性:播放控件
loop属性:重复播放
muted属性:静音播放
source标签:可以链接不同格式的音频文件。浏览器使用第一个可以识别的格式
<audio controls>
<source src="videoAudio/biubiubiu.ogg">
<source src="videoAudio/hanmai.mp3">
<source src="videoAudio/nada.wav">
您的浏览器不支持audio元素播放音频。
</audio>
2)视频标签
video标签
<video src="视频文件的路径">您的浏览器不支持video元素播放视频。</video>
IE8及更早版本的浏览器中不支持video元素
HTML5中支持的视频格式:
ogg 支持的浏览器Chrome、Firefox、Opera
MEPG4 支持的浏览器Chrome、Firefox、Safari、IE9+
WebM 支持的浏览器Chrome、Firefox、Opera
常用属性:
src属性:视频文件的路径
controls属性:播放控件
loop属性:重复播放
muted属性:静音播放
width属性、height属性 设置视频播放器的宽度和高度,单位像素
poster属性:预览图片
source标签:可以链接不同格式的视频文件。浏览器使用第一个可以识别的格式
<video controls>
<source src="videoAudio/butterfly.ogg">
<source src="videoAudio/movie.mp4">
<source src="videoAudio/PPAP.webm">
您的浏览器不支持video元素播放视频。
</video>
HTML5-新增的表单元素和属性
新增表单标签--input类型
input、button、select-option、textarea
1)url类型:包含访问协议的URL地址的输入域,在提交表单时,会自动验证URL域的内容
2)email类型:包含e-mail地址的输入域,在提交表单时,会自动验证e-mail地址
3)search类型:用于检索关键字的输入域,多用于手机客户端
4)tel类型:用于输入电话号码的输入域,为移动端网页开发服务,在PC端网页中不生效,在移动端页面中点击tel类型的输入域时,跳出虚拟电话键盘(0-9、*、#)
5)number类型:用于包含数值的输入域
<input type="number" max="10" min="0" step="2" value="0">
max属性:最大值 min属性:最小值 step属性:合法的数字间隔,默认值为1
注意:当用户输入非法的数值时,会弹出相应提示信息,并阻止表单提交
6)range类型:生成一个数字滑动条
<input type="range" max="10" min="0" step="2" value="0">
注意:
range类型和number类型功能基本一致,
区别:外观样式不同、默认值不同。
range 类型的min属性默认值为0,max属性默认值为100
7)color类型:生成一个颜色选择器,值为十六进制色值(六位十六进制数)
8)date类型:日期选择器,包含年、月、日
9)datetime类型:输入日期时间(UTC时间)——手动
UTC+8 东8区
UTC-10 西10区
10)datetime-local类型:日期和时间选择器,包含年、月、日、时、分(无时区)
11)month类型:月选择器,包含年、月
12)time类型:时间选择器,包含时、分
13)week类型:周选择器,包含年、周(全年的第几周)
14)datalist类型:选项列表,与input元素配合使用
使用input元素的list属性和datalist的id属性关联
<input list="listCon">
<datalist id="listCon">
<option value="北京">北京</option>
<option value="重庆">重庆</option>
<option value="深圳">深圳</option>
<option value="上海">上海</option>
<option value="天津">天津</option>
</datalist>
表单属性:
1)min、max、step属性
输入域中所允许的最小值、最大值、步长
用于包含数字的input类型,如input的number、range类型
2)placeholder属性
为输入域设置提示信息
3)list属性
通过input元素和datalist元素实现可选的下拉列表;使用input元素的list属性和datalist的id属性关联
4)autocomplete属性:是否启用自动完成功能
autocomplete = "off" 元素不采用自动完成功能
autocomplete = "on 元素启动自动完成功能
5)autofocus属性:自动获取焦点
6)form属性:定义表单元素所属的表单区域
7)required属性:提交表单时,表单元素不能为空,如果设置value值,该属性失效
8)pattern属性:对用户输入内容做验证(正则表达则)
9)multiple属性:选择多个值
用于上传域和email类型的输入域
HTML5-兼容
最新版本的Chrome、Firefox、Safari、Opera支持部分HTML5特性。IE9支持部分HTML5特性
HTML5新标签在IE低版本中有兼容问题:
1)使用JavaScript新增元素的方式解决:
<script>
var ele = document.createElement("header"); //创建一个header元素,赋给ele变量
var oBox = document.getElementById("box"); //通过id名称获取元素,赋给oBox变量
oBox.appendChild(ele); //将新建元素追加到父元素中
</script>
<style>
header{
display: block;
}
</style>
2)使用谷歌提供的html5shiv.js解决兼容问题
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<![endif]-->
浏览器私有前缀——兼容性前缀
浏览器 内核 css兼容性前缀
Chrome|Safari webkit -webkit-
firefox gecko -moz-
Opera presto -o-
IE trident -ms-
css3背景属性
1)多背景
background-image: url(图片的路径), url(图片的路径);
多个背景图片之间用逗号隔开。背景图显示越靠前,书写顺序越靠前
2)background-size属性:背景图尺寸设置
background-size: 数值;
background-size: 100px;/*等比例缩放*/
background-size: 100px 100px; /*根据尺寸缩放*/
background-size: 100% 100%;/*以元素的百分比来设置背景图片的宽、高*/
background-size: cover; 覆盖,等比例缩放到铺满整个盒子,但是背景图可能无法完整显示在盒子中
background-size: contain; 包含,等比例缩放到图片完整显示在盒子中,但是背景图可能无法铺满整个盒子
3)background-origin属性:背景图片的定位区域
background-origin: content-box; 背景图片相对于内容区域定位
background-origin: padding-box; 背景图片相对于内填充区域定位
background-origin: border-box; 背景图片相对于边框区域定位
4)background-clip属性:背景颜色的绘制区域
background-clip: content-box; 背景被裁剪到内容区域,仅在内容区显示
background-clip: padding-box; 背景被裁剪到内填充区域,在内容区、内填充区域显示
background-clip: border-box; 背景被裁剪到边框区域,在内容区、内填充区、边框区域显示
css3渐变属性
1)线性渐变 linear-gradient
background-image: linear-gradient(方向, 颜色1 范围1, 颜色2 范围2,...);
方向:ndeg(n为数值)、left|right|top|bottom|left top|left bottom|right top|right bottom
重复线性渐变:
background-image: repeating-linear-gradient(方向, 颜色1 范围1, 颜色2 范围2,...);
2)径向渐变 radial-gradient
background-image: radial-gradient(中心点的位置, 渐变形状, 颜色1 范围1, 颜色2 范围2,...);
中心点的位置:x y| left|right|center|top|bottom|left top|left center|left bottom ...
background-image: -webkit-repeating-radial-gradient(中心点的位置, 渐变形状, 颜色1 范围1, 颜色2 范围2,...);
background-image: repeating-radial-gradient(中心点的位置, 渐变形状, 颜色1 范围1, 颜色2 范围2,...);
用户界面
1)resize属性:用户是否可以对元素进项调整
resize: none; 不允许用户调整元素尺寸
resize: both; 用户可以调整元素的宽度和高度
resize: horizontal;只允许用户调整元素的宽度
resize: vertical; 只允许用户调整元素的高度
注意:如果要使resize属性生效,必须与overflow属性配合使用,overflow的属性值可以是auto|hidden|scroll
2)box-sizing属性:允许以特定的方式定义匹配某个区域的特定元素
box-sizing: content-box; 默认值,在width属性和height属性之外增加padding属性和border属性
box-sizing: border-box; 内容的宽度和高度的得到,通过width属性和height属性减去padding属性值,减去border属性值
多列布局-多栏布局
1)column-count属性:元素被分隔的列数
column-count: n; 元素内容被分隔成n列
column-count: auto; 由其他属性决定列数
2)column-width属性:列的宽度
column-width: npx; 每一列的宽度
column-width: auto; 由其他属性确定列宽
3)column-gap属性:列与列之间的间隔
column-gap: npx; 两列之间的间隔
column-gap: normal; 两列之间的间隔为常规间隔,W3C建议值为1em
4)column-rule属性:列边框--列与列之间的分隔线
column-rule: column-rule-width column-rule-style column-rule-color;
column-rule-width属性:分割线的宽度
column-rule-style属性:分割线的线型(solid|double|dotted|dashed)
column-rule-color属性:分割线的颜色(关键词、十六进制色值、rgb(r,g,b)、rgba(r,g,b,a))
5)column-span属性:跨列合并
column-span: all; 横跨所有列合并
transition过渡属性
transition: transition-property transition-duration transition-timing-function transition-delay;
transition: css样式(属性名称) 动画的执行时间(单位秒|毫秒) 速度类型 动画的延迟时间(单位秒|毫秒);
css样式: all表示所有属性
动画的执行时间:默认0
速度类型:
ease 默认值,平滑过渡
linear 匀速
ease-in 加速
ease-out 减速
ease-in-out 先加速后减速
注意:必须要设置transition-duration属性动画的执行时间,否则动画的执行时间为0,不会产生过渡效果
transition: width 2s, background 10s;
css3变形-transform属性
2D变形:
1)平移
transform: translate(x,y); 元素从当前位置移动到给定的x轴和y轴的坐标位置
transform: translateX(x); 沿着x轴的方向移动
transform: translateY(y); 沿着y轴的方向移动
注意:水平向右值为正,垂直向下值为正值
transform: translate(50px);沿着x轴方向移动
2)旋转
transform: rotate(ndeg);
角度为正值,元素沿着顺时针方向旋转n度;角度为负值,沿着逆时针方向旋转
3)缩放
transform: scale(x,y); 元素沿着x轴和y轴做缩放
transform: scaleX(x); 沿着x轴方向缩放
transform: scaleY(y); 沿着y轴方向缩放
x和y的取值:0-1缩小,1表示正常大小,1以上表示放大,负值时,先翻转后缩放
transform: scale(0.5); x轴和y轴等比例缩放
4)倾斜
transform: skew(x,y); 元素沿着水平方向和垂直方向倾斜,单位deg
transform: skewX(x); 沿着x轴方向倾斜
transform: skewY(y); 沿着y轴方向倾斜
transform: skew(30deg);沿着x轴方向倾斜
注意:transform: rotate(360deg) scale(3);元素既要旋转又要缩放
transform-origin属性:元素基点位置的调整,必须与transform属性配合使用
3D变形必备属性:
1)transform-style属性:
transform-style: preserve-3d; 创建3D空间
2)perspective属性:透视属性,近大远小,单位像素
注意:以上两个属性均需要写在父元素中
3D空间的轴线:x轴(右为正)、y轴(下为正)、z轴(向外为正)
3D变形效果:
1)平移
transform: translateZ(z); 沿着z轴平移
transform: translate3d(x,y,z); 沿着x轴、y轴、z轴移动
2)旋转
transform: rotateX(xdeg); 沿着x轴方向旋转
transform: rotateY(ydeg); 沿着y轴方向旋转
transform: rotateZ(zdeg); 沿着z轴方向旋转
transform: rotate3d(x,y,z,angle); 沿着x轴、y轴、z轴旋转
3)缩放:
transform: scaleZ(); 沿着z轴缩放
transform: scale3d(x,y,z); 沿着x轴、y轴、z轴缩放
帧动画
1)定义关键帧
@keyframes 动画名称(英文){
0%{ } 动画的开始
50%{ }
100%{ } 动画的结束
}
@keyframes 动画名称(英文){
from{ } 动画的开始
to{ } 动画的结束
}
2)引用关键帧
animation: animation-name animation-duration [animation-timing-funciton] [animation-delay] [animation-iteration-count] [animation-direction] [animation-fill-mode];
animation: 动画名称 动画的执行时间(s|ms) 动画的类型(linear|ease|ease-in|ease-out|ease-in-out) 延迟时间 播放次数(默认为1次,infinite无限循环播放) 动画的运动方向(alternate正向反向轮流播放|reverse反向播放|normal正向播放|alternate-reverse反向正向轮流播放) 动画结束之后显示的状态(forwards动画结束时的状态|both动画结束或开始时的状态|backwards动画开始时的状态)
3)animate.css动画库
在动画库中预设了抖动shake、闪烁flash、弹跳bounce、翻转flip、旋转rotateIn|rotateOut、淡入淡出fadeIn|fadeOut
使用步骤:
1)引入文件:<link rel="stylesheet" href="css/animate.css">
2)使用:<div class="animated bounce">内容</div>
animated类名是基本类名,必须添加;第二个类名为实现指定动画的样式名
css预处理-less
1)less:拥有一套自定义的语法和一个解析器,将程序员编写的样式规则,通过解析器编译成对应的css文件,才能被浏览器识别
编译的方法:命令行编译、编译器编译、在线编译、第三方编译工具等
好处:结构清晰,便于扩展,可以屏蔽浏览器中私有语法的差异,可以实现多重继承,完全兼容css代码
2)编写less文件
新建less文件:*.less
3)less的基本语法
注释:
标准css注释: /* 注释内容 */ 会保留到编译后的文件中
单行注释://注释内容 只保留到less源文件中,编译后会被省略
导入样式: @import 可以导入css文件,导入less文件
@import "*.css";
@import url(*.css);
@import url("*.css");
注意:分号是必不可少的,文件的后缀名也是必不可少的
@import和link的区别
变量:
定义变量:@变量名: 值;
使用:
作为属性值使用——.box{ background: @变量名; }
作为属性名称使用——
<div class="box left"></div>
@le: left;
.box{ border-@{le}: 5px solid #000; }
作为选择器名称使用——
.@{le}{ height: 20px; }
SyntaxError语法错误
混入:将一种或一系列的属性从一个规则集引入到另一个规则集
混入类名:
定义通用属性:.bw{ width: 100px; } 在解析后的css文件中可以看到
.bw(){ width: 100px; } 在解析后的css文件中看不到
调用定义好的属性:.wrap{ .bw; }
混入参数:
定义:.boRa(@radius){ border-radius: @radius; }
调用:.box{ .boRa(20px); }
注意:混入参数没有设置默认,调用时必须传入参数
定义:.boRa(@radius:20px){ border-radius: @radius; }
调用:.box{ .boRa;}
.box{ .boRa(30px);}
注意:混入参数并且设置了默认值,调用的时候如果不写参数,使用默认值作为显示的值
使用@arguments来引用所有传入的参数:
.boSha(@bx,@by,@bb,@bc){ box-shadow: @arguments;}
.bo(@bwi:10px,@bs:solid,@bcol:#0f0){ border: @arguments; }
.box{
.boSha(10px,10px,20px,#000);
.bo;
.bo(5px);
.bo(5px,dotted);
.bo(5px,dashed,#000);
}
嵌套:模仿HTML结构
选择器嵌套
&表示引用父元素
继承:extend伪类实现样式的继承
.ftStyle{ font-style: italic; }
.box{
h3{
font-size: 50px;
&:extend(.ftStyle);
}
}
.box{
h3:extend(.ftStyle){
font-size: 50px;
}
}
运算:任何数值、颜色、变量都可以运算
1)变量
2)数值
3)颜色色值:先将颜色色值转换成rgb模式,进行计算,然后再将rgb模式转回十六进制色值并返回
rgb模式的取值范围0-255,如果计算时超过这个区间,使用超过后的接近的范围值呈现
calc()函数:动态计算长度值的函数
语法:calc(数学表达式)
支持+、-、*、/运算,先算括号里面的
注意:运算符前后添加空格
兼容性IE9+
less文件内容
height: calc(~"100% - 1.286rem");less编译bug,加~""即可避免
编译对于css内容
height:calc(100%-1.286rem);
viewport设置-虚拟窗口
Apple为了解决移动端屏幕分辨率大小问题提出
移动端视口:布局视口、视觉视口、理想视口
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
自定义虚拟窗口,指定虚拟窗口的宽度为设备宽,初始缩放比为1倍,同时不允许用户手动缩放。
content:
width--虚拟窗口的宽度,device-width设备宽度
initial-scale--初始缩放比例
maximum-scale--最大缩放比
minimum-scale--最小缩放比
user-scalable--是否允许用户手动缩放
user-scalable=no 不允许用户手动缩放
user-scalable=yes 允许用户手动缩放,默认值
ie8新加强制浏览器按照最新的标准去渲染
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
媒体查询
1)什么是媒体查询
可以根据设备显示器特性为它设置css样式
媒体查询可以检测的内容:viewport的宽度和高度、设备的宽度和高度、设备的方向、分辨率
2)引入方式
在样式表中引入——在style标签对中引入、在外部样式表中引入
@media mediaType and (media feature){
选择器{ 属性: 属性值; }
}
mediaType设备类型:
all 适用于所有多媒体类型设备
print 适用于打印机或打印预览
screen 电脑屏幕、平板电脑、智能手机等
speech 屏幕阅读器等
media feature媒体特性表达式:
width 浏览器宽度 height浏览器的高度
max-width最大宽度 min-width最小宽度
device-width设备宽度 device-height设备高度 max-device-width最大设备宽
orientation 设备方向 orientation:landscape|portrait 横屏|竖屏
aspect-ratio: 1/2;可见区宽度和高度的比率
device-aspect-ratio: 1/1; 输出设备的屏幕可见区宽度和高度的比率
使用link标签引入:
<link rel="stylesheet" media="mediaType and (media feature)and (media feature)" href="*.css">
响应式布局设置:
meta标签的设置
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
IE8及更早版本的浏览器中不支持媒体查询,需要使用media-queries.js或respond.js增加IE对媒体查询的支持:
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/livingston-css3-mediaqueries-js/1.0.0/css3-mediaqueries.js"></script>
<![endif]-->
<meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
调用Chrome浏览器或者是IE高版本浏览器
<meta name="HandheldFriendly" content="true">
兼容不支持viewport的设备
3)使用媒体查询适配对应样式
常用屏幕尺寸查询:
超小屏幕下 手机 <768px
小屏幕 平板 >= 768px
中等屏幕 桌面 >= 992px
大屏幕 桌面 >=1200px
移动端优先:超小型设备 手机 768px以下
@media screen and (min-width: 768px){ 平板电脑 }
@media screen and (min-width: 992px){ 台式电脑 }
@media screen and (min-width: 1200px){ 大台式电脑 }
大屏幕优先:大台式电脑 1200px以上
@media screen and (max-width: 1200px){ 台式电脑 }
@media screen and (max-width: 992px){ 平板电脑 }
@media screen and (max-width: 768px){ 手机 }
4)响应式字体设置
rem单位相对于html的font-size值做调整
em单位相对于父元素的font-size值做调整
百分比布局:
宽度不固定,可以使用百分比;内外间距(左右方向)也可以使用百分比
在实现的过程中需要布局容器:
手机 <768px 布局容器的宽度100%
平板 >=768px 设置宽度为750px
桌面 >=992px 设置宽度970px
大屏 >=1200px 设置宽度1170px
浮动、定位、弹性盒子
响应式内容:
img标签:前景图,可以通过max-width属性控制图片的大小,height: auto;
响应式背景图片: background-size属性调整背景图的尺寸