HTML
一、快速入门
vscode新建文件,另存为,demo.html,英文状态下输入!,回车,也可以复制以下代码,然后点击保存,然后右键open in default browser
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>第一个页面</title>
</head>
<body>
写代码是一件非常快乐的事情
</body>
</html>
二、基本标签
标题标签:<h1>标题标签</h1>
注释标签:
换行标签:<br/>
段落标签: <p>段落标签</p>
分隔线标签:<hr/>
加粗标签: <strong>加粗</strong> or <b>加粗</b>
倾斜标签: <em>倾斜</em> or <i>倾斜</i>
删除线标签: <del>删除线</del> or <s>删除线</s>
下划线标签: <ins>下划线</ins> or <u>下划线</u>
小号字体标签:<small>小号字体</small><br>
大号字体标签:<big>大号字体</big><br>
下标标签:5m<sup>2</sup><br>
上标标签:H<sub>2</sub>0<br>
div和span标签: <div></div> <span></span>
三、图片标签
<img src="img.jpg" width="70%" align="middle" border="10"/>
属性 | 属性值 | 说明 |
---|
src | 图片路径 | 必须的 | alt | 文本 | 替换文本,当图片不能显示时,显示该文字 | title | 文本 | 提示文件,把鼠标放到图片上,显示的文字 | width | 像素 | 设置图像的宽度,高度宽度修改一个即可,另一个会等比例缩放 | height | 像素 | 设置图像的高度,高度宽度修改一个即可,另一个会等比例缩放 | border | 像素 | 设置图像的边框粗细 |
四、路径
相对路径:图片相对于html页面的位置
相对路径分类 | 符号 | 说明 |
---|
同一级路径 | | 图片位于html文件同一级,如 | 下一级路径 | / | 图片位于html文件下一级,如 | 上一级路径 | …/ | 图片位于html文件上一级,如 |
绝对路径:完整的网络地址或磁盘绝对路径
<img src="https://img1.baidu.com/it/u=2249115676,1805826708&fm=11&fmt=auto&gp=0.jpg">
五、超链接标签
超链接标签:<a href="跳转目标" target="弹出方式">文本或图像</a>
例如: <a href="http://www.baidu.com" target="_blank">百度</a>
<a href="index.html" target="_blank">首页</a>
<a href="#" >个人网站简介</a>
<a href="img.zip" >下载文件</a>
<a href="http://www.baidu.com" target="_blank"><img src="img.jpg" width="70%"/></a>
六、锚点链接
锚点链接:当我们点击链接,可以快速定位到页面中的某个位置
(1)在链接文本的href属性中,设置属性值为#名字的形式,如:
<a href="#two">第2集</a>
(2)找到目标位置标签,里面添加一个id属性=刚才的名字,如:
<h3 id="two">第2集介绍</h3>
七、特殊字符
空格
< 小于号
> 大于号
& &
¥ 人民币¥
© 版权
® 注册商标
° 摄氏度
± 正负号
× 乘号
÷ 除号
八、表格标签
<table>
<tr><th>姓名</th> <th>性别</th> <th>年龄</th></tr>
<tr><td>刘德华</td> <td>男</td> <td>56</td></tr>
<tr><td>张学友</td> <td>男</td> <td>58</td></tr>
</table>
九、合并单元格
- 先确定是跨行还是跨列
- 找到目标单元格,写上合并方式,上下两个,就是上面的,左右两个,就是左边的
- 删除多余的单元格
- rowspan="2"跨行合并,个数是合并2个,就是第二行第三行的第一个合并
- colspan="2"跨列合并,个数是合并2个,就是第二列第三列的第一个合并
<table width="500" height="249" border="1" cellspacing="0">
<tr><td></td> <td colspan="2"></td> </tr>
<tr><td rowspan="2"></td> <td></td> <td></td></tr>
<tr> <td></td> <td></td></tr>
</table>
十、列表标签(ul)
<ul>
<li>做真实的自己</li>
<li>用良心做教育</li>
</ul>
====================================================================================
<ol>
<li>用心做事</li>
<li>创造价值</li>
<li>联手企业</li>
<li>协同高校</li>
</ol>
=====================================================================================
<dl>
<dt>关注我们</dt>
<dd>新浪微博</dd>
<dd>官方微信</dd>
<dd>联系我们</dd>
</dl>
十一、表单标签(input)
<form action="success.html">
用户名:<input type="text" name="username" value="请输入用户名"><br>
密码:<input type="password" name="pwd"><br>
单选:男<input type="radio" name="sexy">女<input type="radio" name="sexy"><br>
多选:爱好:吃饭<input type="checkbox" name="hobby">睡觉<input type="checkbox" name="hobby">打豆豆<input type="checkbox" name="hobby"><br>
生日:<input type="date" name=""><br>
薪资:<input type="number" name=""><br>
电话:<input type="tel" name=""><br>
照片:<input type="file" name=""><br>
喜欢的颜色:<input type="color" name=""><br>
年龄范围:<input type="range" name=""><br>
隐藏域:<input type="hidden" name=""><br>
表单提交:<input type="submit" name=""><br>
数据重置:<input type="reset" value name=""><br>
图片提交按钮:<input type="image" src="" name=""><br>
普通按钮:<input type="button" name="" value="注册"><br>
</form>
十二、下拉标签(select)
<form action="success.html" method="post">
学历:
<select name="edu">
<option>研究生</option>
<option>本科</option>
<option>大专</option>
<option selected="selected">高职</option>
</select>
<br>
<textarea name="tt" cols="50" rows="5">留言板</textarea>
<input type="submit">
</form>
CSS
一、CSS基础选择器
1.1 标签选择器
给页面中同一类型的标签统一设置样式,缺点就是不能差异化设置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标签选择器</title>
<style>
p {
color: red;
font-size: 12px;
}
div {
color: pink;
font-size: 12px;
}
</style>
</head>
<body>
<p>男生</p>
<p>男生</p>
<p>男生</p>
<div>女生</div>
<div>女生</div>
<div>女生</div>
</body>
</html>
1.2 类选择器
差异化,单独修改一个或几个标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>类选择器</title>
<style>
.red {
color: red;
}
</style>
</head>
<body>
<ul>
<li class="red">做真实的自己</li>
<li>用良心做教育</li>
</ul>
</body>
</html>
1.3 id选择器
只能调用一次,别人不能再次使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>id选择器</title>
<style>
#pink {
color: pink;
}
</style>
</head>
<body>
<div id="pink">迈克尔杰克逊</div>
</body>
</html>
1.4 通配符选择器
自动给所有的元素都使用样式,div span ul 都变红色了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>通配符选择器</title>
<style>
* {
color: red;
}
</style>
</head>
<body>
<div>我的</div>
<span>我的</span>
<ul>
<li>还是我的</li>
</ul>
</body>
</html>
二、CSS字体属性(font)
font-family: '微软雅黑';
font-size: 20px;
font-weight: 700;
font-style: italic;
font: italic 700 16px '微软雅黑';
三、CSS文本属性(text)
3.1 文本颜色
表示 | 属性值 |
---|
预定义的颜色 | red,green,blue | 十六进制(最常用) | color: #FF0000; | RGB代码 | color: rgb(255, 0, 0); |
3.2 对齐文本(text-align)
text-align: center;
3.3 装饰文本(text-decoration)
text-decoration: underline;
text-decoration: line-through;
text-decoration: none;
3.4 文本缩进(text-indent)
text-indent: 2em;
3.5 行间距(line-height)
line-height: 26px;
四、CSS引入方式
4.1 行内样式表(行内式)
适合修改简单样式,把css代码,写到html文件的body下,在标签内部的style属性中设定css样式
<div style="color:red;font-size: 20px;">拼搏到无能为力,坚持到感动自己</div>
4.2 内部样式表(嵌入式)
练习时常用,把css代码,写到html文件的head下的style标签里,所以是嵌入式html的
4.3 外部样式表(链接式)(推荐)
(1)新建css文件,把所有css代码都放进这个文件中,命名为style.css,同一级路径直接写文件名即可
div {
color: pink;
}
(2)在html页面中,使用标签引入这个文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>外部样式表</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div>来呀,快活呀,反正有大把时光</div>
</body>
</html>
五、Emmet语法
5.1 快速生成html结构语法
- 生成标签直接输入标签名按tab键即可比如div然后tab键,就可以生成
- 如果想要生成多个相同标签加上乘号就可以了,比如div*3就可以快速生成3个div
- 如果有父子级关系的标签,可以用>,比如ul>li就可以了
- 如果有兄弟关系的标签,用+就可以了,比如div+p
- 如果生成带有类名或者id名字的,直接写.nav或者#banner就可以了
- 如果生成的div类名是有顺序的,可以用自增符号$
- 如果想要在生成的标签内部写内容可以用{}表示
<div class="nav"></div> == .nav
<div id="banner"></div> == #banner
<div class="demo1"></div> == .demo$*5
<div class="demo2"></div>
<div class="demo3"></div>
<div class="demo4"></div>
<div class="demo5"></div>
<div>好的</div> == div{好的}
5.2 整个页面对齐格式
右键,格式化文档
六、CSS复合选择器
6.1 后代选择器
外层标签写在前面,内层标签写在后面,中间空格隔开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
ol li {
color: red;
}
</style>
</head>
<body>
<ol>
<li>我是ol的孩子</li>
<li>我是ol的孩子</li>
<li>我是ol的孩子</li>
</ol>
<ul>
<li>我是ul的孩子</li>
<li>我是ul的孩子</li>
<li>我是ul的孩子</li>
</ul>
</body>
</html>
6.2 子元素选择器(.nav>a)
只能选择最近一级子元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.nav>a{
color: pink; 儿子变粉色
}
</style>
</head>
<body>
<div class="nav">
<a href="#">我是儿子</a>
<p>
<a href="#">我是孙子</a>
</p>
</div>
</body>
</html>
6.3 并集选择器
可以选择多组标签,同时为他们定义相同的样式,通常用于集体声明
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div,
p,
.pig li {
color: red;
}
</style>
</head>
<body>
<div>熊大</div>
<p>熊二</p>
<span>光头强</span>
<ul class="pig">
<li>小猪佩奇</li>
<li>猪爸爸</li>
<li>猪妈妈</li>
</ul>
</body>
</html>
6.4 伪类选择器
6.4.1 链接伪类选择器( a:hover)
如果要写这个,必须按照这四个顺序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
a:link {
color: black;
}
a:visited {
color: orange;
}
a:hover {
color: skyblue;
}
a:active {
color: green;
}
</style>
</head>
<body>
<a href="#">小猪佩奇</a>
</body>
</html>
6.4.2 focus伪类选择器(input:focus)
鼠标点到方框,方框背景颜色就变色了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
input:focus{
background-color: pink;
}
</style>
</head>
<body>
<input type="text">
<input type="text">
<input type="text">
</body>
</html>
七、CSS的元素显示模式
用来布局我们的网页,元素显示模式就是元素标签以什么方式进行显示
HTML元素一般分为块元素和行内元素两种类型
7.1 块元素
常见的块元素有
~
、、
块级元素的特点︰
- 比较霸道,自己独占一行
- 高度,宽度、外边距以及内边距都可以控制。
- 宽度默认是容器(父级宽度)的100%。
- 是一个容器及盒子,里面可以放行内或者块级元素。
- 文字元素不能放块元素,如
里不能放块元素
7.2 行内元素
常见的行内元素有、、、、、、、、、等,其中标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
行内元素的特点︰
- 相邻行内元素在一行上,一行可以显示多个。
- 高、宽直接设置是无效的。
- 默认宽度就是它本身内容的宽度。
- 行内元素只能容纳文本或其他行内元素。
- 链接里面不能再放链接
- 特殊情况链接里面可以放块级元素,但是给转换一下块级模式最安全
7.3 行内块元素
在行内元素中有几个特殊的标签——、、,它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。
行内块元素的特点︰
- 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
- 默认宽度就是它本身内容的宽度(行内元素特点)。
- 高度,行高、外边距以及内边距都可以控制(块级元素特点)。
7.4 元素显示模式的转换(display:block; )
行内元素转成块级元素: display: block;
块级元素转成行内元素: display: inline;
转换成行内块元素:display: inline-block;
八、CSS背景( background)
8.1 背景颜色(background-color)
background-color: pink;
background-color: transparent;
8.2 背景图片( background-image)
常见于开发网站的logo,或装饰性的小图片
background-image: url(img2.jpg);
8.3 背景平铺(background-repeat)
一个盒子里,图片会重复出现,这叫平铺
background-repeat: no-repeat;
8.4 背景图片位置(background-position)
background-position: center top;
background-position: 20px 50px;
background-position: 20px center;
8.5 背景固定( background-attachment)
background-attachment: scroll;
background-attachment: fixed;
8.6 背景复合写法
把前面的代码合到一句里,编译顺序无要求,企业开发,按照下面的顺序即可
background:black url(img2.jpeg) no-repeat fixed center top;
8.7 背景颜色半透明
background:rgba(0, 0, 0, 0.2);
九、CSS三大特性
9.1 层叠性
解决样式冲突问题,遵循就近原则,哪个样式离得近,就执行哪个,所以下面代码,粉色离得近就变粉色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: red;
}
div {
color: pink;
}
</style>
</head>
<body>
<div>我很厉害</div>
</body>
</html>
9.2 继承性
子标签继承父标签的某些样式,如文本颜色和字号
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
color: red;
font-size: 14px;
}
</style>
</head>
<body>
<div>
<p>我很牛逼</p>
</div>
</body>
</html>
9.3 优先级
当同一个元素指定多个选择器,就会有优先级的产生
- 选择器相同,则执行层叠性
- 选择器不同,则根据选择器权重执行
- 继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0
- 权重叠加,不会进位,比如复合选择器ul li,权重就是0,0,0,1+0,0,0,1=0,0,0,2
选择器 | 选择器权重 |
---|
继承或* | 0,0,0,0 | 元素选择器 | 0,0,0,1 | 类选择器,伪类选择器 | 0,0,1,0 | ID选择器 | 0,1,0,0 | 行内样式 style="" | 1,0,0,0 | !important | 无穷大 |
===================================================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.test {
color: red;
}
div {
color: pink;
}
</style>
</head>
<body>
<div class="test">真不错</div>
</body>
</html>
十、盒子模型
盒子模型的组成:border边框+cocntent内容+padding内边距+margin外边距
边框,内边距会影响盒子的实际大小
10.1 边框(border)
10.1.1 基本写法
border-width:5px;
border-style: solid;
border-color: pink;
属性 | 作用 |
---|
border-width:5px; | 边框粗细 | border-style: solid; | 边框样式,solid实线边框,dashed虚线边框,dotted点线边框 | border-color: pink; | 边框颜色 |
10.1.2 复合写法
复合写法:没有顺序,可以上下左右四条边框独立设置
border: 5px solid pink;
border-top: 5px solid pink;
10.1.3 表格细线边框
border-collapse: collapse;
10.1.4 圆角边框
border-radius: 10px;
10.1.5 制作圆形和圆角矩阵
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.yuanxing {
width: 200px;
height: 200px;
background-color: pink;
border-radius: 100px;
}
.juxing {
width: 300px;
height: 100px;
background-color: pink;
border-radius: 50px;
}
</style>
<body>
1.圆形的做法
<div class="yuanxing"></div>
2.圆角矩形的做法
<div class="juxing"></div>
</body>
</html>
10.2 内边距(padding)
10.2.1 基本写法
设置边框与内容之间的距离
padding-left: 20px;
padding-top: 30px;
padding-right: 20px;
padding-bottom: 20px;
10.2.2 复合写法
值的个数 | 表达意思 |
---|
padding: 5px; | 1个值,代表上下左右都有5像素内边距 | padding: 5px 10px; | 2个值,代表上下内边距5像素,左右内边距10像素 | padding: 5px 10px 20px; | 3个值,代表上内边距5像素,左右内边距10像素,下内边距20像素 | padding: 5px 10px 20px 30px; | 4个值,代表上5像素,右10像素,下20像素,左30像素,顺时针方向 |
10.3 外边距(margin)
10.3.1 外边距写法
控制盒子与盒子之间的距离,复合写法与padding一样
padding-left: 20px;
padding-top: 20px;
padding-right: 20px;
padding-bottom: 20px;
10.3.2 块级盒子水平居中对齐(margin: auto;)
必须满足两个条件:
- 盒子必须指定了width
- 盒子左右的外边距都设置为auto
常见的三种写法:
- margin-left: auto; margin-right: auto;
- margin: auto;
- margin: 0 auto;
10.3.3 行内元素和行内块元素水平居中(text-align: center;)
给其父元素添加 text-align: center; 即可
10.3.4 外边距合并-嵌套块元素塌陷(overflow:hidden)
解决方法:
- 可以为父元素定义上边框
- 可以为父元素定义上内边距
- 可以为父元素添加overflow:hidden
10.4 清除内外边距
? 网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致,因此我们在布局前,首先要清除下网页元素的内外边距,这句话也是css的第一行代码。
? 行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以了
* {
margin: 0;
padding: 0;
}
10.5 盒子阴影
box-shadow: 10px 10px 10px 10px black;
值 | 描述 |
---|
第一个 | 必须,水平阴影的位置,允许负值 | 第二个 | 必须,垂直阴影的位置,允许负值 | 第三个 | 可选,阴影模糊的虚实 | 第四个 | 可选,阴影的大小尺寸 | 第五个 | 可选,阴影的颜色 | 第六个 | 可选,外部阴影,内部阴影,不常用 |
10.6 文字阴影
text-shadow: 5px 5px 6px black;
值 | 描述 |
---|
第一个 | 必须,水平阴影的位置,允许负值 | 第二个 | 必须,垂直阴影的位置,允许负值 | 第三个 | 可选,阴影模糊的虚实 | 第四个 | 可选,阴影的颜色 |
十一、PS
11.1 查看像素
- 左上文件打开我们要的图片
- 上方视图==标尺
- 右击标尺,改为像素
- ctrl+加号 放大视图,ctrl+减号 缩小视图
- 左侧工具栏方块矩形选框工具==测量大小
- 旁边空白地方,点一下,取消选区
11.2 图层切图
- 打开PSD
- PS左侧工具栏,左1,右键==移动工具
- 点击要切的图片
- 右侧图层,有眼睛,点一下,看是不是
- 对着图层右键快速导出为PNG
- 如果图片文字分开,就按住shift,点两个文件,然后图层==合并图层,再导出
11.3 切片切图
- 左3右键==切片工具
- 划要切的矩形框
- 文件导出存储为web所用格式选择jpeg存储==选中的切片,即可
十二、浮动(float)
12.1 浮动简介
浮动最典型的应用:可以让多个块级元素一行内排列显示
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘
12.2 浮动特性-脱标
- 脱离标准普通流的控制移动到指定位置,俗称脱标
- 浮动的盒子不再保留原先的位置
12.3 浮动特性-浮动元素一行显示
- 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列
- 浮动的元素是互相贴靠在一起的,如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐
12.4 浮动特性-浮动元素具有行内块元素特性
任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性
12.5 浮动元素经常和标准流父级搭配使用
为了约束浮动元素位置,我们网页布局一般采取的策略是:
先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,复合网页布局第一准则
一个元素浮动了,其余的兄弟元素也要浮动。
十三、清除浮动
13.1 概念
13.2 额外标签法(clear:both)(不推荐)
会在浮动元素末尾添加一个空的标签。这个新标签必须是块级元素
优点:通俗易懂,书写方便 缺点:添加许多无意义的标签,结构化较差
比如:
13.3 父级添加(overflow:hidden)
优点:代码简洁 缺点:无法显示溢出的部分
与外边距合并解决元素塌陷代码一样
overflow:hidden
13.4 :after 伪元素法(clearfix:after)
优点:没有增加标签,结构更简单 缺点:照顾低版本浏览器 代表网站:百度 淘宝 网易
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
*zoom: 1;
}
.box {
width: 800px;
border: 1px solid blue;
margin: 0 auto;
}
<div class="box clearfix">我是大佬</div>
13.5 双伪元素
优点:代码更简洁 缺点:照顾低版本浏览器 代表网站:小米 腾讯
.clearfix::before,
.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
.box {
width: 800px;
border: 1px solid blue;
margin: 0 auto;
}
<div class="box clearfix">我是大佬</div>
十四、定位(position)
定位也是在摆放盒子,按照定位的方式移动盒子。
14.1 定位的组成
定位=定位模式+边偏移
边偏移则决定了该元素的最终位置,有top bottom left right四个属性
边偏移属性 | 示例 | 描述 |
---|
top | top: 80px | 顶端偏移量,定义元素相对于其父元素上边线的距离。 | bottom | bottom: 80px | 底部偏移量,定义元素相对于其父元素下边线的距离。 | left | left: 80px | 左侧偏移量,定义元素相对于其父元素左边线的距离。 | right | right: 80px | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
定位的盒子有了边偏移才有价值。 一般情况下,凡是有定位地方必定有边偏移。
定位模式用于指定一个元素在文档中的定位方式,通过css的position属性来设置,其值可以分为四个:
static:静态定位 relative:相对定位 absolute:绝对定位 fixed:固定定位
选择器 {
position: 属性值;
}
14.2 定位模式介绍
14.2.1 静态定位(static) 了解
- 静态定位是元素的默认定位方式。无定位的意思。它相当于 border 里面的none,静态定位static,不要定位的时候用。
- 静态定位 按照标准流特性摆放位置,它没有边偏移。
- position: static;
- 静态定位在布局时我们几乎不用
14.2.2 相对定位(relative) 重要
14.2.3 绝对定位(absolute) 重要
14.2.3.1 绝对定位的介绍
-
绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的。 -
语法:position: absolute; -
绝对定位的特点总结:(务必记住) 1.如果没有祖先元素或者祖先元素没有定位,则以浏览器为基准定位(Document 文档)。 2.如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。 3.绝对定位不再占有原先的位置。所以绝对定位是脱离标准流的。(脱标)
14.2.3.2 定位口诀 —— 子绝父相
意思是:子级是绝对定位的话,父级要用相对定位。
因为绝对定位的盒子是拼爹的,所以要和父级搭配一起来使用。
①子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
②父盒子需要加定位限制子盒子在父盒子内显示。
③父盒子布局时,需要占有位置,因此父亲只能是相对定位。
这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。
总结: 因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位
当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。
14.2.4 固定定位(fixed) 重要
提示:IE 6 等低版本浏览器不支持固定定位。
14.2.5 粘性定位(sticky) 了解
-
粘性定位可以被认为是相对定位和固定定位的混合。 Sticky 粘性的 -
语法: 选择器 {
position: sticky;
top: 10px;
}
-
粘性定位的特点: 1.以浏览器的可视窗口为参照点移动元素(固定定位特点) 2.粘性定位占有原先的位置(相对定位特点) 3.必须添加 top 、left、right、bottom 其中一个才有效 跟页面滚动搭配使用。 兼容性较差,IE 不支持。
14.3 定位的应用
14.3.1. 固定定位小技巧: 固定在版心左侧位置。
小算法:
1.让固定定位的盒子 left: 50%. 走到浏览器可视区(也可以看做版心) 的一半位置。
2.让固定定位的盒子 margin-left: 版心宽度的一半距离,多走版心宽度的一半位置
就可以让固定定位的盒子贴着版心右侧对齐了。
14.3.2. 堆叠顺序(z-index)
14.4 定位的拓展
14.4.1 绝对定位的盒子居中
注意:加了绝对定位/固定定位的盒子不能通过设置 margin: auto 设置水平居中。
但是可以通过以下计算方法实现水平和垂直居中,可以按照下图的方法:
- left: 50%; 让盒子的左侧移动到父级元素的水平中心位置;
- margin-left: -100px; 让盒子向左移动自身宽度的一半。
- top: 50%; 垂直居中位置;
- margin-top: -100px;
14.4.2 定位特殊特性
绝对定位和固定定位也和浮动类似。
1.行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
2.块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
14.4.3 脱标的盒子不会触发外边距塌陷
浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。 (我们以前是用padding border overflow解决的,也就是说,我们给盒子改为了浮动或者定位,就不会有垂直外边距合并的问题了。
14.4.4 绝对定位(固定定位)会完全压住盒子
浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)
但是绝对定位(固定定位) 会压住下面标准流所有的内容。
浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素
十五、网页布局总结
传统网页布局的三种方式:普通流,浮动,定位
通过盒子模型,清楚知道大部分html标签是一个盒子。
通过CSS浮动、定位 可以让每个盒子排列成为网页。
一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专门用法。
15.1. 标准流
普通流(也叫标准流/文档流)
可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。
就是标签按照规定好默认方式排列,是最基本的布局方式
- 块级元素会独占一行,从上向下顺序排列
- 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行
15.2. 浮动
可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局
15.3. 定位
定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。
十六、元素的显示与隐藏
? 让一个元素在页面中消失或者显示出来
? 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!
16.1. display 显示(重点)
-
display 设置或检索对象是否及如何显示。 display: none 隐藏对象
display:block 除了转换为块级元素之外,同时还有显示元素的意思。
-
特点: display 隐藏元素后,不再占有原来的位置。 -
后面应用及其广泛,搭配 JS 可以做很多的网页特效。
16.2. visibility 可见性 (了解)
-
visibility 属性用于指定一个元素应可见还是隐藏。 visibility:visible ; 元素可视
visibility:hidden; 元素隐藏
-
特点:visibility 隐藏元素后,继续占有原来的位置。 -
如果隐藏元素想要原来位置, 就用 visibility:hidden -
如果隐藏元素不想要原来位置, 就用 display:none
16.3. overflow 溢出(重点)
- overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。
属性值 | 描述 |
---|
visible | 不剪切内容也不添加滚动条 | hidden | 不显示超过对象尺寸的内容,超出的部分隐藏掉 | scroll | 不管超出内容否,总是显示滚动条 | auto | 超出自动显示滚动条,不超出不显示滚动条 |
- 一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。
- 但是如果有定位的盒子, 请慎用overflow:hidden 因为它会隐藏多余的部分。
十七、精灵图(sprites)
17.1 精灵图的简介
? 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。
? 为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。
? 将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。
17.2 精灵图的使用
使用精灵图核心:
- 精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。
- 这个大图片也称为 sprites 精灵图 或者 雪碧图
- 移动背景图片位置, 此时可以使用 background-position 。
- 移动的距离就是这个目标图片的 x 和 y 坐标。注意网页中的坐标有所不同
- 因为一般情况下都是往上往左移动,所以数值是负值。
- 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。
使用精灵图核心总结:
-
精灵图主要针对于小的背景图片使用。 -
主要借助于背景位置来实现—background-position 。 -
一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)
17.3 案例:拼出pink
结构
<span class="p">p</span>
<span class="i">i</span>
<span class="n">n</span>
<span class="k">k</span>
样式
span {
display: inline-block;
background: url(images/abcd.jpg) no-repeat;
}
.p {
width: 100px;
height: 112px;
background-position: -493px -276px;
}
.i {
width: 60px;
height: 108px;
background-position: -327px -142px;
}
.n {
width: 108px;
height: 109px;
background-position: -215px -141px;
}
.k {
width: 105px;
height: 114px;
background-position: -495px -142px;
}
十八、字体图标
18.1 字体图标的产生
字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标。
精灵图是有诸多优点的,但是缺点很明显。
1.图片文件还是比较大的。
2.图片本身放大和缩小会失真。
3.一旦图片制作完毕想要更换非常复杂。
此时,有一种技术的出现很好的解决了以上问题,就是字体图标 iconfont。
字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体。
18.2 字体图标的优点
轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求
- 灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
- 兼容性:几乎支持所有的浏览器
- 注意: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。
18.3 字体图标的下载
推荐下载网站:
- icomoon 字库 http://icomoon.io 推荐指数 ★★★★★
IcoMoon 成立于 2011 年,推出了第一个自定义图标字体生成器,它允许用户选择所需要的图标,使它们成一字型。该字库内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。
打开网址Icomoon App选择2个create fontdownload
- 阿里 iconfont 字库 http://www.iconfont.cn/ 推荐指数 ★★★★★
这个是阿里妈妈 M2UX 的一个 iconfont 字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用 AI制作图标上传生成。 重点是,免费!
18.4 字体图标的引入
下载完毕之后,注意原先的文件不要删,后面会用。
(1)http://icomoon.io
(2)打开网址Icomoon App选择2个generate fontdownload
(3)解压出来 里面的 fonts 文件夹放入页面根目录下,也就是vscode里面的html文件的同级目录
(4)在 CSS style中加入,解压出来的style.css的第一段 @font-face
这一段复制黏贴
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?7kkyc2');
src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
url('fonts/icomoon.woff?7kkyc2') format('woff'),
url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
(5)html 标签内添加小图标。在解压出来的demo.html 复制图标e91b的右边小方框
<body>
<span>?</span>
</body>
(6)给标签定义字体。在css style里加入以下代码
span {
font-family: "icomoon";
}
注意:务必保证 这个字体和上面@font-face里面的字体保持一致
(7)完整是这样的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?gedlt2');
src: url('fonts/icomoon.eot?gedlt2#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?gedlt2') format('truetype'),
url('fonts/icomoon.woff?gedlt2') format('woff'),
url('fonts/icomoon.svg?gedlt2#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
span {
font-family: icomoon;
}
</style>
</head>
<body>
<span>?</span>
</body>
</html>
18.5 字体图标的追加
如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。
打开网址Icomoon Appimport icons解压出来的selection.jsonyesgenerate fontdownload
把压缩包里面的 selection.json 从新上传,并替换原来的文件即可。
十九、CSS 三角
19.1 介绍
网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标。
一张图, 你就知道 CSS 三角是怎么来的了, 做法如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCZhgk5D-1633686133035)(C:\Users\Hebe\Desktop\前端学习\09-前端基础CSS第七天\笔记\images\1571520965966.png)]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box2 {
width: 0;
height: 0;
border: 10px solid transparent;
border-left-color: pink;
}
</style>
</head>
<body>
<div class="box2"></div>
</body>
</html>
- 我们用css 边框可以模拟三角效果
- 宽度高度为0
- 我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了
- 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;
19.2 案例:京东效果三角
盒子正上方 有小三角凸起
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CSS 三角制作</title>
<style>
.jd {
position: relative;
width: 120px;
height: 249px;
background-color: pink;
}
.jd span {
position: absolute;
right: 15px;
top: -10px;
width: 0;
height: 0;
line-height: 0;
font-size: 0;
border: 5px solid transparent;
border-bottom-color: pink;
}
</style>
</head>
<body>
<div class="jd">
<span></span>
</div>
</body>
</html>
二十、CSS 用户界面样式
所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。
20.1 鼠标样式 cursor
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>用户界面样式-鼠标样式</title>
</head>
<body>
<ul>
<li style="cursor: default;">我是默认的小白鼠标样式</li>
<li style="cursor: pointer;">我是鼠标小手样式</li>
<li style="cursor: move;">我是鼠标移动样式</li>
<li style="cursor: text;">我是鼠标文本样式</li>
<li style="cursor: not-allowed;">我是鼠标禁止样式</li>
</ul>
</body>
</html>
属性值 | 描述 |
---|
default | 小白 默认 | pointer | 小手 | move | 移动 | text | 文本 | not-allowed | 禁止 |
20.2 轮廓线 outline
给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。
input {
outline: none;
}
20.3 防止拖拽文本域 resize
实际开发中,我们文本域右下角是不可以拖拽的。
textarea{ resize: none; }
二一、vertical-align 属性应用
CSS 的 vertical-align 属性使用场景: 经常用于设置图片和文字垂直对齐。
语法:
vertical-align : baseline | top | middle | bottom
21.1 图片、表单和文字对齐
图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。
此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。
21.2 解决图片底部默认空白缝隙问题
bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。
主要解决方法有两种:
1.给图片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)
2.把图片转换为块级元素 display: block;
二二、溢出的文字省略号显示
22.1 单行文本溢出显示省略号
单行文本溢出显示省略号–必须满足三个条件:
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
22.2 多行文本溢出显示省略号(了解)
多行文本溢出显示省略号,有较大兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webkit内核)
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。
二三、常见布局技巧
23.1. margin负值运用
1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框
2.鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有定位,则加相对定位(保留位置),如果有定位,则加z-index)
23.2 文字围绕浮动元素
巧妙运用浮动元素不会压住文字的特性
23.3 行内块巧妙运用,上一页,下一页
页码在页面中间显示:
- 把这些链接盒子转换为行内块, 之后给父级指定 text-align:center;
- 利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中
23.4. CSS 三角强化 价格标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CSS三角强化的巧妙运用</title>
<style>
.price {
width: 160px;
height: 24px;
line-height: 24px;
border: 1px solid red;
margin: 0 auto;
}
.miaosha {
position: relative;
float: left;
width: 90px;
height: 100%;
background-color: red;
text-align: center;
color: #fff;
font-weight: 700;
margin-right: 8px;
}
.miaosha i {
position: absolute;
right: 0;
top: 0;
width: 0;
height: 0;
border-color: transparent #fff transparent transparent;
border-style: solid;
border-width: 24px 10px 0 0;
}
.origin {
font-size: 12px;
color: gray;
text-decoration: line-through;
}
</style>
</head>
<body>
<div class="price"> <span class="miaosha"> ¥1650 <i></i> </span> <span class="origin">¥5650</span> </div>
</body>
</html>
HTML5新特性
一、概述
HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。
这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。
二、新增语义化标签
<header> 头部标签<nav> 导航标签<article> 内容标签<section> 定义文档某个区域<aside> 侧边栏标签<footer> 尾部标签
三、新增多媒体标签
多媒体标签分为 音频 audio 和视频 video 两个标签
我们可以很方便的在页面中嵌入音频和视频
3.1 视频标签- video
3.1.1 基本使用
当前 元素支持三种视频格式: 尽量使用 mp4格式
使用语法:
<video src="media/mi.mp4"></video>
3.1.2 兼容写法
由于各个浏览器的支持情况不同,所以我们会有一种兼容性的写法,这种写法了解一下即可
下面这种写法,浏览器会匹配video标签中的source,如果支持就播放,如果不支持往下匹配,直到没有匹配的格式,就提示文本
<video controls="controls" width="300">
<source src="move.ogg" type="video/ogg" >
<source src="move.mp4" type="video/mp4" >
您的浏览器暂不支持 <video> 标签播放视频
</ video >
3.1.3 常用属性
autoplay 自动播放
- 注意: 在google浏览器上面,默认禁止了自动播放,如果想要自动播放的效果,需要设置 muted属性
width 宽度height 高度loop 循环播放src 播放源muted 静音播放
示例代码:
<video src="media/mi.mp4" autoplay="autoplay" muted="muted" loop="loop" poster="media/mi9.jpg"></video>
3.2 音频标签- audio
3.2.1 基本使用
当前 元素支持三种音频格式: 尽量使用 mp3格式
使用语法:
<audio src="media/music.mp3"></audio>
3.2.2 兼容写法
由于各个浏览器的支持情况不同,所以我们会有一种兼容性的写法,这种写法了解一下即可
上面这种写法,浏览器会匹配audio标签中的source,如果支持就播放,如果不支持往下匹配,直到没有匹配的格式,就提示文本
< audio controls="controls" >
<source src="happy.mp3" type="audio/mpeg" >
<source src="happy.ogg" type="audio/ogg" >
您的浏览器暂不支持 <audio> 标签。
</ audio>
3.2.3 常用属性
示例代码:
<audio src="media/music.mp3" autoplay="autoplay" controls="controls"></audio>
- 音频标签和视频标签使用方式基本一致
- 谷歌浏览器把音频和视频自动播放禁止了
- 我们可以给视频标签添加 muted 属性来静音播放视频,音频不可以(可以通过JavaScript解决)
- 视频标签是重点,我们经常设置自动播放,不使用 controls 控件,循环和设置大小属性
四、新增表单元素
在H5中,帮我们新增加了很多类型的表单,这样方便了程序员的开发
<form action="">
<ul>
<li>邮箱: <input type="email" /></li>
<li>网址: <input type="url" /></li>
<li>日期: <input type="date" /></li>
<li>时间: <input type="time" /></li>
<li>数量: <input type="number" /></li>
<li>手机号码: <input type="tel" /></li>
<li>搜索: <input type="search" /></li>
<li>颜色: <input type="color" /></li>
<li> <input type="submit" value="提交"></li>
</ul>
</form>
属性 | 值 | 说明 |
---|
required | required | 表单元素内容不为空 | placeholder | 提示文本 | 表单提示信息 | autofocus | autofocus | 自动聚焦属性,打开百度,光标自动定到搜索框 | autocomplete | off/on | 以前用户填写过,并且成功提交了,这边会直接显示,不用再次填写了 | multiple | multiple | 可以多选文件提交 |
CSS3新特性
一、CSS3 的现状
- 新增的CSS3特性有兼容性问题,ie9+才支持
- 移动端支持优于 PC 端
二、CSS3 新增选择器
2.1 属性选择器
**注意:**类选择器、属性选择器、伪类选择器,权重为 10。
示例代码:
input[value] {
color: pink;
}
<input type="text" value="请输入用户名">
<input type="text">
==============================================================================
input[type=text] {
color: pink;
}
<input type="text" name="" id="">
<input type="password" name="" id="">
==============================================================================
div[class^=icon] {
color: red;
}
<div class="icon1">小图标1</div>
<div class="icon2">小图标2</div>
<div class="icon3">小图标3</div>
<div class="icon4">小图标4</div>
==============================================================================
section[class$=data] {
color: blue;
}
<div class="icon1-data">小图标1</div>
<div class="icon2-data">小图标2</div>
<div class="icon3-data">小图标3</div>
<div class="icon4-data">小图标4</div>
2.2 结构伪类选择器
类选择器、属性选择器、伪类选择器,权重为 10
结构伪类选择器主要根据文档结构来选择器元素, 常用于根据父级选择器里面的子元素
2.2.1 E:first-child
E:last-child 则是选择到了最后一个li标签
匹配父元素的第一个子元素E
<style>
ul li:first-child{
background-color: red;
}
</style>
<ul>
<li>列表项一</li>
<li>列表项二</li>
<li>列表项三</li>
<li>列表项四</li>
</ul>
2.2.2 E:nth-child(n)
匹配到父元素的第n个元素
公式 | 取值 |
---|
2n | 偶数 | 2n+1 | 奇数 | 5n | 5 10 15 | n+5 | 第五个开始,包含第五个 | -n+5 | 前五个,包含第五个 |
2.2.3 E:nth-child 与 E:nth-of-type 的区别
这里只讲明 E:nth-child(n) 和 E:nth-of-type(n) 的区别
剩下的 E:first-of-type E:last-of-type E:nth-last-of-type(n) 同理做推导即可
E:nth-child(n) 匹配父元素的第n个子元素E,也就是说,nth-child 对父元素里面所有孩子排序选择(序号是固定的) 先找到第n个孩子,然后看看是否和E匹配E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E,也就是说,对父元素里面指定子元素进行排序选择。 先去匹配E ,然后再根据E 找第n个孩子
<style>
ul li:nth-child(2){
color: red;
}
ul li:nth-of-type(2){
background-color: green;
}
</style>
<ul>
<li>列表项一</li>
<p>乱来的p标签</p>
<li>列表项二</li>
<li>列表项三</li>
<li>列表项四</li>
</ul>
2.3 伪元素选择器(div::before)
伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构
- before 和 after 创建一个元素,但是属于行内元素
- 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
- 语法: element::before {}
- before 和 after 必须有 content 属性
- before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素
伪元素选择器和标签选择器一样,权重为 1
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
}
div::before {
content: '我';
}
div::after {
content: '小猪佩奇';
}
</style>
<body>
<div>
是
</div>
</body>
三、盒子模型(box-sizing: border-box)
CSS3 中可以通过 box-sizing 来指定盒模型,有2个值:即可指定为 content-box、border-box,这样我们计算盒子大小的方式就发生了改变
可以分成两种情况:
- box-sizing: content-box 盒子大小为 width + padding + border (以前默认的)
- box-sizing: border-box 盒子大小为 width
如果盒子模型我们改为了box-sizing: border-box , 那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)
四、图标变模糊 – filter
filter CSS属性将模糊或颜色偏移等图形效果应用于元素
filter: 函数();
例如: filter: blur(5px);
五、计算盒子宽度 – calc
calc() 此CSS函数让你在声明CSS属性值时执行一些计算
括号里面可以使用 + - * / 来进行计算
width: calc(100% - 30px);
六、CSS3 过渡属性
过渡动画:是从一个状态渐渐的过渡到另外一个状态
我们现在经常和 :hover 一起 搭配使用。
语法:
transition: 要过渡的属性 花费时间 运动曲线 何时开始;
<style>
div {
width: 200px;
height: 100px;
background-color: pink;
transition: width 0.5s;
}
div:hover {
width: 400px;
}
</style>
<body>
<div></div>
</body>
- 属性 : 想要变化的 css 属性, 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都变化过渡, 写一个all 就可以
- 花费时间: 单位是 秒(必须写单位) 比如 0.5s
- 运动曲线: 默认是 ease (可以省略)
- 何时开始:单位是 秒(必须写单位)可以设置延迟触发时间 默认是 0s (可以省略)
- 后面两个属性可以省略
- 记住过渡的使用口诀: 谁做过渡给谁加
七、2D转换(transform)
转换可以实现元素的位移、旋转、缩放等效果
7.1 移动:translate
不会影响到其他元素的位置
transform: translate(100px,100px);
transform: translate(0,100px); 移动y轴,上下动
transform: translate(100px,0); 移动x轴,左右动
transform: translate(50%,50%); 移动的距离是盒子自身的高度宽度的50%
7.2 旋转:rotate
- rotate里面的度数,单位是deg
- 角度为正,顺时针;角度为负,逆时针
- 默认旋转的中心点是元素的中心点
transform: rotate(90deg); 顺时针旋转90度
transform-origin: left bottom;
transform: rotate(90deg); 左下角为中心点,顺时针旋转90度
7.3 缩放:scale
transform: scale(2,1); 修改宽度为原来的2倍,高度为原来的1倍
transform: scale(2); 修改宽度高度等比例缩放为原来的2倍
transform: scale(0.5,0.5); 缩小一半
八、动画(animation)
8.1 基本使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
@keyframes move {
0% {
transform: translateX(0px)
}
100% {
transform: translateX(1000px)
}
}
div {
width: 200px;
height: 200px;
background-color: pink;
animation-name: move;
animation-duration: 2s;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
8.2 动画序列
- 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。
- 动画序列可以分段 25%,意味着定义10s,走到25%,花费2.5秒
- 请用百分比来规定变化发生的时间,或用关键词"from"和"to”,等同于0%和100%。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
@keyframes move {
0% {
transform: translate(0, 0);
}
25% {
transform: translate(1000px, 0);
}
50% {
transform: translate(1000px, 500px);
}
75% {
transform: translate(0, 500px);
}
100% {
transform: translate(0, 0);
}
}
div {
width: 200px;
height: 200px;
background-color: pink;
animation-name: move;
animation-duration: 5s;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
8.3 常见属性
属性 | 描述 |
---|
keyframes | 规定动画。 | animation | 所有动画属性的简写属性,除了animation-play-state属性。 | animation-name | 规定@keyframes动画的名称。(必须的) | animation-duration | 规定动画完成一个周期所花费的秒或亳秒,默认是0。(必须的) | animation-timing-function | 规定动画的速度曲线,默认是“ease"就是低俗开始,然后加快,结束前变慢。。匀速是linear。。steps()指定了时间函数中的步长 | animation-delay | 规定动画何时开始,默认是0. | animation-iteration-count | 规定动画被播放的次数,默认是1,还有infinite无限 | animation-direction | 规定动画是否在下一周期逆向播放,默认是“normal " 想要反方向alternate逆播放 | animation-play-state | 规定动画是否正在运行或暂停。默认是"running",还有"pause". | animation-fill-mode | 规定动画结束后状态,保持forwards 回到起始backwards |
8.4 简写属性
animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态
九、3D转换(transform)
9.1 3D位移
transform: translate3d(100px,100px,100px); 对应x,y,z
9.2 透视(perspective)
透视写在被观察元素的父盒子上面
d:就是视距,就是一个距离人的眼睛到屏幕的距离
z:就是z轴,物体距离屏幕的距离,z轴越大我们看到的物体就越大
<style>
body {
perspective: 500px;
}
div {
width: 200px;
height: 200px;
background-color: pink;
transform: translate3d(100px,100px,100px);
}
</style>
9.3 3D旋转
transform: rotateX(180deg); 奥运会体操单杠 上下转
transform: rotateY(180deg); 钢管舞 左右转
transform: rotateZ(180deg); 类似2D,顺时针旋转,类似抽奖转盘
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
perspective: 500px;
}
img {
width: 200px;
display: block;
margin: 100px auto;
transition: all 2s;
}
img:hover {
transform: rotateY(180deg);
}
</style>
</head>
<body>
<img src="pic.jpg" alt="">
</body>
</html>
9.4 3D呈现(transform-style)
- 控制子元素是否开启三维立体环境
- transform-style: flat; 子元素不开启3D立体空间,默认的
- transform-style: preserve-3d; 子元素开启立体空间
- 代码写给父级 但是影响的是子盒子
十、浏览器私有前缀
是为了兼容老版本的写法,新版本的浏览器无需添加
10.1 私有前缀
- -moz-:代表Firefox浏览器私有属性
- -ms-:代表ie浏览器私有属性
- -webkit-:代表safari chrome浏览器私有属性
- -o-:代表Opera浏览器私有属性
10.2 提倡写法
-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
|