大前端学习笔记--持续随缘更新
前端知识&HTML常用标签
20200210
1、浏览器及内核介绍:
chrome谷歌:
特点——简洁、快速、安全
内核——webkit,Blink
费用——收费
前缀—— -webkit-
Firefox火狐——Mozilla公司:
特点——非盈利、Gecko项目开源
内核——Gecko
前缀—— -moz-
Safari苹果——苹果公司:
特点——移动端
内核——webkit
前缀—— -webkit-
Opera欧朋——挪威 opera software ASA:
特点——自主研发presto内核
内核——presto、blink
前缀—— -o-
IE——Microsoft:
特点——IE和Windows系统捆绑推向市场
内核——trident
前缀—— -ms-
1)使用trident内核的IE,及一些国产浏览器
2)使用Gecko内核的Mozilla Firefox
3)使用blink内核的chrome、opera
4)使用webkit内核的Safari、chrome,及一些国产的双核浏览器
2、前端页面的构成:
1)HTML——超文本标记语言 Hypertext Markup Language,结构层
结构层由HTML标记语言创建,负责页面的语义
2)css——层叠样式表 cascading style sheets,样式层或表现层
表现层负责页面的样式
3)JavaScript——脚本语言,行为层
行为层主要负责描述页面的动态效果
3、什么是HTML?
HTML是超文本标记语言。
HTML是使用标记来描述网页的一种语言。
HTML是的一种语法简单、结构清晰的语言
4、HTML文档——网页
扩展名:.html
文件名的格式:主文件名.扩展名
5、HTML标签语法:
标记——标签、元素
HTML标签:由尖括号包围的关键词
单标签:<标签名 />或<标签名>
双标签:<标签名>[内容]</标签名>
<标签名 属性名=“属性值”>[内容]</标签名>
空元素严格模式下在开始标签中进行关闭
HTML的注释:ctrl + /
<!-- HTML注释内容 -->
6、HTML文档的结构
<!DOCTYPE html> <!-- 文档声明 -->
<!-- <!doctype> 文档声明也称为文件类型定义(DTD),作用告诉浏览器给文档的版本信息,让浏览器的解析器知道应该用哪种规范来解析文档。必须写在HTML文档的第一行,是一条声明语句,不是一个HTML标签
<!DOCTYPE html> 用HTML5的语法去解析页面
-->
<html lang="en"><!-- 网页的根元素,双标签,html标签和head标签是父子关系也称嵌套关系-->
<head> <!--网页的头部信息,双标签,head标签和body标签是兄弟关系也称并列关系-->
<meta charset="UTF-8"><!--HTML文档的元信息,单标签
字符集:ASCII(0-9、大写和小写英文字母、一些特殊符号),国内常用——utf-8、GBK
utf-8——国际编码,通用型较好
GBK——包含全部中文字符,其中针对简体汉字的编码方式GB2312
-->
<title>网页基本结构</title><!--网页标题-->
</head>
<body><!--网页的主体内容,双标签-->
</body>
</html>
7、常用标签:
块级标记:
1)标题标签:h系列标签
h1~h6大小依次减小,重要程度依次减弱;
h1在同一个网页中只能使用一次;其他标签可以重复使用
特点:默认情况下宽度100%;默认情况下高度自适应;独立成行;自带间距和加粗
2)段落标记:p标签
特点:默认情况下宽度100%;默认情况下高度自适应;独立成行;自带间距
3)div标签:无语义
语法:<div>[内容]</div>
特点:默认情况下宽度100%;默认情况下高度自适应;独立成行
其他标签:
4)br标签:强制换行标签——不产生新段落的情况下进行换行
语法:<br />或 <br>
5)hr标签:水平分割线标签
语法:<hr />或 <hr>
特点:默认自带间距、自带边框
行级标签:
文本格式化标记——
6)span标签:万能标签,用于区分样式,双标签
7)b标签:是一个实体标签,用来呈现文字的粗体效果
8)strong标签:是一个语义标签,作用加强字符的语义,用来表示重要文本,在文本中呈现粗体效果
9)i标签:定义与文本中其他部分不同的部分,将这一部分文本呈现为斜体,没有特殊语义
10)em标签:用来呈现被强调的文本,在文本中呈现斜体效果
11)sub标签:定义下标
12)sup标签:定义上标
13)del标签:定义删除线
特点:默认情况下宽度自适应、默认情况下高度自适应、默认情况下横向显示(相邻的行内元素会排列在同一行中,直到一行排不下,才会换行
14)a标签:超链接标签
语法:<a href="链接的URL地址" title="鼠标悬停时显示的提示信息" target="_blank|_self">链接文本</a>
target属性:
_blank 在新窗口打开
_self 在当前窗口打开
特点;默认情况下宽度自适应、默认情况下高度自适应、默认横向显示、默认文字颜色为蓝色,访问过后文字颜色为紫色、自带下划线
可以使用#作为网址的占位符,代表当前页面
锚点使用:跳转到长页面的某个位置、跳转到不同页面的目标位置
定义锚点:<a name="锚点名称"></a> <div id="锚点名称">[内容]</div>
引用锚点:<a href="#锚点名称">链接文字</a> <a href="demo-03.html#box1">demo-03.html box1</a>
行块级标签:
15)img标签:图片标签
语法:<img src="图片的路径" title="鼠标悬停时呈现的提示信息" alt="图片占位">
标签&语义化&优先级&文本样式
20200211
1、路径:
1)绝对路径:带有域名的文件的完整路径或盘符下的某个路径
2)相对路径:/表示根目录 ./表示当前目录,可以省略 ../表示上一级目录 ../../表示上上级目录 文件名/ 引用下一级目录
2、语义化
什么是html语义化?
根据页面内容的结构,选择合适的标签,便于开发者阅读和写出更优雅的代码,便于浏览器、搜索引擎解析,有利于SEO,便于团队开发和维护。如:标题用h1~h6,段落使用p标签
语义化的好处:
1)在没有css的情况下,页面也能呈现出较好的内容结构;
2)语义化使代码更具有可读性,便于团队开发和维护;
3)语义化有利于用户体验
4)语义化有利于SEO搜索引擎优化
3、特殊字符:
空格
小于< <
大于> >
& &
已注册 ®
版权符号 ©
商标 ™
等
文本样式&表格&列表&表单
20200212
1、什么是css?
css——层叠样式表 cascading style sheet
主要用于html页面文本内容、图片外形、版本的布局等外观样式的设置
2、css语法规则
1)语法:
选择器 声明语句 ; 声明语句 ; 声明语句
div{ width: 200px; height: 200px; background-color: red; }
属性名称 : 属性值
2)注释:
/* css注释内容 */
3、css样式的引入方式
1)行内样式——内联式
语法:<div style="width: 100px; height: 100px;"></div>
适用于:个别元素添加特殊样式时
缺点:作用范围小,尽量不要使用
2)内部样式——嵌入式
语法:
<head>
<style type="text/css">css样式</style>
</head>
适用于:单个html文档需要特殊样式时
优点:相对于行内样式,代码能够复用
3)外部样式——外链式,引入的是扩展名为.css的文件
语法:
<head>
<link href="css文件的路径" rel="stylesheet" type="text/css">
</head>
rel属性:当前文档与被链接文档之间的关系。只有stylesheet得到所有浏览器的支持,表示外部文件的类型是css文件
适用于:多个html文档拥有相同样式的时
创建步骤:
(1)新建一个扩展名为.css的文件,保存到网站目录的css文件夹中
(2)打开新建的.css文件,设置编码方式:
@charset "utf-8";
(3)在html文档中链接后缀名为.css的文件:
<link href="css文件的路径" rel="stylesheet">
4)样式表的优先级:
行间样式>内部样式>外部样式
外部就近原则
4、基础选择器:选择器——找对象
1)通配符选择器 *:单独使用匹配所有元素
2)元素选择器——标签选择器、类型选择器
结构中:<标签名></标签名>
样式中:标签名{ css样式 }
3)class选择器——类选择器
结构中:<标签名 class="类名"></标签名>
样式中:.类名{ css样式 }
选择器的命名规范:
名称尽量有含义;
名称建议以英文字母开头,可以包含字母、数字、连字符(-_);
除了连字符之外的特殊符号不允许使用(包含空格);
不能使用中文汉字、纯数字,不能以数字开头;
类名会区分大小写
4)id选择器
结构中:<标签名 id="id名"></标签名>
样式中:#id名{ css样式 }
注意:id名称在本页中只能出现一次
5)选择器的优先级:一般来说选择器的权值越大,优先级越高
基本选择器的权值由小到大分别为:
通配符选择器(0)<标签选择器(1)<class选择器(10)<id选择器 (100)<行间样式(1000)
如果选择器的权值相同,后写的内容会覆盖先写的内容;
行间样式拥有最高优先级但是高不过!important
background-color: lightcoral !important;
5、文字属性
1)font-size 属性:字号,单位像素
浏览器的默认字号为16像素
2)font-family属性:字体、字族
如果字体名称包含空格,或字体名称为中卫,字体名称上加引号;
多个字体名称作为一个回退系统来保存,如果第一个字体不被浏览器支持,则尝试下一个,多个字体之间
用逗号隔开;
中英文混排的文字,英文字体要排在中文字体前面;
Arial,"Times New Roman","微软雅黑","宋体"
3)font-weight属性:文字加粗,范围100~900之间,100~400之间都是normal
font-weight: normal; 正常(相当于400)
font-weight: bold; 加粗(相当于700)
font-weight: 900;
4)font-style属性:文字样式
font-style: normal; 正常
font-style: italic; 斜体字
5)line-height属性:文字的行高。文字设置行高后,会在行高的范围内垂直居中,但行高撑不起盒高。没有
设置单位的行高值,表示字号的倍数
6)font属性
font: [font-style] [font-weight] font-size[/line-height] font-family;
注意:只有同时具有font-size属性和font-family属性时,简写生效
6、文本属性
1)color属性:文字颜色
英文名称:transparent透明、red红色、green绿色、blue蓝色
十六进制色值:由0-9a-f组成,六位十六进制数 红色#ff0000--#f00 #332344 #332244--#324
rgb(r,g,b):r-red红色 g-green绿色 b-blue 蓝色 取值范围0-255
rgba(r,g,b,a):r-red g-green b-blue a-alpha透明度,取值范围0-1之间,0表示完全透明,1表示完全
不透明,0~1之间表示半透明效果
2)text-align属性:文本水平对齐方式,设给块级元素。图片的水平对齐也可以设置
text-align: left; 默认值,左对齐
text-align: center; 居中对齐
text-align: right; 居右对齐
3)text-decoration属性:文本装饰线
text-decoration: none; 去掉文本装饰线
text-decoration: underline; 下划线
text-decoration: overline; 上划线
text-decoration: line-through; 删除线
4)text-indent属性:文本块首行缩进,单位px、em(字符宽度的倍数)、百分比(相对于父元素宽度的百分之多少)
7、css长度单位
px:相对于显示器屏幕分辨率而言,值固定,计算比较容易
em:相对长度单位,相对于父元素的font-size属性值而言
浏览器默认字号为16像素,未经调整的浏览器都符合1em=16px
特点:值不固定;会继承父元素的字号大小
%:相对长度单位
rem:相对于根元素的字体大小的单位,是css3新增的单位
浏览器在默认情况下,1rem = 16像素。在IE8及更早版本的浏览器中不兼容
8、html中的列表
1)无序列表
语法:
<ul>
<li></li>
<li></li>
</ul>
特点:
宽度100%;高度自适应;独立成行;自带间距、填充、自带列表符(清除自带列表符list-style: none;)
2)有序列表
语法:
<ol>
<li></li>
<li></li>
</ol>
3)自定义列表:
语法:
<dl>
<dt>定义列表的标题,或专业术语</dt>
<dd>定义列表项或对专业术语的解释</dd>
<dt>标题</dt>
<dd>列表项</dd>
</dl>
注意;浏览器显示,dd中的内容会默认缩进显示
9、表格语法
可以将数据有效地组织在一起,并以网格的形式显示。
特性:有内容的、没有固定宽度的单元格,由内容撑开;
没有固定宽度的空单元格,默认平分表格宽度
语法:
<table border="1">
<caption>表格标题</caption>
<tr><!--行-->
<th>表头单元格,默认文字加粗,并且水平、垂直居中</th>
<th>表头</th>
</tr>
<tr>
<td>表格单元格,默认水平居左,垂直居中</td>
<td>表格单元格</td>
</tr>
<tr>
<th>表头单元格</th>
<td>表格单元格</td>
</tr>
</table>
<table border="1">
<thead><!--表格的头,用来放置标题之类的东西-->
<tr>
<th>表头单元格</th>
<th>表头单元格</th>
</tr>
</thead>
<tbody><!--表格的身体,用来放置数据-->
<tr>
<td>表格单元格</td>
<td>表格单元格</td>
</tr>
</tbody>
<tfoot><!--表格的底部,用来放置脚注之类的内容-->
<tr>
<td>单元格</td>
<td>单元格</td>
</tr>
</tfoot>
</table>
10、表格属性
border属性:表格边框
border="1|0" border="0"表格没有边框
cellpadding属性:单元格内容和单元格边框之间的距离,单位像素
<table border="1" cellpadding="20"></table>
cellspacing属性:单元格之间的间距,单位像素,默认大小为2像素
<table border="1" cellspacing="2"></table>
合并单元格:
跨行合并单元格:rowspan
跨列合并单元格:colspan
11、表格常用css属性
border-collapse属性:设置表格的行和单元格的边是否合并还是独立
border-collapse: separate; 边框独立
border-collapse: collapse;相邻边合并
border-spacing属性:当表格边框独立时,行和单元格的边框在横向和纵向上的间距
如果两个长度值,第一个用于横向间距,第二个用于纵向间距
如果只有一个长度值,这个值作用于横向和纵向的间距
border-spacing: 10px 20px;
表格优点:方便排列一些有规律的、结构均匀的内容或数据
表格的缺点:产生垃圾代码、影响页面下载时间、灵活性不打、难于修改
12、表单属性
用于采集不同类型的用户输入数据,发送给服务器,实现用户和服务器之间的数据交互
1)表单标签form:用于申明表单,定义数据采集范围
注意:一个页面可以有多个表单标签,但是标签之间是相互独立的,不能嵌套;
用户向服务器发送数据时一次只能提交一个表单中的数据;如果要提交多个表单,需要使用JavaScript中的异步交互方式来实现
语法:<form action="提交表单时向何处发送表单数据" method="get|post" name="表单名称">表单元素</form>
method属性:提交表单时所用的http方法,默认为get方式
get方式:将数据作为URL地址的一部分发送给服务器;安全性比较低;有长度限制;请求的数据可以被缓存,能够保留在浏览器的历史记录中;能作为书签被收藏。
https://www.baidu.com/?username=123&psd=asd
https://www.baidu.com/?参数名=参数值&参数名=参数值
post方式:将数据隐藏在http数据流中进行传输;安全性比get方式要高;对数据长度没有限制;请求数据不会被缓存,也不会再浏览器的历史记录中保存,更不会作为书签被收藏。
https://www.baidu.com/
2)input表单域
<input type="" name="" value="初始值">
<input type="text" > 单行文本输入框
<input type="password" placeholder="提示信息"> 密码框
<input type="radio"> 单选按钮
<input type="checkbox"> 复选框
checked属性:用于单选按钮和复选框的默认选中,可以直接在input元素中写checked或checked="checked"
<input type="submit" value="提交"> 提交按钮
<input type="reset" value="重置"> 重置按钮
<input type="button" value="">普通按钮
<button>按钮</button>,默认类型为submit
<button type="submit">提交</button>
<button type="reset">重置</button>
<button type="button">普通按钮</button>
<input type="file"> 上传文件
注意:实现后台上传文件,必须在form表单中添加enctype属性
<form action="#" enctype="multipart/form-data"></form>
<input type="image" src="图片的路径" alt="提示性文字"> 图片形式的按钮
注意:input必须与src属性和alt属性配合使用
<input type="hidden" value="值"> 隐藏域。对用户是不可见的,目的是收集或发送信息到服务器,有利于程序处理信息
3)select下拉列表
<select name="">
<option value="html" selected>html</option>/*列表项,加载时预先选定的选项*/
<option value="css">css</option>
</select>
selected属性,用于下拉列表的默认选中,可以直接写selected或selected="selected"
4)textarea多行文本域:一般用于需要输入大量文本的位置
<textarea cols="1" rows="3"></textarea>
cols属性:cols="1"表示宽度,一行最多可以输入一个汉字,两个字符
rows属性:表示行数
textarea{ resize: none; } 禁止用户调整多行文本域的大小
5)label标签:表单标注——扩大点击范围,一般与单选按钮、复选框组合使用。关联式方式:
显示方式:
<input type="checkbox" id="eat">
<label for="eat">吃饭</label>
隐式方式:
<label><input type="checkbox">吃饭</label>
6)表单相关属性:
readonly属性:只读属性,不能修改,可以被提交
disabled属性:禁用表单元素,被禁用的元素不可用,不可点击,不会被提交
maxlength属性:允许输入的最多的字符数
size属性:控制input的长度
value属性:初始值
placeholder属性:文本域的提示信息
checked属性:用于单选按钮和复选框的默认选中
selected属性,用于下拉列表的默认选中
css选择器&盒模型
20200213
1、css选择器进阶——复合选择器
1)后代选择器——选择器之间用空格隔开
选择器1 选择器2{ css样式 } /*在选择器1范围内的所有的选择器2全部生效*/
2)子代选择器——只能选择第一级子元素
父选择器>子选择器{ css样式 }
3)群组选择器——分组选择器,选择器之间用逗号隔开
选择器1, 选择器2{ css样式 } /*选择器1和选择器2都具有相同的属性*/
4)交集选择器——两个以上的选择器组成
结构中:<div class="active"></div>
样式中:div.active{ css样式 }
5)伪类选择器:用来添加选择器的特殊效果
语法:选择器:伪类{ css样式 }
链接的不同状态都可以以不同的方式显示:
a:link{ 链接的默认样式 }
a:visited{ 链接访问过后的样式 }
a:hover{ 鼠标悬停到链接上的样式 }
a:active{ 鼠标按下时的样式 }
四个伪类状态都生效: LV-Ha
2、盒模型Box Model
css盒模型也称为框模型,在页面布局中,将页面的元素合理有效地组织在一起,形成一套完整的、行之有效的原则和规范。包含:元素内容content、内填充padding、边框border、外间距margin等几个要素。css盒模型的本质是一个盒子,封装周围的html元素。
标准盒模型的计算公式:
盒子的实际宽度= width属性+ padding-left + padding-right + border-left + border-right
盒子的总宽度= width属性 + padding-left + padding-right +border-left + border-right + margin-left + margin-right
盒子的实际高度= height属性+ padding-top + padding-bottom + border-top + border-bottom
盒子的总高度= height属性+ padding-top + padding-bottom +border-top + border-bottom + margin-top + margin-bottom
盒模型的相关属性:
1)内容属性:
width属性:元素的宽度
属性值:auto|数值|inherit
height属性:元素的高度
max-width属性:最大宽度 min-width属性:最小宽度
max-height属性:最大高度 min-height属性:最小高度
2)padding属性:内填充、内边距,元素边框和元素内容之间的空白区域
单边内填充:
padding-top属性:上内填充
padding-right属性: 右内填充
padding-bottom属性:下内填充
padding-left属性: 左内填充
复合写法:
padding: npx;
padding: npx mpx;
padding: npx mpx xpx;
padding: npx mpx xpx ypx;
注意:百分比——上下内填充与左右内填充百分数值是相对于父元素的width属性计算的。
3)border属性:边框
border-width属性:边框的宽度,属性值单位像素
border-style属性:边框的样式
border-style: none; 没有边框
border-style: solid; 单实线
border-style: double; 双实线
border-style: dashed; 条状虚线
border-style: dotted; 点状虚线
border-color属性:边框颜色。默认的边框颜色是元素本身的前景色
复合写法:
border-width: npx;
border-width: npx mpx;
border-width: npx mpx xpx;
border-wdith: npx mpx xpx ypx;
border-color属性、border-style属性
单边属性:
border-top属性:上边框
border-top-width属性:上边框的宽度
border-top-style属性:上边框的线型
border-top-color属性:上边框的颜色
border-top: border-top-width border-top-style border-top-color;
border-right属性:右边框
border-bottom属性:下边框
border-left属性:左边框
border简写:
border: border-width border-style border-color;
4)margin属性:外间距、外边距——定义元素周围的空间
单边外间距:
margin-top属性:上外间距
margin-right属性:右外间距
margin-bottom属性:下外间距
margin-left属性:左外间距
复合写法:
margin: npx;
margin: npx mpx;
margin: npx mpx xpx;
margin: npx mpx xpx ypx;
盒子的水平居中:
width属性
margin: 0 auto;
注意:行级元素实际不占上下外边距
margin值得问题:
(1)父子关系外边距塌陷问题——元素嵌套关系,子元素的margin值会叠加给父元素
现象:给子元素设置外间距,会和父元素的外间距合并,最终会表现其中较大的外间距的值
原因:父盒和子盒公用一个上外间距的区域
解决方法:
给父元素设置边框或内填充;
给父元素添加overflow:hidden属性,触发BFC,改变父元素的渲染规则
(2)兄弟关系的外边距叠加——元素并列关系,垂直方向上相邻的margin值相遇会出现叠加
现象:上一个盒子设置下外间距,下一个盒子设置上外间距,两个值相同时,取当前值,如果两个值不同,取较大值
原因:上、下两个兄弟关系的盒子共用一个外间距区域
解决方法: 给两个盒子都套一个父盒子,父盒添加overflow属性
背景属性&css特性&标签分类&浮动属性
20200214
1、背景属性
1)background-color属性:背景颜色,默认值为transparent透明
关键词|十六进制色值|rgb(r,g,b)|rgba(r,g,b,a)
背景颜色应用于内容区、padding、border区域
2)background-image属性:背景图片
语法:background-image: url(图片的路径);
background-image: none; 表示无背景图,默认值
3)background-repeat属性:背景图是否重复
background-repeat: repeat; 默认值,背景图在水平方向和垂直方向重复
background-repeat: repeat-x; 背景图在水平方向重复
background-repeat: repeat-y; 背景图在垂直方向重复
background-repeat: no-repeat; 背景图不重复
4)background-position属性:背景图的位置
语法:background-position: xpos ypos;
属性值:
关键词:left|center|right top|center|bottom
保证不超过两个关键词,一个是水平方向,一个是垂直方向;如果只出现一个关键词,另一个关键词默认center
长度值:图像的左上角0px 0px,负值向盒外,正值向盒内
百分比:图像在左上角0% 0%,右下角100% 100%
如果只有一个百分比数值,这个值作为水平方向的值,垂直方向将假设为50%
5)background属性:
background: background-color background-image background-repeat background-position;
注意:如果某一个属性不需要可以省略
2、css的三大特征
1)层叠性
1)样式冲突,遵循就近原则
2)样式不冲突,不会层叠,但会叠加
2)继承性——子元素会继承父元素的样式
可以继承的属性:
字体系列属性——font-family字体系列属性、font-size字号属性、font-weight文字加粗属性、font-style文字的风格属性、line-height行高属性
文本系列属性——text-indent文本缩进属性、text-align文本水平对齐方式属性、color文本颜色属性
列表中list-开头的属性
3)优先级
选择器的权值越大,优先级越高;权值相同时,谁在后面显示谁
基本选择器权值:通配符选择器(0)、标签选择器(1)、class选择器(10)、id选择器(100)
复合选择器权值计算方式:组成复合选择器的所有单一选择器的权值累加
.box div{ } 权值:10+1=11
#box .box p{ } 权值:100+10+1=111
行间样式的优先级高于id选择器的优先级;
继承样式的权值为0,子元素中设置的样式,会覆盖继承到的样式;
在样式中定义!important,优先级高于行间样式;
3、标签分类 —— 行级标记、块级标记、行块标记
1)行级元素 inline-level
常用的行级元素:span、b、i、em、strong、a、del、sub、sup等
默认宽度随元素的内容变化而变化;
默认高度由内容撑开;
不会独立成行,相邻的行内元素会排列在同一行中,直到一行拍不下,才会换行;
换行和空格会被解析;
具有部分盒模型特征。
使用:一般用来容纳文本和其他内联元素,通常被包含在块元素中使用。
2)块级元素 block-level
常用的块级元素:h1、h2、h3、h4、h5、h6、p、div、ul、li、ol、dl、dt、dd等
默认宽度撑满父元素的宽度;
默认高度由内容撑开;
垂直布局;
具有盒模型特征。
使用:块级元素中可以添加块级元素、行级元素、行块元素
3)行块元素 inline-block
常用的行块元素:img、input等
具有块级标记的特征:可以设置宽、高、内填充、外间距
具有行级标记的特征:默认横向显示,直到一行排不下才会换行;换行和空格会被解析
4、框类型转换 —— display属性
display: none; 元素不会被显示——隐藏元素,不占位
display: block; 元素的显示,将元素显示为块级元素,具有块级元素的特征
display: inline; 将元素显示为行级元素,具有行级元素的特征
display: inline-block; 将元素显示为行块元素,具有行块元素的特征
5、浮动
1)什么是浮动?
文档流:可以显示的对象在排列时所占的位置
浮动:使元素脱离正常文档流,按照指定方向发生移动,直到碰到它的父元素边界或另外一个浮动元素的边框为止
注意:元素的水平方向浮动,元素只能左右移动而不能上下移动
2)浮动属性:
float: left; 元素向左浮动
float: right; 元素向右浮动
float: none; 默认值,元素不浮动
3)浮动的特性:
浮动会使元素脱离正常文档流;
浮动元素可以提升层级;
浮动可以使行级元素支持宽高;
浮动可以使块级元素由内容撑开;
元素添加浮动之后,不占位,父级盒高度为0
4)浮动带来的影响
元素浮动以后,脱离正常文档流,导致父元素高度塌陷,会影响与父元素同级的后续元素的正常布局
5)清浮动的几种方法:
(1)为浮动元素的父级盒加固定的高度——不够灵活
(2)为浮动元素的父级盒加浮动——会产生新的浮动问题
(3)为浮动元素的父级盒设置overflow属性,属性值可以是hidden|scroll|auto——可能会导致内容显示不完全;代码简洁
(4)在浮动元素之后,跟浮动元素呈并列关系的位置,加一个空div,在空div上添加一个属性clear: both;——代码冗余;通俗易懂、书写方便
(5)推荐方式:给浮动元素的父级盒加类名.clearfix
.clearfix{ *zoom:1; }
.clearfix::after{
content: "";
display: block;
clear:both;
visibility: hidden;
height: 0;
}
不会在结构上产生冗余代码,可以重复使用,符合闭合浮动思想,结构语义化正确
6、overflow属性 —— 溢出隐藏,包含水平方向和垂直方向
overflow-x属性:只包含水平方向
overflow-y属性:只包含垂直方向
overflow: visible; /*溢出显示,默认值*/
overflow: hidden;/*溢出隐藏*/
overflow: scroll; /*溢出显示滚动条*/
overflow: auto;/*自动*/
overflow: inherit; /*继承*/
7、clear属性——清浮动
clear: left; 清除左侧浮动
clear: right; 清除右侧浮动
clear: both; 清除两侧浮动
伪元素选择器&浮动
20200217
1、浮动
目的:为了让多个块级元素在同一行显示
最核心的关键点:怎么排列、是否占位
2、伪元素选择器
1)element::before{ content:"伪元素的内容"; 属性名称: 属性值; }
在element的内部,内容之前添加"伪元素的内容"
2)element::after{ content:"伪元素的内容"; 属性名称: 属性值; }
在element的内部,内容之后添加"伪元素的内容"
3、样式重置——css reset
网页在显示的过程中,由于浏览器的内核不同、版本不同,对默认样式属性值的解析也不同。
将所有元素的自带样式去掉,然后重置,可以在不同内核、不同版本的浏览器中,都能解析到相同的属性值
定位技术
20200218
1、css的定位机制
css的定位机制:普通文档流、浮动、定位
1)定位原理:允许元素相对于其正常位置、或相对于父元素、或相对于浏览器窗口本身的位置
元素位置的调整:left|right属性、top|bottom属性
2)定位属性:
静态定位position: static; 默认值
相当于没有定位,元素出现在正常文档流中;
相对定位position: relative; ——相对于本身的位置进行定位
一般用于元素的微调;作为绝对定位的参考元素
(1)不影响元素本身的特性
(2)相对定位仍然占位
(3)如果没有定位偏移量,对元素本身没有任何影响;如果定义了定位偏移量,相对于原来位置发生偏移
(4)提升层级
绝对定位position: absolute;——相对于最近的定位父元素定位(定位父级)
(1)使元素完全脱离正常文档流,不占位
(2)有定位父级相对于定位父级发生偏移;没有定位父级相对于整个文档发生偏移
(3)使行级元素支持宽高;没有设置宽度的块级元素宽度自适应
(4)提升层级
绝对定位的步骤:——子绝父相
为要做特殊定位的盒子(定位盒)添加position: absolute;绝对定位,设置初始位置,通过top|bottom、left|right属性:
top: 0;| bottom: 0;
right: 0; | left: 0;
为定位盒的父级盒(有固定宽度和高度),添加position: relative; 相对定位
回到定位盒,通过top|bottom、left|right属性进行精确定位
固定定位position: fixed;——相对于浏览器窗口进行定位
(1)元素定位后脱离正常文档流,不占位
(2)始终相对于浏览器的四个角为原点进行定位,不会随页面内容滚动而滚动
(3)使行级元素支持宽、高;没有设置宽度的块级元素宽度自适应
(4)提升层级
2、定位属性总结
position: absolute; 绝对定位 元素不占位 相对于定位父级盒
position: fixed; 固定定位 元素不占位 相对于浏览器窗口来定位
position: relative; 相对定位 元素占位 相对于元素本身的位置来定位
position: static; 静态定位 元素占位 相当于没有定位
定位偏移属性:
left: 0; right: 0; 水平方向偏移量设置
top: 0; bottom: 0; 垂直方向偏移量设置
3、脱离文档流属性总结
float: left|right; 脱离文档流,但不脱离文本流
position: absolute | fixed; 既脱离文档流,又脱离文本流
注意:所有元素都能使用以上属性。元素脱离文档流后,不再区分块级和行级元素,都具有共同的属性,宽度由内容撑开,可以设置width和height属性及所有的盒模型属性
解决图片间隙&对齐方式&自适应布局
20200219
1、定位层级
z-index属性,定位盒叠放次序的调整,z-index属性值越大,叠放次序越高
值可能为:正整数、负整数、0(默认值)
只对定位元素生效;
数值越大叠放次序越高;
如果取值相同,则根据书写顺序,后来居上;
正值向上调整层级,负值向下调整层级;
属性值没有单位
2、定位实现盒子的水平、垂直居中——绝对居中
1)margin负间距
必须知道居中盒的宽度和高度;
为居中盒设置绝对定位;
距离定位父级左边框和上边框的距离设置为50%;
将元素分别左移和上移,移动元素宽度和高度的一半
2)margin: auto;实现绝对定位元素的居中
必须知道居中盒的宽度和高度;
为居中盒设置绝对定位;
分别设置left: 0; right: 0; top: 0; bottom: 0;
为居中盒设置margin: auto;
3、常见属性--vertical-align属性
vertical-align属性:设置元素的垂直对齐方式
vertical-align: baseline; 将元素放在父元素的基线上 默认值
vertical-align: top; 顶端对齐
vertical-align: middle; 中部对齐
vertical-align: bottom; 底部对齐
vertical-align: super;上标 <sup></sup>
vertical-align: sub; 下标 <sub></sub>
4、解决图片间距问题
将图片转成块级元素,解决下方间隙;
为图片设置垂直对齐方式(vertical-align属性),解决下方间隙;
为图片的父元素设置高度,并添加overflow属性,解决下方间隙;
为图片的父元素设置font-size属性或line-height属性,属性值为0,解决下方间隙问题:
5、解决文本框和按钮不对齐现象
为input元素设置vertical-align属性;
为input元素设置浮动属性
6、显示隐藏属性
1)display属性
display: none; 元素的隐藏,将整个元素隐藏,不占用任何空间
display: block; 元素的显示
2)visibility属性
visibility: hidden; 元素内容不可见,只隐藏内容,占位空间仍然保留
visibility: visible; 元素可见
3)设置元素位置,让其消失
如设置margin-top: 500px; 移除可视区域
4)overflow属性实现,将要隐藏元素移出父元素的范围
overflow: hidden;
5)opacity属性,实现元素的不可见
opacity: 0;
7、透明度属性
1)opacity属性——元素的不透明度,将内容、背景全部透明
兼容性:IE6、7、8不支持,IE9及以上版本和标准浏览器下支持
取值范围:0~1之间,0表示完全透明,1表示完全不透明,0-1之间表示半透明
2)filter属性——filter: Alpha(opacity=x)
兼容性:仅支持IE6、7、8、9,在IE10及以上版本中被废除
取值范围:0~100之间,0表示完全透明,1表示完全不透明,0-100之间表示半透明
3)rgba(r,g,b,a)——用于颜色的不透明度设置
兼容性:IE6、7、8不支持,IE9及更早版本的浏览器中都支持
r--red 红色 0-255之间
g--green 绿色 0-255之间
b--blue 蓝色 0-255之间
a--alpha 透明度 0-1之间
8、多栏布局
什么是自适应?
自适应:让同一个页面自动适应不同大小的设备,从而解决为不同设备提供不同版本页面的问题
自适应布局:解决在不同大小的设备上呈现相同网页的问题
8.1、两列自适应布局
html结构中——左右两个盒子;
左边固定宽度,右侧宽度100%;
为左侧盒子设置position:absolute;
右侧盒子添加子盒,设置padding-left,属性值为左侧盒子的宽度
8.2、圣杯布局——三列布局
1、html结构中——先主体内容后侧边栏;
2、两侧固定宽度,中间内容宽度设置width: 100%;
3、主体内容和左右侧边栏分别加浮动float: left;
4、左侧设置margin-left: -100%;将左侧拉到最左边;右侧设置margin-left: -右侧边宽度;
5、将中间露出来:在外面的大盒子上设置padding: 0 右侧边的宽度 0 左侧边宽度;
6、分别为左侧边和右侧边设置position:relative; 左侧设置left:-左侧边的宽度;还原左侧边。
7、右侧边设置right:-右侧边宽度;还原右侧边
8.3、双飞翼布局——三列布局
1、html结构中——先主体结构后侧边;
2、两侧固定宽度,中间宽度设置为width: 100%;
3、主体内容和左、右侧边分别加浮动float:left;
4、左侧边设置marign-left: -100%;将左侧拉到最左边;右侧设置margin-left: -右侧边宽度;
5、在主体内容盒的子盒上设置margin:0 右侧边宽度 0 左侧边的宽度(padding和margin设置都行);将中间内容露出来
9、等高布局
(1)利用内外间距相抵消,为父元素设置overflow:hidden;实现
每一列使用padding值撑开背景色;并且每一列使用padding撑开的多余的占位让margin负值抵消;
父级盒设置溢出隐藏
优点:结构简单,兼容所有浏览器
缺点:伪等高,需要合理控制margin和padding值
(2)利用内容撑开父元素的特点,为每一列添加对应的容器,进行相互嵌套,并在每个容器中添加背景颜色
三个嵌套的div负责背景,三列放在最内侧的div盒子中;
通过相对定位,分配三列的背景的位置;
通过margin负值,将内容移到对应的背景的位置;
父元素设置溢出隐藏
优缺点:扩展性好,可以实现自适应,结构嵌套复杂
(3)利用边框模拟背景,实现等高的显示效果
左、右边框颜色、内容背景分别负责三列的背景颜色;
通过margin值,同步列的位置
特点:扩展性差,三列+的布局不适用
精灵图&BFC
20200220
1、css技巧
1)css sprites——精灵技术、雪碧技术,通常也称“css图像拼合”或“贴图定位”。将一堆小图整合到一张大图上,
通过background-image、background-repeat属性显示图片,并且使用background-position属性实现图片的精确显示,
减少服务器对图片的请求数量。
优点:
减少网页的http请求,提高页面的性能;
减少图片命名上的困扰;
更换风格方便
缺点:
必须要限定容器的大小,背景图片位置需要计算;
维护的时候比较麻烦
css sprites的使用步骤:
制作具有多个状态的拼合图片;
给要显示背景的盒子一个固定的尺寸,以背景的方式加载,让其局部显示;
通过background-position背景图定位属性控制不同的显示状态
2)css小箭头
使用css绘制两个三角形,通过绝对定位让两个三角形不完全重叠,处于上层的三角形比处于下层的三角形的偏移属性多1像素
在IE6-中添加font-size: 0; line-height: 0; 目的——为了让i标签的height: 0; 生效
3)css滑动门技术
目的:为了使各种特殊形状的背景能够自适应元素中文本内容的多少
核心:利用css sprites、盒子的padding属性,适应不同字数的导航栏
2、BFC——block formatting context
1)什么是BFC?
块级格式化上下文,web页面可视化css视觉渲染的一部分,是页面中一个独立的渲染区域。用于决定块盒子的布局和浮动相互影响范围
的一个区域,可以改变父元素的渲染规则。
2)怎样生成BFC?
根元素
float: left|right;
position: absolute|fixed;
overflow: hidden|scroll|auto;
display: inline-block;
3)BFC特性:
内部的元素会在垂直方向是上一个接一个放置;
垂直方向上的距离由margin值决定,属于同一个BFC的两个相邻元素的margin值会发生重叠;
每个元素的左外间距与包含快的左边界相接触,浮动也是如此;
BFC区域不会与float元素区域重叠;
计算BFC的高度时,浮动子元素也会参与计算;
BFC是页面上的一个隔离的独立的容器,容器中子元素不会影响到外面元素,反之亦然
4)BFC解决的问题:
(1)外间距折叠问题——避免margin值叠加问题
(2)自适应两栏或三栏布局
自适应两栏布局——左侧固定宽度,右侧不设宽,则右侧宽度为自适应,随浏览器窗口宽度的变化而发生相应的变化
自适应三栏布局——左右两边宽度固定,中间不设宽,则中间宽度为自适应,随着浏览器窗口的变化而发生相应的变化
(3)防止字体环绕
(4)清浮动
阴影效果&ps操作
20200221
1、盒子和文字阴
1)盒子阴影box-shadow属性
box-shadow: x轴偏移量 y轴偏移量 阴影的羽化值 阴影的大小 阴影颜色 内阴影|外阴影(默认值);
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
x轴偏移量--水平方向的偏移,正值向右偏,负值向左偏
y轴偏移量——垂直方向的偏移,正值向下偏,负值向上偏
inset内阴影
注意:可以向一个元素中添加多个阴影,多组阴影之间用逗号隔开
2)文字阴影text-shadow属性
text-shadow: x轴偏移量 y轴偏移量 阴影的羽化值 阴影颜色;
2、文本溢出处理
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;
}
3、PS操作——Photoshop
1)打开文件:“文件”菜单-->“打开” ctrl+o
2)新建文件:“文件”菜单--“新建” ctrl+n
3)ctrl+s保存
注意:背景为透明,工作区显示灰白格子
4)常见工具
(1)移动工具 v
有多个图层并且有分组的psd文件,需要在属性栏勾选“自动选择”--“图层”
(2)矩形选框工具 m
设置ps中的单位:“编辑”菜单--“首选项”--“单位与标尺”--将标尺和文字改为“像素”
标尺:ctrl+r “视图”--“标尺”
参考线:在标尺上按住鼠标左键拖动,拉出参考线;水平参考线和垂直参考线的临时切换使用alt键。删除参考线只需要将参考线拖回到标尺即可;“视图”菜单--“清除参考线”
信息面板:F8 “窗口”菜单--“信息”
自由变换 ctrl + T
取消选区 ctrl+d
(3)拾色器--吸管工具 i
(4)文字工具 t
“窗口”菜单--“字符”
(5)抓手工具 空格键临时切换
(6)放大镜工具:z
在放大镜工具状态下,点击鼠标左键放大,按住alt键点击鼠标左键缩小;
在放大镜工具状态下,向外拖动放大,向内拖动缩小;
按住alt键,滚动鼠标滚轮,向外滚表示放大,向内滚表示缩小
(7)切片工具c ,shift+c工具组组内切换
在切片工具状态下,按住Ctrl键临时切换成切片选择器工具
(8)保存切片:Ctrl + alt + shift + s--“预设”(选择图片的格式),单击“存储”--选择保存位置,选择格式(仅限图像),切片(选中的切片),输入文件名--“保存”
(9)Ctrl + z撤销
(10)盖印可见图层 ctrl+alt+shift+e
4、图片格式
1)psd: 是ps的源文件格式,分层文件
2)在页面中用到的图片格式
jpg格式--jpeg:不支持透明,色彩丰富;适合复杂颜色及形状,网页中的高清大图
文件小;有损压缩,反复保存图片质量会下降
gif格式:支持透明和不透明,色彩丰富,支持动画;适用于色彩单一的图标、动画图片
文件小,没有兼容性问题;只支持256种颜色
png格式:支持透明、不透明、半透明;适用于网页中的小图,存在半透明效果的图片
png8: 功能跟GIF相似
png24:色彩丰富,对半透明效果的细节显示较好,IE6不支持
无损压缩;不支持动画,色彩丰富的图片尺寸较大
webp格式:文件较小,支持有损和无损压缩,支持动画、透明;浏览器兼容性不好;适用于支持webp格式的app和webview
5、拆分页面的原则
精确到1像素;
先上下,后左右,从外向里
先整体,后局部,再到细节
圆角属性&兼容问题&csshack
20200226
1、边框圆角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;/*左下角的圆角设置*/
2、兼容问题
IE8兼容问题:
1)IE8下图片边框问题:
解决方案:img{ border:none; }
2)IE8中背景复合属性写法问题
background: url(images/pic2.jpg) no-repeat 0 0;
3)IE低版本浏览器的透明度设置问题
opacity: 0.5;
filter: Alpha(opacity=50);
background: rgba(0,0,255,.5);
4)指定鼠标指针形状为手型, 并兼容所有浏览器
cursor: pointer;/*鼠标指针为手型*/
cursor: crosshair;/*鼠标指针为十字形*/
cursor: text;/*鼠标指针为文本的I型*/
cursor: wait;/*程序正忙*/
cursor: move;/*对象是可移动的*/
cursor: help;/*可用的帮助信息*/
cursor: default;/*默认光标*/
cursor: auto;/*默认*/
IE低版本浏览器兼容问题:
5)在IE6及更早版本的浏览器中定义小高问题
font-size: 0;
line-height: 0;
6)IE6及更早版本浏览器中浮动时产生的双边距问题
父元素加overflow: hidden;
子元素
float: left;
margin-left: 20px;
display: inline;
7)IE7中子元素相对定位,父元素overflow:hidden|auto失效的问题
父元素overflow: hidden; position: relative;
子元素position: relative;
8)IE7及更早版本的浏览器中,块级元素转行块元素,不在一行显示问题
display: inline-block;
*display: inline;
*zoom: 1;
9)IE7及更早版本的浏览器中,在li中出现2个或两个以上的子元素有浮动,li之间会产生空白间隙问题
vertical-align: top|middle|bottom;
3、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有风险,使用需谨慎!
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<![endif]-->
html5新增属性
20200227
1、HTML5的新特性
1)在网页上绘制图形的canvas元素
2)多媒体相关video和audio元素
3)对本地离线存储的更好支持
本地存储:提供了两种在客户端存储数据的新方法
localStorage 没有时间限制的数据存储
sessionStorage 针对session的数据存储
离线应用:用户可以在应用离线的时候查看网站信息
4)新增的语义化的标签和表单控件
2、HTML5中新增的语义化标签
新增的结构元素:
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来绘制
3、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]-->
4、新增多媒体标签
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属性:静音播放
autoplay:音频加载完毕后自动播放。
preload:1)auto 预加载音频视频。2)metadata 只预加载音频视频元数据。 有autoplay时此属性无效。
js控制媒体
play()播放
pause()暂停
load()重新加载
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>
5、新增的表单元素和属性
新增表单标签--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类型的输入域
css3新增属性
20200228
1、css3
选择器、框模型、背景和边框、文本效果、2D/3D转换、动画、多列布局、用户界面
2、css2和css3
css2: 性能和访问相对较差;偏向于表现;部分效果需要使用图片实现;无兼容
css3: 性能和效果都能得到兼顾;实现动画效果;在css2中需要使用图片实现的可以在Css3中使用代码实现;部分属性需要兼容处理
3、渐进增强和优雅降级
渐进增强:针对低版本浏览器进行页面建构,保证最基本功能的实现,然后再针对高级的浏览器进行效果设置、交互的实现,达到更好的用户体验
优雅降级:一开始构建完美的用户体验,然后再针对低版本的浏览器进行兼容
4、浏览器私有前缀——兼容性前缀
浏览器 内核 css兼容性前缀
Chrome|Safari webkit -webkit-
firefox gecko -moz-
Opera presto -o-
IE trident -ms-
书写顺序:先写带有私有前缀的css3属性,再写标准的css3属性
Autoprefixer插件,为css3属性自动生成兼容性前缀:在css文件中按下F1,执行“Autoprefixer run”
5、选择器
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元素
6、border-radius属性,圆角
border-top-left-radius: 左上角圆角设置
border-radius: 100px;
border-radius: 50%;
7、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; 背景被裁剪到边框区域,在内容区、内填充区、边框区域显示
8、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,...);
用户界面&多栏布局&过渡&2D&3D
20200302
1、用户界面
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属性值
2、多列布局——多栏布局
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; 横跨所有列合并
3、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;
4、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轴缩放
3种居中方法&帧动画&弹性盒子
20200303
1、盒子的绝对居中——水平、垂直居中
1)margin负间距实现带有width属性和height属性的绝对定位元素的居中
2)margin: auto;实现带有width属性和height属性的绝对定位元素的居中
3)transform: translate();实现绝对定位元素的居中
.box{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
2、帧动画
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类名是基本类名,必须添加;第二个类名为实现指定动画的样式名
3、弹性盒子--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; /*子元素的第一行文字的基线对齐*/
4、calc()函数:动态计算长度值的函数,css3新增
语法:calc(数学表达式)
支持+、-、*、/运算,先算括号里面的
注意:运算符前后添加空格
兼容性IE9+
less&移动端布局方案
20200304
1、css预处理--less
1)什么是预处理?
定义了一种新的语言
基本思想:用一门专门的编程语言,为css增加一些编程的特性,将css作为目标生成文件,然后开发者只需要使用这种语言进行编码工作即可
2)less:拥有一套自定义的语法和一个解析器,将程序员编写的样式规则,通过解析器编译成对应的css文件,才能被浏览器识别
编译的方法:命令行编译、编译器编译、在线编译、第三方编译工具等
好处:结构清晰,便于扩展,可以屏蔽浏览器中私有语法的差异,可以实现多重继承,完全兼容css代码
3)编写less文件
新建less文件:*.less
4)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,如果计算时超过这个区间,使用超过后的接近的范围值呈现
2、移动端浏览器
UC浏览器、QQ浏览器、百度手机浏览器、360浏览器、Chrome浏览器、搜狗手机浏览器、猎豹浏览器等等浏览器内核为webkit
3、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 允许用户手动缩放,默认值
4、常见移动端布局方案
1)流式布局——宽度自适应适配
垂直方向高度固定,水平方向使用百分比实现,并且使用弹性布局、浮动、定位等技术综合使用创建可扩展的流式布局
优先:可以很好解决自适应需求
缺点:实际效果可能会不协调,设计存在局限性
2)rem布局
rem——相对于根元素的font-size属性值的单位,css3新增单位
未经调整的浏览器的默认字号为16像素,1rem = 16px
rem布局的实现:
设置页面的viewport;
动态计算并设置html的font-size值;
按照PC端布局方式正常布局,将px单位换算成rem单位
3)vw适配
vw——viewport's width css3规范中视口单位
vh——viewport's height
vw和vh都是将屏幕分成100份,1vw等于屏幕宽度的1%
iphone5 320 1vw-- 3.2 多少个vw是100像素 100px * 1vw/3.2 = 31.25
iphone6 375 1vw--3.75 100px * 1vw/3.75 = 26.6666
vw布局:750px宽度 100vw = 750px 1vw = 7.5px
兼容:IE9+ IOS6.1+ Android4.4+
在PC端使用时要注意滚动条,移动端滚动条不占位
vw+rem——750px
1vw = 7.5px 1px = 0.133333vw
假设1rem = 100px, 100px = 13.333vw
html{
font-size: 13.333vw;
}
4)flexible.js + rem布局 (已经废弃)
解决的HTML5页面终端适配
实现原理:设备划分成10份,确定好html标签的font-size属性值
750px,html{ font-size: 75px; },页面中元素的rem值 = 元素的px值/75
使用方法:
1)在head标签中添加插件
方法一:直接将插件下载到本地,通过script标签对链接;
方法二:通过script标签对,加载阿里CDN文件:
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
2)将视觉稿中的px转换成rem
5)响应式布局
一个网站能适配多个终端,实现不同屏幕分辨率的终端上都能呈现出较好的显示效果,而且不需要为每个终端定制一个特定版本。
响应式布局的组成:弹性盒布局、图片、css media query的使用等等
响应式布局的原理:通过媒体查询检测不同的设备屏幕尺寸,适当调整标签显示布局,在每种设备屏幕宽度下呈现出不同的页面效果
6)Grid网格布局
flex布局——轴线,可以看成一维布局
1、基本介绍
Grid网格布局——二维布局
可以将容器分成“行”、“列”,产生单元格
2、基本概念
容器container——使用网格布局的区域
项目item——容器内使用网格定位的子元素
行row——容器中水平区域
列column——容器中垂直区域
单元格cell——行和列交叉区域,m行n列会产生的单元格数为m*n
网格线grid line——划分网格的线,m行有m+1根水平网格线
媒体查询&移动端尺寸计算
20200305
1、媒体查询
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">
移动端样式重置&兼容&像素
20200306
1、移动端样式重置
1)禁止用户选中文字,安卓无效
-webkit-user-select: none;
2)禁止长按弹出系统菜单。
-webkit-touch-callout none;
3)去除android下a/button/input标签被点击时产生的边框&去除ios下a标签被点击时产生的半透明灰色背景。
-webkit-tap-highlight color: rgba(0,0,0,0);
4)切换横竖屏或者用户自己通过浏览器设置的话,可以改变字体的大小(需要给body下的所有元素)。-webkit-text- size-adjust: 100%;
5)按钮在ios下都是圆角。
-webkit-appearance. none;
border-radius: 0;
6)修改placeholder的样 式。
input:-webkit-input-placeholder{ color:#000; }
input:focus:. webkit-input-placeholder{color:#f00; }
2、移动端特殊处理
1)超小字体处理一- -transform: scale()
2)动画定义3D启用硬件加速一开启GPU硬件加速模式从CPU--GPU
-webkit-transform: translate3d(0,0,0);
transform: translate(0,0,0);
3)圆角bug :部分Android手机圆角失效
background-clip: padding-box;
4)Input 的placeholder会出现文本位置偏上的情况
在input输入文本垂直居中的情况下,给placeholder设置padding-top,不设置行高
3、像素的三种分类
1)设备像素——物理像素
是设备固有的属性
早起只有物理像素,在不缩放的情况下1px表示1个物理像素;
iPhone6/7/8的物理像素为750*1334
设备分辨率——显示器的宽度和高度分别是多少个物理像素
2)设备独立像素——独立像素、逻辑像素
是操作系统定义的像素单位
iPhone6/7/8的独立像素为375*667,正好是物理像素的一半
逻辑分辨率:使用屏幕的宽度*高度来表示
设备像素比DPR——不同型号手机物理像素和独立像素的关系:
设备像素比 = 物理像素/独立像素
3)css像素
width: 100px; 在放大200%,宽度100个css像素
原本的元素宽度为100个独立像素,当缩放200%之后元素的宽度变为200个独立像素
css像素和独立像素的关系:缩放比例是css像素的边长/独立像素的边长
在缩放比例为100的情况下,一个css像素为一个独立像素
设备像素比——css像素和物理像素的关系
4、Retina显示屏:视网膜屏
1像素边框问题:
border-width: thin;//thin细边框、medium中等、thick粗
5、属性
outline属性:轮廓,不占位
outline: none; 去掉轮廓线
outline: 轮廓宽度 轮廓线型 轮廓颜色;
outline-offset属性:对轮廓进行偏移
letter-spacing属性:字间距
word-spacing属性:词间距
响应式布局方案
20200310
1、什么是响应式布局
一个网站能适配多个终端,实现不同屏幕分辨率的终端上都能呈现出较好的显示效果,而且不需要为每个终端定制一个特定版本。
响应式布局的组成:弹性盒布局、图片、css media query的使用等等
响应式布局的原理:通过媒体查询检测不同的设备屏幕尺寸,适当调整标签显示布局,在每种设备屏幕宽度下呈现出不同的页面效果
2、技术要点
1)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的设备
2)使用媒体查询适配对应样式
常用屏幕尺寸查询:
超小屏幕下 手机 <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){ 手机 }
3)响应式字体设置
rem单位相对于html的font-size值做调整
em单位相对于父元素的font-size值做调整
4)百分比布局:
宽度不固定,可以使用百分比;内外间距(左右方向)也可以使用百分比
在实现的过程中需要布局容器:
手机 <768px 布局容器的宽度100%
平板 >=768px 设置宽度为750px
桌面 >=992px 设置宽度970px
大屏 >=1200px 设置宽度1170px
浮动、定位、弹性盒子
响应式内容:
img标签:前景图,可以通过max-width属性控制图片的大小,height: auto;
响应式背景图片: background-size属性调整背景图的尺寸
3、响应式优缺点
优点:一站适配所有终端;减少工作量;节省时间;每个设备都能得到较好的设计
缺点:会加载更多的样式和脚本资源;设计难于精确控制;老版本的浏览器中兼容不好
网格布局方案
20200311
1、Grid网格布局
flex布局——轴线,可以看成一维布局
1)基本介绍
Grid网格布局——二维布局
可以将容器分成“行”、“列”,产生单元格
2)基本概念
容器container——使用网格布局的区域
项目item——容器内使用网格定位的子元素
行row——容器中水平区域
列column——容器中垂直区域
单元格cell——行和列交叉区域,m行n列会产生的单元格数为m*n
网格线grid line——划分网格的线,m行有m+1根水平网格线
2、相关属性
容器属性——写在父元素上
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
开始|结束|中间|默认
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634001.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现