前端学习笔记
实践出真知
HTML + CSS
一、HTML初识
1.基础认知
1.1.网页
网页的组成:
- 文字
- 图片
- 音频
- 超链接
- 视频
常见的五大浏览器:
- IE、火狐、谷歌(accounting for the most)、Safari、欧朋
浏览器渲染引擎(浏览器内核):
浏览器出品的公司不同,内在的渲染引擎也是不同的:
| 浏览器 | 内核 | 备注 |
|---|---|---|
| IE | Trident | IE、猎豹安全、360极速浏览器、百度浏览器 |
| Firefox | Gecko | 火狐浏览器内核 |
| Safari | Webkit | 苹果浏览器内核 |
| Chrome/Opera | Blink | Blink其实是Webkit的分支 |
- 渲染引擎不同,倒置解析相同代码时的速度、性能、效果也不相同
- 谷歌浏览器的渲染速度快、性能高、效果好
1.2.Web标准
Web标准:让不同的浏览器按照相同的标准显示结果,让展示的结果统一!
| 构成 | 语言 | 说明 |
|---|---|---|
| 结构 | HTML | 页面元素和内容 |
| 表现 | CSS | 网页元素的外观和位置等页面样式 |
| 行为 | JavaScript | 网页模型的定义与页面交互 |
2.HTML的概念
HTML(Hyper Text Markup Language) :超文本标记语言
2.1.HTML页面固定结构
<html>
<head>
<title>网页标题</title>
</head>
<body>
网页主体内容
</body>
</html>
2.1.1.VS Code
特点:速度快、体积小、插件多
| 快捷键 | 说明 |
|---|---|
| 英文 + Tab | 快捷生成标签 |
| Ctrl + S | 保存文件 |
| alt + B | 快速查看网页效果 |
| ! + tab | 快速生成结构标签 |
| Ctrl + / | 快捷注释 |
2.2.2.HTML标签属性
属性注意点:
- 标签的属性写在开始标签内部
- 标签上可以同时存在多个属性
- 属性之间以空格隔开
- 标签名与属性之间必须以空格隔开
- 属性之间没有顺序之分
基本架构:
<!DOCTYPE html>
<html lang="en">
<header>
<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>
</header>
<body>
写代码是一件非常快乐的事情!
</body>
</html>
<!DOCTYPE>文档类型声明,告诉浏览器使用哪种HTML版本来显示网页
当前页码采用的是HTML5版本来显示网页。
注意:
- 声明位于文档最前面的位置,处于标签之前;
- 不是一个HTML标签,它就是文档类型声明标签。
lang语言种类:
用来定义当前文档显示的语言
<html lang = "en"></html>
- en定义语言为英文;
- zh-CN定义语言为中文
简单来说定义en就是英文网页,定义为zh-CN就是中文网页
其实对于文档显示来说,定义成en的文档也可以显示中文,定义zh-CN的文档也可以显示英文
字符集:
字符集(Character set)是多个字符的集合。以便计算机能够识别和存储各种文字。
在标签内,可以通过标签的charset属性来规定HTML文档应该使用哪种字符编码。
charset常用的值有:GB2312、BIG5、GBK和UTF-8,其中UTF-8也被称为万国码,基本包括了全世界所有国家需要使用到的字符
3.HTML标签
3.1.标题标签
<h1>1级标题</h1>
<h2>2级标题</h2>
<h3>3级标题</h3>
<h4>4级标题</h4>
<h5>5级标题</h5>
<h6>6级标题</h6>
3.2.段落和换行标签
<p>我是一个段落标签</p>
<br/>强制换行,break的缩写,换行标签/关闭标签
3.3.文本格式化标签
| 语义 | 标签 | 说明 |
|---|---|---|
| 加粗 | <strong></strong>或<b></b> |
更推荐使用<strong> 标签加粗 语义更强烈 |
| 倾斜 | <em></em>或<i></i> |
更推荐使用<em> 语义更强烈 |
| 删除线 | <del></del>或<s></s> |
更推荐使用<del> |
| 下划线 | <ins></ins>或<u></u> |
更推荐使用<ins> 语义更强烈 |
3.4.div和span标签
<div>和<span>是没有语义的,它们就是一个盒子,用来装内容的。
<div>这是头部</div>
<span>今日价格</span>
div是division的缩写,表示分割、分区。span意为跨度、跨距。
特点:
<div></div>标签用来布局,一行只能放一个。大盒子<span></span>标签用来布局,一行可以放多个。小盒子
3.5.图像标签和路径
图像标签:
<img>标签用于定义HTML页面中的图像。
<img src = "图像URL"/>(/关闭标签)
单词image的缩写
src是<img>标签的必须属性,它用于指定图像文件的路径和文件名。
何为属性:简单理解就是属于这个图像标签的特性
图像标签的其他属性:
| 属性 | 属性值 | 说明 |
|---|---|---|
| src | 图片路径 | 必须属性 |
| alt | 文本 | 替换文本。图像不能正常显示则用文字替换 |
| title | 文本 | 提示文本。鼠标放到图片上,显示的文字 |
| width | 像素 | 设置图像的宽度 |
| height | 像素 | 设置图像的高度 |
| border | 像素 | 设置图像的边框粗细 |
相对路径:
| 相对路径分类 | 符号 | 说明 |
|---|---|---|
| 同一级路径 | 图像文件位于HTML文件同一级 | |
| 下一级路径 | / | 图像文件位于HTML文件下一级 |
| 上一级路径 | ../ | 图像文件位于HTML文件上一级 |
绝对路径:
绝对路径:是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
eg:D:\One Driver\OneDrive\文档\Adobe
3.6.超链接标签
语法格式:
<a href="网址链接" target="目标窗口的弹出方式">文本图像</a>单词anchor的缩写,意为:锚。
两个属性的作用:
| 属性 | 作用 |
|---|---|
| href | 用于指定链接目标的URL地址,(必须属性) |
| target | 用于指定链接页面的打开方式,其中_self为默认值,_blank为在新窗口中打开 |
连接分类:
- 外部链接:例如:
<a href="http://www.baidu.com">百度</a> - 内部链接:网站内部页面之间的相互链接。直接链接内部页面名称即可,例如
<a href="index.html">首页</a>。 - 空连接:如果当是没有确定链接目标时,
<a href="#">首页</a>。 - 下载链接:如果href里面地址是一个文件或压缩包,会下载这个文件。
- 网页元素链接:在网页中的各种元素,如文本、图像、表格、音频等都可以添加超链接。
- 锚点链接:点击链接快速定位到页面中的某个位置
- 在连接文本的href属性中,设置属性值为#名字的形式,如
<a href="#简介">人物简介</a> - 找到目标位置标签,里面添加一个id属性 = 刚才的名字,如:
<h3 id="简介">人物简介</h3>
特殊字符:
| 特殊字符 | 描述 | 字符的代码 |
|---|---|---|
| 空格符 | ||
| < | 小于号 | < |
| > | 大于号 | > |
4.表格标签
基本语法:
<table>
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<tr>
<td>张三</td>
<td>男</td>
<td>18</td>
</tr>>
</table>
| 姓名 | 性别 | 年龄 |
|---|---|---|
| 张三 | 男 | 18 |
<table></table>用于定义表格标签<tr></tr>标签用于定义表格中的行,必须嵌套在<table></table>标签中<th></th>表头单元格<td></td>用于定义表格中的单元行,必须嵌套在<tr></tr>标签中- 字母td指表格数据(table data),即数据单元格的内容
表格属性:
表格标签这部分属性在实际开发中不常用,一般通过CSS来设置。
| 属性名 | 属性值 | 描述 |
|---|---|---|
| align | left、center、right | 规定表格位置 |
| border | 1或"" | 规定表格是否有边框 |
| cellpadding | 像素值 | 规定单元边沿与内容之间的空白,默认1像素 |
| cellspacing | 像素值 | 规定单元格之间的空白,默认2像素 |
| width | 像素值或百分比 | 规定单元格的宽度 |
表格结构标签:
<thead></thead>表格的头部区域<tbody></body>表格主体区域- 以上两个标签都放在
<table></table>标签中
合并单元格:
方式:
- 跨行合并:rowspan="合并单元格的个数"
<td rowspan="2"></td> - 跨列合并:colspan="合并单元格的个数"
<td colspan="2"></td>
5.列表标签
无序列表:
<h4>你喜欢的食物?</h4>
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>柚子</li>
</ul>
注意:<ul></ul>标签中只能放<li></li>标签,不能放其他任何内容,<li>与<li>之间相当于一个容器,可以容纳所有元素。
有序列表:
<h4>你喜欢的食物?</h4>
<ol>
<li>苹果</li>
<li>香蕉</li>
<li>柚子</li>
</ol>
自定义列表:
<h4>你喜欢的食物?</h4>
<dl>
<dt>水果类:</dt>
<dd>苹果</dd>
<dd>香蕉</dd>
<dd>柚子</dd>
</dl>
<dl>
<dt>肉类:</dt>
<dd>烧鸡</dd>
<dd>烤乳猪</dd>
<dd>烤鱼</dd>
</dl>
6.表单标签
表单分为:
- 表单域
- 表单控件
- 提示信息
<form>标签用于定义表单域,以实现用户信息的收集和传递。会把它范围内的表单元素信息提交给服务器。
<form action="url地址" method="提交方式" name="表单域名称">
各表单元素控件
</form>
<input type="text">
| 属性值 | 描述 |
|---|---|
| button | 定义可点击按钮 |
| checkbox | 复选框 |
| file | 输入字段和”复选按钮“,供文件上传 |
| hidden | 隐藏输入字段 |
| image | 图像形式的提交按钮 |
| password | 密码字段 |
| radio | 单选按钮 |
| reset | 重置按钮 |
| submit | 提交按钮 |
| text | 单行的输入字段 |
<input>表单元素
| 属性 | 属性值 | 描述 |
|---|---|---|
| name | 用户自定义 | 定义input元素的名称 |
| value | 用户自定义 | 规定input元素的值 |
| checked | checked | 规定input元素首次加载时应当被选中 |
| maxlength | 正整数 | 规定输入字段中的字符的最大长度 |
随笔:
账号:
密码:
你喜欢哪一个: 小恐龙 小黄鸭
你的爱好是: 打游戏 读书 敲代码
手机号:
重新开始:
提交:
7.<lable>标签
<lable>标签为input元素定义标注
语法:
<label for="sex">男</label>
<input type="radio" name="sex" id="sex" />
8.select标签
下拉标签
语法:
<select>
<option>China</option>
<option>English</option>
<option>Japanese</option>
</select>
9.文本域元素
使用场景:
当用户输入内容较多情况下,我们就不能使用文本框表单了,此时我们可以使用<textarea>标签。
<form>
今日反馈:
<textarea>
</textarea>
</form>
二、CSS
1.CSS选择器
语法规范:
<style>选择器 {键值对}</style>
类选择器定义:
样式点定义,结构类(class)调用 一个或多个开发最常用
.red {
color: red;}
类选择器
语法:
<style>
.box {
font-size: 30px;
height: 100px;
width: 50px;
}
.red {
background-color: red;
}
</style>
<body>
<div class="red">我是红色</div>
<div class="box red">我是不一样的红色字体</div>
</body>
id选择器
语法:
#id名{
属性1: 属性值1;
...
}
例如:将id为nav元素中的内容设置为红色。
<style>
#nav {
color: red;
}
</style>
<body>
<div id="nav">我只能使用一次</div>
</body>
id选择器口诀:样式#定,结构id调用,只能使用一次,别人切勿使用
id选择器和类选择器的区别:
- 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用;
- id选择器好比人的身份证号码,全国是唯一的,不得重复。
通配符选择器
在CSS中,通配符选择器使用“*”定义,它表示选取页面中所有元素(标签)。
语法:
* {
属性1: 属性值1;
}
通配符选择器不需要调用,自动就给所有的元素使用样式。
2.CSS字体属性
CSS Fonts(字体)属性用于定义字体系列、大小、粗细、和文字样式(如斜体)。
p { font-family:"微软雅黑";}
div {font-family:Arial,"Microsoft Yahei","微软雅黑";}
字体复合属性
body {
font: font-stytle font-weight font-size/line-height font-family;
}
font-size和font-family的属性不可省略
字体属性总结:
| 属性 | 表示 | 注意点 |
|---|---|---|
| font-size | 字号 | 我们通常用的单位是px像素,一定要跟上单位 |
| font-family | 字体 | 实际工作中按照团队工作约定来写字体 |
| font-weight | 字体粗细 | 700是加粗 400是正常 |
| font-style | 字体样式 | 倾斜 italic 正常 normal |
| font | 字体连写 | 字体连写是有顺序的 不能随意更换位置 其中字号和字体 必须同时出现 |
3. CSS文本属性
1.CSS文本颜色
| 表示 | 属性值 |
|---|---|
| 预定义的颜色值 | red,green,blue |
| 十六进制 | #FF0000,#FF6600,#29D794 |
| RGB代码 | rgb(255,0,0)或rgb(100%,0%,0%) |
2.CSS对齐文本
text-align属性用于设置元素内文本内容的水平对其方式。
div {
text-align: center;
}
3.CSS装饰文本
text-decoration属性规定添加到文本的装饰。可以给文本添加下划线、删除线、上划线等。
div {
text-decoration: underline;
}
| 属性值 | 描述 |
|---|---|
| none | 默认 |
| underline | 下划线 |
| overline | 上划线 |
| line-through | 删除线 |
text-decoration: none; 删除下划线;
4.CSS文本缩进
text-indent属性来指定文本的第一行的缩进,通常是将段落的首行缩进。
div {
text-indent: 10px;
}
p {
text-indent: 2em;
}
em是一个相对单位,就是当前元素(font-size)1个文字的大小,如果当前元素没有设置大小,则会按照父元素的1个文字的大小。
5.CSS行间距
line-height属性用于设置行间的距离(行高)。可控制文字行与行间的距离。
p {
line-height: 26px;
}
6.CSS引入方式
按照CSS样式书写的位置(或者引入的方式),CSS样式可以分为三类:
- 行内样式表(行内式)
<p style="color: red;">天空中那个炽热的骄阳</p> - 内部样式表(嵌入式)
- 外部样式表(链接式)
<link rel="stylesheet" href="CSS文件路径">
4.CSS-Emmett语法
4.1html快读生成
Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度,Vscode内部已经集成改语法。
- 生成标签 直接输入标签名 按tab键即可;
- 如果想要生成多个标签 加上就可以(生成三个标签--> div3);
- 如果有父子级关系的标签,可以用> 比如 ul > li 就可以了;
- 如果有兄弟关系的标签,用+就可以 div+p;
- 如果生成带有类名或者id名字的,直接写 .demo 或者 #two tab键就可以了;
- 如果生成的div类名是有顺序的,可以用自增符号$;
- 如果想要生成的标签内部写内容可以用{}表示;
5.CSS复合选择器
在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器上,对基本选择器进行组合形成的。
- 复合选择器可以更准确、更高效的选择目标元素(标签);
- 复合选择器是由两个或者多个基础选择器,通过不同的方式组合形成的;
- 常用的复合选择器:后代选择器(重要)、子选择器、并集选择器、伪选择器等。
后代选择器:
后代选择器又称为包含选择器,可以选择父元素里边的子元素。
其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。
语法:
元素1 元素2 {样式声明}
上述语法表示选择元素1里边的所有元素2(后代元素)
例如:
ul li {
color: red;
}
- 元素1和元素2中间用空格隔开;
- 元素1是父级,元素2是子级,最终选择的是元素2;
- 元素2可以是儿子,也可以是孙子,只要是元素1后代即可。
子选择器
子选择器只能选择作为某一元素的最近一级子元素。简单理解就是选亲儿子元素。
语法:
元素1 > 元素2{样式声明}
上述语法表示选择元素1里面的所有直接后代(子元素)元素2
.nav>a {
color: red;
}
- 元素1和元素2之间用>隔开;
- 元素1是父级,元素2是子级;
并集选择器
并集选择器可以选择多组标签,同时为他们定义相同的样式。通常用于集体声明。
并集选择器是各选择器通过英文逗号(,)连接而成任何形式的选择器都可以作为并集选择器的一部分。
div,p {
color: red;
}
div,p,.nav li {
color: red;
}
伪类选择器
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊的效果,或者选择第1个,第n个元素。
伪类选择器最大的特点是:用(:)表示,例如:hover:first-child。
链接伪类选择器
a:link /*选择所有未被访问的链接*/
a:visited /*选择所有已被访问的链接*/
a:hover /*选择鼠标指针位于其上的链接*/
a:active /*选择活动链接(鼠标按下未弹起)*/
记住顺序 link -> visited -> hover -> active
LVHA
:focus伪类选择器
:focus伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对表单元素来说。
input:focus{
back-ground-color:red;
}
6.CSS元素显示模式
什么是元素显示模式?
作用:网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。
元素显示模式就是元素(标签)以什么方式显示,比如
HTML元素一般分为
块元素和行内元素两种类型。
6.1块元素
常见的块元素有<h1>~<h6>、p、div、ul、ol、li等,其中``标签是最典型的块元素。
块元素的特点:
- 比较霸道,自己独占一行;
- 高度、宽度、外边距以及内边距都可以控制;
- 宽度默认是容器(父级宽度)的100%;
- 是一个容器及盒子,里面可以放行内或者块级元素。
注意:
- 文字类的元素内不能使用块级元素;
<p>标签主要用于存放文字,因此<p>里面不能放块级元素,特别是不能放<div>;- 同理,
<>h1~<h6>等都是文字类块级标签,里边不能放其他块级元素。
6.2行内元素
常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、u、span等,其中<span>标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
行内元素特点:
- 相邻行内元素在一行上,一行可以显示多个;
- 高、宽直接设置是无效的;
- 默认宽度就是它本身内容的宽度;
- 行内元素只能容纳文本或其他行内元素。
6.3行内块元素
<img><input><td>
特点:
- 和相邻行内元素(行内块)在一行上,但是他们之间会有空白间隙。一行可以显示多个(行内元素特点)。
- 默认宽度就是它本身内容的宽度。
- 高度、行高、外边距以及内边距都可以控制(块元素特点)。
6.4元素显示模式转换
转换为块元素
display:block;
转换为行内元素
display:inline;
转换为行内块元素
display:inline-block;
一个小技巧 单行文字垂直居中
解决方案:让文字的行高等于盒子的高度 就可以让文字在当前盒子内垂直居中。
7.CSS背景颜色
7.1背景图片
background-image属性描述了元素的背景图像。实际开发中常见于一些装饰性的小图像或者是超大的背景图片,优点是非常便于控制位置(精灵图也是一种运用场景)。
7.2背景平铺
background-image:repeat|no-repeat|repeat-x|repeat-y
默认情况下背景图片是平铺的
7.3背景图片位置
利用background-position属性可以改变图片在背景中的位置。
background-position:x y;
参数代表意思:x坐标和y坐标。可以使用方位名词和精确单位。
| 参数值 | 说明 |
|---|---|
| length | 百分数 \ 由浮点数子和单位标识符组成的长度值 |
| position | top \ center \ bottom \ left \center \ right 方位名词 |
7.3背景图片固定
background-attachment:scroll | fixed
| 参数 | 作用 |
|---|---|
| scroll | 背景图像是随对象内容滚动 |
| fixed | 背景图像固定 |
背景复合写法
background: transparent url() repeat fixed x y;
background:black url() no-repeat fixed center top;
7.4背景颜色半透明
background: rgba(0,0,0,0.3);/*alpha 透明度*/
最后一位控制透明度,0完全透明,1完全不透明
8.CSS的三大特性
8.1层叠性
解决样式冲突
相同的选择器设置同样的样式,此时一个样式就会覆盖另一个样式。层叠性主要解决样式冲突的问题。
就近原则
样式冲突,遵循就近原则,哪个样式离结构近就执行哪个样式
样式不冲突,不会层叠
长江后浪推前浪,前浪死在沙滩上
8.2继承性
CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号。简单理解就是:子承父业。
- 恰当的使用继承可以简化代码,降低CSS样式的复杂性;
- 子元素可以继承父元素的样式(text-,font-,line-这些元素的开头的可以继承,以及color属性)
8.3优先级
当同一个元素指定多个选择器,就会有优先级的产生。
- 选择器相同,则执行层叠性
- 选择器不同,则根据选择器权重执行
选择器权重级别:
- 继承或者*
- 元素选择器
- 类选择器或者伪类选择器
- ID选择器
- 行内样式
- !important重要的
权重依次增大
8.4权重叠加
符合选择器会有权重叠加的问题
9.盒子模型
盒子模型的组成:
- border边距
- content内容
- padding内边距
- margin边距
9.1边框
boder可以设置元素的边距。边框有三部分组成:边框宽度(粗细)、边框样式、边框颜色
语法:
boder:boder:width||boder:style||boder-color
| 属性 | 作用 |
|---|---|
| boedr-width | 定义边框粗细,单位是px |
| boer-style | 边框的样式 |
| boer-color | 边框颜色 |
- boder-style:solid实线
- boder-style:dashed虚线
- boder-style:dotted点线
边框复合写法:
boer:1px solid red; 没有顺序
边框分开写法:
boder-top:1px solid red;/*只设定上边框,其余同理*/
9.2表格细线边框
boder-collapse属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框。
语法:
boder-collapse:collapse;
- collapse是合并的意思
- boder-collapse:collapse;表示相邻单元格边框合并在一起
9.3内边距
padding属性用于设置内边距,即边框与内容之间的距离
| 属性 | 作用 |
|---|---|
| padding-left | 左内边距 |
| padding-right | 右内边距 |
| padding-top | 上内边距 |
| padding-bottom | 下内边距 |
内边距复合写法:
padding:5px;/*1个值,代表上下左右都有5像素内边距*/
padding:5px 10px;/*上下5像素。左右10像素*/
padding:5px 10px 20px;/*上5像素,左右10像素,下20像素*/
padding:5px 10px 20px 30px;/*上右下左*/
9.4margin外边距
margin用于控制外边距,控制盒子与盒子之间的距离
| 属性 | 作用 |
|---|---|
| margin-left | 左外边距 |
| margin-rught | 右外边距 |
| margin-top | 上外边距 |
| margin-bottom | 下外边距 |
外边距可以让块级盒子水平居中,当必须满足:
- 盒子必须指定宽度(width)
- 盒子左右的外边距都设置为auto
.header{width:960px;margin:0 auto;}
行内元素或者行内快元素水平居中给其父元素添加text-align:center即可
9.5嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:
- 可以为父元素定义上边框
- 可以为父元素定以上内边距
- 可以为父元素添加overflow:hidden
9.5清除网页元素内外边距
/*这句话也是CSS的第一句话*/
*{
margin:0;/*清除外边距*/
padding:0;/*清除内边距*/
注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换块级和行内块元素就可以了。
9.5圆角边框
boder-radious属性用于设置元素的外边框圆角。
语法:
boder-radious:length;/*length可以数值|百分比*/
radious半径(圆的半径)原理:(椭)圆与边框的交集形成圆角效果
9.6盒子阴影(important)
box-shaodw属性为盒子添加阴影
语法:
box-shadow:h-shadow v-shadow blur spread color inset;
| 值 | 描述 |
|---|---|
| h-shaodw | 必需。水平阴影的位置 。允许负值 |
| v-shaodw | 必需。垂直阴影的位置。允许负值 |
| blur | 可选。模糊距离 |
| spread | 可选。阴影的尺寸 |
| color | 可选。阴影的颜色 |
| inset | 可选、将外部阴影(outset)改为内部阴影 |
9.6 文字阴影
text-shadow:h-shadow v-shadow blr color;
| 值 | 描述 |
|---|---|
| h-shadow | 必需。水平阴影位置 |
| v-shadow | 必需。垂直阴影位置 |
| blur | 可选。模糊的距离 |
| color | 可选。阴影的颜色 |
10. CSS浮动
10.1浮动
所谓的标准流:就是标签按照规定好默认方式排列。
浮动最典型的应用:可以让多个块级元素一行内排列显示。
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
语法:
选择器:{float:属性值;}
| 属性值 | 描述 |
|---|---|
| none | 元素不浮动(默认值) |
| left | 元素向左浮动 |
| right | 元素向右浮动 |
10.2浮动特性(重难点)
- 浮动元素会脱离标准流
- 浮动的元素会一行内显示并且元素顶部对齐
- 浮动的元素会具有行内块元素的特性
1. 脱离标准普通流的控制(浮)移动到指定位置(动),俗称(脱标)
2. 浮动的盒子不在保留原来的位置
3. 如果多个盒子都设置了浮动,则他们会按照属性值一行内显示并且顶端对齐排列。
4. 浮动的元素具有行内块元素的特性。
为了约束浮动元素的位置,我们网页布局的一般采取的策略是:先用标准流的父亲排列上下位置,之后内部子元素采取浮动排列左右位置
10.3清除浮动
由于浮动元素不再占用源文档流的位置,所以他会对后面的元素排版产生影响
清除浮动的本质是清除浮动元素产生的影响
如果父盒子本身有高度,则不需要清除浮动
清除浮动之后,父级就会根据浮动的子盒子自动监测高度。腹肌有了高度,就不会影像下面的标准流了
语法:
选择器{clear:属性值;}
| 属性值 | 描述 |
|---|---|
| left | 不允许左侧有浮动元素(清除左侧浮动的影像) |
| right | 不允许右侧有浮动的影响 |
| both | 同时清除左右侧浮动的影响 |
清除浮动的方法:
- 额外表前法也称隔墙法
- 父级添加overflow属性
- 父级添加after伪元素
- 父级添加双伪元素
额外标签法
额外标签法会在浮动元素末尾添加一个空的标签。例如<div style="clear:both" ></div>,或者其他标签(如<br />等)。
要求这个新的标签必须是块级元素
父级添加overflow
可以给父级添加overflow属性,将其属性设置为hidden、auto或scroll。
:after伪元素法
:after方式是额外标签法的升级版。也是给父元素添加
语法:
.clearfix:after{
content:"";
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix{
*zoom:1;
}
双伪元素清除浮动
也是给父元素添加
.clearfix:before,.clearfix:after{
content:"";
display:table;
}
.clearfix:after{
clear:both:
}
.clearfix{
*zoom:0;
}
11.定位
定位:将盒子定在某个位置,所以定位也是在摆盒子,按照定位的方式移动盒子。
定位 = 定位模式 + 边位移。
定位模式用于指定一个元素在文档中的定位方式。边位移则决定了该元素的最终位置。
定位模式
定位模式决定元素的定位方式,它通过CSS属性的position属性来设置,其值可以分为四个:
| 值 | 语义 |
|---|---|
| static | 静态定位 |
| relative | 相对定位 |
| absolute | 绝对定位 |
| fixed | 固定定位 |
边位移
边位移就是定位的盒子移动到最终位置。有top、buttom、left、和right 4个属性。
| 边位移属性 | 示例 | 描述 |
|---|---|---|
| top | top: 80px | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
| buttom | buttom: 80px | 底部偏移量,定义元素相对于其父元素下边线的距离 |
| left | left: 80px | 左侧偏移量,定义元素相对于其父元素左边线的距离 |
| right | right: 80px | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
静态定位
静态定位是元素的默认定位方式,无定位的意思。
语法:
选择器 { position: static;}
相对定位(重要)
相对定位是元素在移动位置的时候,是相对于它原来的位置来说的(自恋型 )
语法:
选择器 {position: relative;}
原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。(不脱标,继续保留原来位置)
绝对定位
绝对定位是元素在移动的时候,是相对于它祖先元素来说的。
语法:
选择器 {position :absolute;}
绝对定位的特点:
- 如果过没有祖先元素或者祖先元素没有定位,则以浏览器为准定位
- 如果父元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。
- 绝对定位不再占由原先的位置。(脱标)
11.1 子绝父相的由来
子级是绝对定位的话,父级要用相对定位。
- 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个位置,不会影响其他兄弟盒子。
- 父级盒子需要加定位限制子盒子在父盒子内显示。
- 父盒子在布局时,需要占有位置,因此父亲只能是相对定位。
固定定位fixed
固定定位是元素固定于浏览器可视区的位置。主要使用场景:可在浏览器页面滚动时元素的位置不会改变。
语法:
选择器{position:fixed}
特点:
- 以浏览器的可视窗口为参照点移动元素。
- 和父元素没有任何联系
- 不随滚动条滚动
- 不在占有原来位置(脱离标准流)
固定定位小技巧(固定在版心右侧位置)
小算法:
- 让固定定位的盒子left:50% 走到浏览器可视区(也可以看做版心)的一半位置;
- 让固定定位的盒子margin-left:版心宽度的一半就可以了。
粘性定位
语法:
选择器{position: sticky;top 10px;}
特点:
- 以浏览器的可视窗口为参照点移动元素
- 粘性定位占有原先位置
- 必须添加top、left、right、bottom其中一个才有效
11.2 定位叠放次序
z-index可以控制盒子的前后次序
语法:
选择器{z-index: 1;}
- 数值可以是正整数、负数或0,默认是auto,数值越大,盒子越靠上
绝对定位盒子居中
加了绝对定位的盒子不能通过 margin:0 auto 水平居中,但是可以通过以下计算方法实现水平和垂直居中。
- left: 50%; 让盒子的左侧移动到父级元素的水平中间位置。
- margin-left:-100px; 让盒子向左移动自身宽度的一半。
定位特殊特性
- 行内元素添加绝对或者固定定位,可以直接设置高度和宽度
- 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
- 浮动元素、绝对定位(固定定位)元素都不会触发外边距合并问题。
- 浮动(float)的元素不会压住下面标准流的文字(图片)
- 但是绝对定位(固定定位)会压住下面标准流的所有内容。

总结于河马程序员pink老师的前端学习资料
浙公网安备 33010602011771号