网站是指在因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合。
网页是网站中的一“页”,通常是HTML格式的文件,它是通过浏览器来阅读。
网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频等元素组成。通常我们看到的网页,常见以.htm或.html后缀结尾的文件,因此将其俗称为HTML文件。
HTML指的是超文本标记语言(Hyper Text Markup Language),他是用来描述网页的一种语言。
HTML不是一种编程语言,而是一种标记语言(markup language).
标记语言是一套标记标签(markup tag)
所谓超文本,有两层含义:
1.它可以加入图片、声音、动画、多媒体等内容(超越了文本限制)。
2.它还可以从一个文件跳转到另一个文件,与世界各地主机的文件连接(超级链接文本)。
网页是由网页元素组成的,这些元素是利用html标签描述出来,然后通过浏览器解析来显示给用户的。
前端人员开发代码 ----》 浏览器显示代码(解析、渲染)----》生成最后的Web页面。
网页是通过浏览器来展示的,关于浏览器我们要介绍以下两点:
1.常用的浏览器
浏览器是网页显示、运行的平台。常用的浏览器有IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等。平时称为五大浏览器。
2.浏览器内核
浏览器内核(渲染引擎):负责读取网页内容,整理讯息,计算网页的显示方式并显示页面。
| 浏览器 | 内核 | 备注 |
|---|---|---|
| IE | Trident | IE、猎豹安全、360极速浏览器、百度浏览器 |
| firefox | Gecko | 火狐浏览器内核 |
| safari | Webkit | 苹果浏览器内核 |
| chrome/Opera | Blik | chrome/oprea浏览器内核。Blink其实是WebKit的分支 |
目前国内一般浏览器都会采用Webkit/Blink内核,如360、UC、QQ、搜狗等。
Web标准是由W3C组织和其他标准化组织制定的一系列标准的集合。W3C(万维网联盟)是国际最著名的标准化组织。
浏览器不同,它们显示页面或者排版就有些许差异。
通过Web标准,使用不同浏览器,展示统一内容。
优点:内容能被更广泛的设备访问,更容易被搜索引擎搜索,提高页面浏览速度。
3.2.1.标准的构成
主要包括结构(structure)、表现(Presentation)、行为(Behavior)三个方面。
| 标准 | 说明 |
|---|---|
| 结构 | 结构用于对网页元素进行整理和分类,现阶段主要学习的是HTML. |
| 表现 | 表现用于设置网页元素的版式,颜色,大小等外观样式,主要指的是CSS |
| 行为 | 行为是指网页模式的定义及交互的编写,现阶段主要学习的是javascript |
Web标准提出的最佳体验方案:结构、样式、行为相分离。
简单理解:结构写到HTML文件中,表现写到CSS文件中,行为写到JavaScript文件中。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pp0nBBgb-1656254631767)(Typora_image/0000.png)]](https://1000bd.com/contentImg/2022/06/28/053135481.png)
1.HTML标准是由尖括号包围的关键字,例如。
2.HTML标签通常是成对出现的,例如和,我们称为双标签。标签对中的第一个标签是开始标签,第二个标签是结束标签。
3.有些特殊的标签必须是单个标签(极少情况),例如
我们称之为单标签。
双标签关系可以分为两种:包含关系和并列关系。
包含关系
<head>
<title> </title>
</head>
并列关系
<head> </head>
<body> </body>
5.1第一个HTML 网页
每个网页都会有一个基本的结构标签(也成为骨架标签),页面内容也是在这个基本标签上书写。
HTML页面也称为HTML文档。
<html>
<head>
<tille>我的第一个页面</tille>
</head>
<body>
你好,世界!
</body>
</html>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K6UQYXXb-1656254631770)(Typora_image\0001.png)]](https://1000bd.com/contentImg/2022/06/28/053135637.png)
| 标签名 | 定义 | 说明 |
|---|---|---|
| HTML标签 | 页面中最大的标签,我们称之为根标签 | |
| 文档的头部 | 注意在head标准中我们必须要设置的标签是title | |
| 文档的标题 | 让页面拥有一个属于自己的网页标签 | |
| 文档的主体 | 元素包含文档的所有内容,页面内容 基本都是放在body里面的 |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YrWVNmm-1656254631771)(E:\frontend\Typora_image\0002.png)]](https://1000bd.com/contentImg/2022/06/28/053135790.png)
1.双击打开软件
2.新建文件(Ctrl + N)
3.保存(Ctrl + S),注意移动要保存的.html文件
4.Ctrl + 加号键, Ctrl - 建号键 可以放大缩小视图
5.生成页面骨架结构
输入 ! 按下 Tab 键,
6.利用插件在浏览器中预览页面:单击鼠标右键,在弹出出口中点击“Open In Default Brower”
| 插件 | 作用 |
|---|---|
| Chinese(Simplified)Language Park for VS Code | 中文(简体)语言包 |
| Open in Browser | 右击选择浏览器打开html文件 |
| Auto Rename Tag | 自动重命名配对的HTML/XML标签 |
演示代码
<!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>我利用vscode创建的第一个页面</title>
</head>
<body>
写代码是一件非常快乐的事情 happy
</body>
</html>
<!DOCTYPE html>
<!DOCTYPE> 文档类型声明,作用就是告诉浏览器使用哪种HTML版本来显示网页。
<!DOCTYPE html>
这句代码的意思是:当前页面采用的是HTML5版本来显示网页。
注意:
1.<!DOCTYPE>声明位于文档中的最前面的位置,处于之前。
2.<!DOCTYPE>不是一个HTML标签,它就是文档类型声明标签。
用来定义当前文档显示的语言。
1.en定义语言为英语
2.zh-CN定义语言为中文
简单来说,定义为en就是英文网页,定义为zh-CN就是中文网页
其实对于文档显示来说,定义成en的文档也可以显示中文,定义为zh-CN的文档也可以显示英文。
这个属性对浏览器和搜索引擎(百度,谷歌等)还是有作用的。
字符集(Charactor set)是多个字符的集合,以便计算机能够识别和存储各种文字。
在标签内,可以通过标签的charset属性来规定HTML文档应该使用哪种字符编码。
<meta charset="UTF-8" />
charset 常用的值有:GB2312、BIG5、GBK和UTF-8,其中UTF-8也被称为万国码,基本包含了全世界所有国家需要用到的字符。
注意:上面语法必须要写的代码,否则可能引起乱码的情况。一般情况下,统一使用“UTF-8”编码,尽量统一写成标准的“UTF-8”,不要写成“utf8”或"UTF8".
学习标签是有技巧的,重点是记住每个标签的语义。简单理解就是标签的含义,即这个标签是用来干嘛的。
根据标签的语义,在合适的地方给一个最为合理的标签,可以让页面结构更清晰。
为了使网页更具有语义化,我们经常会在页面中用到标题标签。HTML提供了6个等级的网页标签,即
<h1>我是一级标题</h1>
单词head的缩写,意为头部,标题。
标签语义:作为标题使用,并且依据重要性递减。
特点:
1.加了标题的文字会变的加粗,字号也会依次变大。
2.一个标题独占一行。
在网页中,要把文字有条理的显示出来,就需要将这些文字分段显示,在HTML标签中,
标签用于定义段落,它可以将整个网页分为若干个段落。
<p>我是一个段落标签</p>
| 单词 | 音标 | 翻译 |
|---|---|---|
| paragraph | [ˈpærəɡrɑːf] | 段落; 段; |
标签语义:可以把HTML文档分割为若干个段落。
特点:
1.文本在一个段落中会根据浏览器的大小自动换行
2.段落和段落之间保有空隙。
在HTML中,一个段落中的文字会从左到右依次排列,直到浏览器窗口的右端,然后才自动换行,如果希望某段文本强制换行显示,就需要使用换行标签
<br />
单词break的缩写,意为打断,换行。
标签语义:强制换行
特点:
<br />是个单标签
<br /> 标签只是简单的开始新的一行,跟段落不一样,段落之间会插入一些垂直的间距
在网页中,有时需要为文字设置粗体、斜体或下划线效果,这时就需要用到HTML中的文本格式化标签,使文字以特殊的方式显示。
标签语义:突出重要性,比普通文字更重要
| 语义 | 标签 | 说明 |
|---|---|---|
| 加粗 | 或者 | 更推荐使用标签,语义更强烈 |
| 倾斜 | 或者 | 更推荐使用标签,语义更强烈 |
| 删除线 | 更推荐使用 | |
| 下划线 | 或者 | 更推荐使用标签,语义更强烈 |
<div>这是头部</div>
<span>今日价格</span>
div是division的缩写,表示分割、分区。
span意为跨度、跨距。
特点:
1.<div>标签用来布局,但是现在一行只能放一个</div> 大盒子
2.<span>标签用来布局,一行可以多个</span> 小盒子
在HTML标签中,标签用于定义HTML页面中的图像。
<img src="图像URL"/>
单词image的缩写,意为图像
src是标签的必须属性,它用于指定图像文件的路径和文件名
所谓属性:简单理解就是属于这个图像标签的特性
图像标签的其他属性:
| 属性 | 属性值 | 说明 |
|---|---|---|
| src | 图片路径 | 必须属性 |
| alt | 文本 | 替换文本。图像不能显示的文字 |
| title | 文本 | 提示文本。鼠标放到图像上,显示的文字 |
| width | 像素 | 设置图像的宽度 |
| height | 像素 | 设置图像的高度 |
| border | 像素 | 设置图像的边框粗细 |
图像标签属性注意点:
1.图像标签可以拥有多个属性,必须写在标签名的后面
2.属性之间不分先后顺序,标签名与属性,属性与属性之间均以空格分开。
3.属性采用键值对的格式,即key="value"的格式,属性=“属性值”
1.目录文件夹:就是普通文件夹,里面只不过存放了我们做页面所需要的相关素材,比如html文件,图片等。
2.根目录:打开目录文件夹的第一层就是根目录
3.VSCode打开目录文件夹,文件==》打开文件夹,选择目录文件夹,后期非常方便管理文件。
4.路径
相对路径:以引用文件所在位置为参考基础,而建立的目录路径。简单来说,图片相对于HTML页面的位置
| 相对路径的分类 | 符号 | 说明 |
|---|---|---|
| 同一级路径 | 图像文件位于HTML文件的同一级 如![]() | |
| 下一级路径 | / | 图像文件位于HTML文件的下一级 如<img src=“images/baidu.gif />” |
| 上一级路径 | …/ | 图像文件位于HTML文件上一级 如<img src=“…/baidu.gif />” |
绝对路径:是指目录下的绝对位置,直接到达目标的位置,通常是从盘符开始的路径。
例如:E:\frontend\HTML\1.jpg
<img src="https://i0.hdslb.com/bfs/archive/887fb6df09bcd19f590f2eb4c36b4d4f3c559e5d.png" />
在HTML标签中,标签用于定义超链接,作用是从一个页面链接接到另一个页面
1.链接的语法规范
<a href="跳转目标" target="目标窗口的弹出方式">文本或图像</a>
| 单词 | 音标 | 词意 |
|---|---|---|
| anchor | [ˈæŋkə®] | 锚; 给以安全感的人(或物); 精神支柱; 顶梁柱; |
| target | [ˈtɑːɡɪt] | 目标; 指标; (攻击的)目标,对象; 靶; 靶子; |
两个属性的作用如下:
| 属性 | 作用 |
|---|---|
| href | 用于指定链接的url路径,(必须属性), 当为标签应用href属性时,它就具有了超链接的功能 |
| target | 用于指定链接页面的打开方式,其中_self为默认值(当前窗口打开页面),__blank为在新窗口的打开方式 |
2.链接的分类
2.2内部链接:网站内部页面之间的相互链接,直接链接内部页面名称即可,例如首页
<a href="gongsijianjie.html" target="_blank">公司简介</a>
2.3空链接:如果当时没有确定的链接目标
<a href="#">首页</a>
2.4下载链接:如果href里面地址是一个文件或者压缩包,会下载这个文件。
<h5>下载链接:地址链接的是文件 .exe 或者是 zip 等压缩包形式</h5>
<a href="1.7z">下载文件</a>
<a href="../access/3.7z">下载链接</a>
2.5网页元素链接:在网页中的各种网页元素,如文本、图像、表格、音频、视频等都可以添加超链接
<a href="images/2.jpg"><img src="1.jpg"</a>
<a href="E:\musicdownload\水手 - 郑智化.mp3">音乐</a>
2.6锚点链接:点我们点击链接,可以快速定位到页面中的某个位置
2.6.1在链接文本的href属性中,设置属性值为 #名字 的形式,如
<a href="#two">第二集</a>
2.6.2找到目标位置标签,里面添加一个id属性 = 刚才的名字,如
<h3 id="two">第二集介绍</h3>
如果需要在HTML文档中添加一些便于阅读和理解但又不需要在页面中的注释文字,就需要使用注释标签。
<!-- 我想喝手磨咖啡 --> 快捷键:ctrl + /
一句话:注释标签里面的内容是给程序员看的,这个代码是不执行不显示到页面中的,是为了更好的解释代码的功能,便于相关开发人员理解和阅读代码,程序是不会执行注释内容的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqzxwrW7-1656254631773)(Typora_image/0003.png)]](https://1000bd.com/contentImg/2022/06/28/053136147.png)
重点记忆的是
| 大于号 | > |
|---|---|
| 小于号 | < |
| 空格 |   |
表格是实际开发中非常常用的标签:
8.1.1.表格的主要作用
表格是主要用于显示、展示数据,因为它可以让数据显示的非常的规范,可读性非常好,特别的后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理。
8.1.2.表格的基本语法
<table>
<tr>
<td>单元格内的文字</td>
...
</tr>
...
</table>
字母td指表格数据(table data),即数据单元格的内容。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-umUQR2fj-1656254631774)(Typora_image/001.png)]](https://1000bd.com/contentImg/2022/06/28/053136301.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBSU8dqe-1656254631775)(Typora_image/002.png)]](https://1000bd.com/contentImg/2022/06/28/053136401.png)
8.1.3.表头单元格标签
一般表头单元格位于表格的第一行或第一列,表头单元格里面的文本内容加粗居中显示。
标签表示HTML表格的表头部分(table head的缩写)![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MNoPGLbq-1656254631776)(Typora_image/003.png)]](https://1000bd.com/contentImg/2022/06/28/053136629.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tcu24Xka-1656254631778)(Typora_image/004.png)]](https://1000bd.com/contentImg/2022/06/28/053136728.png)
表头单元格也是单元格,常用于表格第一行,突出重要性,表头单元格里面的文字会加粗居中显示。
8.1.4表格属性
表格标签这部分属性是我们实际开发不常用,后面通过CSS来设置。
| 属性名 | 属性值 | 描述 |
|---|---|---|
| align | left、center、right | 规定表格相对周围元素的对齐方式 |
| border | 1或"" | 规定表格的单元是否拥有边框,默认为"",表示没有边框 |
| cellpadding | 像素值 | 规定单元边沿与其内容之间的空白,默认1像素 |
| cellspacing | 像素值 | 规定单元格之间的空白,默认为2像素 |
| width | 像素值或百分比 | 规定表格的宽度。 |
这些属性要写到
标签里面设定
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PAZaaKOe-1656254631780)(Typora_image/005.png)]](https://1000bd.com/contentImg/2022/06/28/053136978.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPbrKKaD-1656254631781)(Typora_image/006.png)]](https://1000bd.com/contentImg/2022/06/28/053137145.png)
案例展示
<body>
<table align="center" border="1" cellpadding="0" cellspacing="0" width="500" height="200">
<tr><th>排名</th><th>关键词</th><th>趋势</th><th>今日搜索</th><th>最近七日</th><th>相关链接</th></tr>
<tr><td>1</td><td>鬼吹灯</td><td><img src="https://img0.baidu.com/it/u=3088610651,3841531735&fm=253&fmt=auto&app=138&f=JPEG?w=466&h=500" width="20" height="20"></td><td>345</td><td>123</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>2</td><td>盗墓笔记</td><td><img src="https://img0.baidu.com/it/u=3088610651,3841531735&fm=253&fmt=auto&app=138&f=JPEG?w=466&h=500" width="20" height="20"></td><td>124</td><td>675432</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>3</td><td>西游记</td><td><img src="https://img2.baidu.com/it/u=3235800866,1488932521&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=519" width="20" height="20"></td><td>212</td><td>7654</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>4</td><td>东游记</td><td><img src="https://img2.baidu.com/it/u=3235800866,1488932521&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=519" width="20" height="20"></td><td>23</td><td>75645</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>5</td><td>甄嬛传</td><td><img src="https://img0.baidu.com/it/u=3088610651,3841531735&fm=253&fmt=auto&app=138&f=JPEG?w=466&h=500" width="20" height="20"></td><td>121</td><td>7676</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>6</td><td>水浒传</td><td><img src="https://img2.baidu.com/it/u=3235800866,1488932521&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=519" width="20" height="20"></td><td>576576</td><td>12334</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
<tr><td>7</td><td>鬼吹灯</td><td><img src="https://img2.baidu.com/it/u=3235800866,1488932521&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=519" width="20" height="20"></td><td>234</td><td>7686</td><td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a href="https://image.baidu.com/" >图片</a> <a href="https://baike.baidu.com/">百科</a></td></tr>
</table>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NowLSd1Z-1656254631783)(Typora_image/007.png)]](https://1000bd.com/contentImg/2022/06/28/053137311.png)
8.1.5表格的结构标签
使用场景:因为表格可能很长,为了更好的表示表格的语义,可以将表格分割成表格头部和表格主体两大部分。
在表格标签中,分别用:表示表格的头部区域,表示表格的主体区域,这样可以更好的分清表格结构。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCq1P6d5-1656254631783)(Typora_image/008.png)]](https://1000bd.com/contentImg/2022/06/28/053137571.png)
以上标签都是放在
8.1.6合并单元格
特殊情况下,可以把多个单元格合并为一个单元格
合并单元格的方式:
跨行合并:rowspan=“合并单元格的个数”
跨列合并:colspan=“合并单元格的个数”
目标单元格:
跨行:最上侧单元格为目标单元格,写合并代码
跨列:最左侧单元格为目标单元格,写合并代码
合并单元格三部曲:
1.先确定是跨行还是跨列合并。
2.找到目标单元格,写上合并方式=合并的单元数量。比如:
3.删除多余的单元格
实例:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rHsVTjhm-1656254631784)(Typora_image/009.png)]](https://1000bd.com/contentImg/2022/06/28/053137758.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HP8A9kq4-1656254631785)(Typora_image/010.png)]](https://1000bd.com/contentImg/2022/06/28/053137852.png)
演示如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkjiN3KA-1656254631786)(Typora_image/011.png)]](https://1000bd.com/contentImg/2022/06/28/053138024.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwAAF4s9-1656254631786)(Typora_image/012.png)]](https://1000bd.com/contentImg/2022/06/28/053138227.png)
8.1.7表格总结
表格学习整体可以分为三大部分:
1.表格的相关标签
table标签
tr 行标签
td 单元格标签
th 表头单元格标签,用于第一行的居中、加粗显示
thead 表格头部区域标签
tbody 表格主体区域标签
2.表格的相关属性
aligh border cellpadding cellspacing width
3.合并单元格
跨列标签用colspan ,跨行标签rowspan.
表格标签是用来显示数据的,那么列表标签就是用来布局的。
列表最大的特点就是整齐、整洁、有序,它作为布局会更加自由和方便。
无序列表,各个之间无顺序
有序列表,各个之间有顺序
自定义列表,上面是对下面的说明
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ur9Z9sst-1656254631787)(Typora_image/013.jpg)]](https://1000bd.com/contentImg/2022/06/28/053138399.jpeg)
8.2.1无序列表
<ul>
<li>列表项目1</li>
<li>列表项目2</li>
<li>列表项目3</li>
...
</ul>
1.无序列表的各个列表项之间没有顺序级别之分,是并列的。
2.
3.
4.无序列表会带有自己的样式属性,但在实际使用时,我们会使用CSS来设置。
8.2.2有序列表
有序列表即为有排列顺序的列表,其各个列表会按照一定的顺序排列定义。
在HTML标签中,
<ol>
<li>列表1</li>
<li>列表2</li>
<li>列表3</li>
<li>列表4</li>
...
</ol>
1.
2.
3.有序列表会带有自己样式属性,但是在实际使用中,我们会使用CSS来设置。
8.2.3自定义列表(重点)
自定义列表的使用场景:
自定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号。
在HTML标签中,
其基本语法:
<dl>
<dt>名词1</dt>
<dd>名词1解释1</dd>
<dd>名词1解释2</dd>
<dd>名词1解释3</dd>
<dd>名词1解释4</dd>
...
</dl>
1.
2.
和
8.2.4列表总结
| 标签名 | 定义 | 说明 |
|---|---|---|
|
| 无序列表 | 里面只能包含
|
|
| 有序列表 | 里面可以包含
|
|
| 自定义列表 | 里面只能包含
和
|
8.3.1.为什么需要表单
使用表单目的是为了收集用户信息
在我们网页中,我们也需要跟用户进行交互,收集用户资料,此时就需要表单
8.3.2.表单的组成
在HTML中,一个完整的表单通常由表单域、表单控件(也称为表单元素)和提示信息3个部分构成。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbyEVS86-1656254631789)(Typora_image/014.jpg)]](https://1000bd.com/contentImg/2022/06/28/053138587.jpeg)
8.3.3表单域
表单域是一个包含表单元素的区域。
在HTML标签中,标签用于定义表单域,以实现用户信息的收集和传递。
会把它范围内的表单元素信息提交给服务器。<form action="url地址" method="提交方式" name="表单域名词"
常用属性:
| 属性 | 属性值 | 作用 |
|---|---|---|
| action | url地址 | 用于指定接收并处理表单数据的服务器程序的url地址 |
| method | get/post | 用于设置表单数据的提交方式,其取值为get或post |
| name | 名称 | 用于指定表单的名称,以区分同一个页面中的多个表单域 |
注意两点:
1.在我们写表单元素之前,应该有个表单域就把他们进行包含。
2.表单域是form标签
8.3.4表单控件(表单元素)
在表单域中可以定义各种表单元素,这些表单元素就是允许用户在表单中输入或选择的内容控件。
1.input 输入表单元素
在英文单词中,input是输入的意思,而在表单元素中标签用于收集用户信息。
在标签中,包含一个type属性,根据不同的type属性值,输入字段拥有很多种形式(可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等)。
<input type="属性值" />
注意两点:
(1)标签为单标签
(2)type属性设置不同的属性值用来指定不同的控件类型
type属性的属性值及其描述如下:
| 属性值 | 描述 |
|---|---|
| button | 定义可点击按钮(多数情况下,用于通过JavaScript启动脚本) |
| checkbox | 定义复选框 |
| file | 定义输入字段和"浏览"按钮,供文件上传 |
| hidden | 定义隐藏的输入字段 |
| image | 定义图像形式的提交按钮 |
| password | 定义密码字段,该字段中的字符被掩码 |
| radio | 定义单选按钮。 |
| reset | 定义重置按钮,重置按钮会清除表单中的所有数据 |
| submit | 定义提交按钮,提交按钮会把表单数据发送到服务器中。 |
| text | 定义单行的输入字段,用户可在其中输入文本,默认宽度为20个字符。 |
<body>
<form action="demo.php" method="POST" name="name1">
<input type="button"><br>
<input type="checkbox"><br>
<input type="file"><br>
<input type="hidden"><br>
<input type="image"><br>
<input type="password"><br>
<input type="radio"><br>
<input type="reset"><br>
<input type="submit"><br>
<input type="text"><br>
</form>
</body>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4JhQeEu-1656254631790)(Typora_image/015.png)]](https://1000bd.com/contentImg/2022/06/28/053138743.png)
其中,radio是单选按钮,checkbox是多选框
<body>
<form>
性别:男<input type="radio"> 女<input type="radio"> # 要实现多选一,要在input里加name属性
爱好:唱歌<input type="checkbox"> 旅行<input type="checkbox"> 象棋<input type="checkbox">
</form>
</body>
<body>
<form>
性别:男<input type="radio" name="sex"> 女<input type="radio" name="sex">
# 让name等于相同的名字,才可以实现多选一
</form>
</body>
除type属性外,标签还有其他很多属性,其常用属性如下:
| 属性 | 属性值 | 描述 |
|---|---|---|
| name | 由用户自定义 | 定义input元素的名称 |
| value | 由用户自定义 | 规定input元素的值 |
| checked | checked | 规定此input元素首次加载时应当被选中。 |
| maxlength | 正整数 | 规定输入字段中的字符的最大长度 |
(1)name和value是每个表单元素都有的属性值,主要给后台人员使用
(2)name表单元素的名字,要求 单选按钮和复选框要有相同的name值
(3)单选按钮和复选框可以设置checked 属性,当页面打开的时候就可以默认选中这个按钮
(4)maxlength是用户可以在表单元素输入的最大字符数,一般较少使用。
<body>
<form>
性别:男<input type="radio" name="sex" value="男"> 女<input type="radio" name="sex" value="女" checked=checked> <br>
爱好:唱歌<input type="checkbox" value="唱歌" checked="checked"> 旅行<input type="checkbox" value="旅行" checked="checked"> 象棋<input type="checkbox" value="象棋"><br>
用户名:<input type="text" value="请输入用户名" maxlength="6">
</form>
</body>
运行如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rEYqdDpp-1656254631790)(Typora_image/016.png)]](https://1000bd.com/contentImg/2022/06/28/053138899.png)
思考:
1.有些表单元素想刚打开页面就默认显示几个文字怎么做?
<input type="text" value="请输入用户名">
2.页面中的表单元素非常多,如何区别不同的表单元素?
用户名:<input type="text" value="请输入用户名" name="username">
属性后面的值,是自定义的
radio(或者checkout)如果的一组,我们必须给他们命名相同的名字
<input type="radio" name="sex">男
<input type="radio" name="sex">女
3.如果页面一打开就让某个单选按钮或者复选框是选中状态?
checked属性:表示默认选中状态,用于单选按钮和复选按钮
性别:<input type="radio" name="sex" value="男" checked="checked">男
<input type="radio" name="sex" valeu="女">
4.如何让input表单元素展示不同的形态?比如单选按钮或者文本框
type属性:type属性可以让input表单元素设置不同的形态
<input type="radio" name="sex" value="男" checked="checked">男
<input type="text" value="请输入用户名">
type属性里的submit应用示范
<br>
<input type="submit">
<br>
<input type="submit" value="免费注册">
运行如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pyFmTkAj-1656254631791)(Typora_image/017.png)]](https://1000bd.com/contentImg/2022/06/28/053139040.png)
reset重置也可以这样
<input type="reset" value="重新填写">
点击submit按钮,会将表单数据提交到后端;点击reset按钮,会将页面填写的表单数据清除
button按钮,常用于获取验证码之类的功能,后期结合js搭配使用
8.3.4.1
<label for="sex">男</label>
<input type="radio" name="sex" id="sex">
核心:
<label for="esf">用户名:</label><input type="text" id="esf">
效果:点击"用户名"三个字之后,也可以在文本框中写字。
举例:
<input type="radio" name="sex" id="man"><label for="man">男</label>
<input type="radio" name="sex" id="woman"><label for="woman">女</label>
2.select下拉表单元素
使用场景:在页面中,如果有多个选项让用户选择,并且想要节约页面的空间时,我们可以使用标签控件定义下拉列表。
<select>
<option>选项1</option>
<option>选项1</option>
<option>选项1</option>
<option>选项1</option>
...
</select>
代码写法:
<body>
<form>
籍贯:<select>
<option>北京</option>
<option>上海</option>
<option>杭州</option>
<option selected="selected">武汉</option>
</select>
</form>
</body>
(1) 中至少包含一对
(2) 在中定义selected="selected"时,当前项即为默认选中项。
3.textarea文本域元素
使用场景:当用户输入内容较多的情况下,我们就不能使用文本框表单了,此时我们可以使用标签。
在表单元素中,标签是用于定义多行文本输入的控件。
使用多行文本输入控件,可以输入更多的文字,该控件常见于留言板,评论。
<textarea rows="3" cols="20">
文本内容
</textarea>
(1) 通过标签可以轻松地创建多行文本输入框
(2) cols=“每行中的字符数” , rows=“显示的行数”,我们在实际开发中不会使用,都是用CSS来改变
<body>
<form>
留言:<textarea cols="50" rows="5">
大家好
我新来的
请多多关照
几点休息啊
你困不困
要不要再加把劲
</textarea>
</form>
</body>
运行如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bt2olGx1-1656254631792)(Typora_image/018.png)]](https://1000bd.com/contentImg/2022/06/28/053139149.png)
演示效果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnZz53Jg-1656254631793)(Typora_image/019.png)]](https://1000bd.com/contentImg/2022/06/28/053139368.png)
用到了表格标签(两列对齐)、列表标签(无序列表)、表单标签(单选、复选、文本域、按钮)
代码如下:
<body>
<h4>光阴似箭,日月如梭!</h4>
<table width="600">
<!-- 第一行 -->
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" id="nan"><label for="nan"><img src="../access/nan.png" width="20" height="20">男</label>
<input type="radio" name="sex" id="nv"><label for="nv"><img src="../access/nv.png" width="20" height="20">女</label>
</td>
</tr>
<!-- 第二行 -->
<tr>
<td>生日:</td>
<td>
<select>
<option>--请选择年份--</option>
<option selected="selected">2001</option>
<option>2002</option>
<option>2003</option>
<option>2004</option>
<option>2005</option>
<option>2006</option>
</select>
<select>
<option>--请选择月份--</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
<select>
<option>--请选择日期--</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
</select>
</td>
</tr>
<!-- 第三行 -->
<tr>
<td>所在地区</td>
<td><input type="text" value="你好李焕英"></td>
</tr>
<!-- 第四行 -->
<tr>
<td>婚姻状况:</td>
<td>
<input type="radio" name="marry" id="wei" checked="checked"><label for="wei">未婚</label>
<input type="radio" name="marry" id="yi"><label for="yi">已婚</label>
<input type="radio" name="marry" id="li"><label for="li">离婚</label>
</td>
</tr>
<!-- 第五行 -->
<td>学历:</td>
<td><input type="text" value="大学本科"></td>
<!-- 第六行 -->
<tr>
<td>喜欢的类型:</td>
<td>
<input type="checkbox" name="love">妩媚的
<input type="checkbox" name="love">可爱的
<input type="checkbox" name="love">小鲜肉
<input type="checkbox" name="love" checked="checked">都喜欢
</td>
</tr>
<!-- 第七行 -->
<tr>
<td>个人介绍</td>
<td>
<textarea>个人简介</textarea>
</td>
</tr>
<!-- 第八行 -->
<tr>
<td></td>
<td>
<input type="submit" value="免费注册">
</td>
</tr>
<!-- 第九行 -->
<tr>
<td></td>
<td>
<input type="checkbox" checked="checked">我同意注册条款和会员加入标准
</td>
</tr>
<!-- 第十行 -->
<tr>
<td></td>
<td>
<a href="#">我是会员,立即登录</a>
</td>
</tr>
<!-- 第十一行 -->
<tr>
<td></td>
<td>
<h3>我承诺</h3>
<ul>
<li>年满18岁、单身</li>
<li>抱着严肃的态度</li>
<li>真诚寻找另一半</li>
</ul>
</td>
</tr>
</table>
</body>
https://www.w3school.com.cn/index.html
https://developer.mozilla.org/zh-CN/
css的主要使用场景就是美化网页,布局页面的。
1.1.HTML的局限性
说起HTML,这其实是非常单纯的家伙,它只关注内容的语义。比如
表名这是一个段落,表明这有一个图片,表明此处有链接。
很早的时候,世界上的网站虽然多,但是他们都有一个共同的特点:丑
虽然HTML可以做简单的样式,但是带来的是无尽的臃肿和繁琐。。。
1.2.CSS-网页的美容师
css是层叠样式表(Cascading Style Sheets)的简称
有时我们也会称之为CSS样式表或级联样式表
CSS也是一种标记语言
CSS主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
CSS让我们的网页更加丰富多彩,布局更加灵活。简单理解:CSS可以美化HTML,让HTML更漂亮,让页面布局更简单。
总结:
1.HTML 主要做结构,显示元素内容
2.CSS美化HTML,布局网页。
3.CSS最大的价值:由HTML专注去做结构呈现,样式交给CSS,即结构(HTML)与样式(CSS)相分离。
1.3 CSS语法规范
使用HTML时,需要遵从一定的规范,CSS也是如此,要想熟练的使用CSS对网页进行修饰,首先需要了解CSS样式规则。
CSS规则由两个主要的部分构成:选择器以及一条或多条声明。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OK2mEKlH-1656254631794)(Typora_image/020.png)]](https://1000bd.com/contentImg/2022/06/28/053139555.png)
选择器是用于指定CSS样式的HTML标签,花括号内是对该对象设置的具体样式。
属性和属性值以"键值对"的形式出现
属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等
属性和属性值直接用英文":"分开
多个"键值对"之间用英文";"进行区分
1.4 CSS代码风格
以下代码书写风格不是强制规范,而是符合实际开发书写方式。
1.样式格式书写
(1)紧凑格式
h3 {color: deeppink;font-size:200px;}
(2)展开格式
h3 {
color: pink;
font-size: 20px;
}
强烈推荐第二种格式,因为更直观
2.样式大小写风格
提倡用小写英文书写
h3 {
color: pink;
}
强烈推荐样式选择器、属性名,属性值关键字全部使用小写字母,特殊情况除外。
3.样式空格风格
h3 {
color: pink;
}
(1) 属性值前面,冒号后面,保留一个空格
(2) 选择器(标签)和大括号中间保留空格
<div>我是div</div>
<div>我是div</div>
<p>我是段落</p>
<ul>
<li>我是ul里面的小li哦</li>
</ul>
<ol>
<li>我是ol里面小li哦</li>
</ol>
1.我想把div里面的文字改为红色?
2.我想把第一个div里面的文字改为红色?
3.我想把ul里面的li文字改为红色?
选择器(选择符)就是根据不同需求把不同标签选出来这就是选择器的作用。简单来说,就是选择标签用的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmfJjEb8-1656254631794)(Typora_image/020.png)]](https://1000bd.com/contentImg/2022/06/28/053139555.png)
以上CSS做了两件事:
1.找到所有的h1标签。选择器(选对人)
2.设置这些标签的样式,比如颜色为红色(做对事)。
选择器分为基础选择器和复合选择器两个大类,我们这里先讲解一下基础选择器。
基础选择器是由单个选择器组成的
基础选择器又包括:标签选择器、类选择器、id选择器和通配符选择器。
标签选择器(元素选择器)是指HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。
语法:
标签名 {
属性1:属性值1;
属性2:属性值2;
属性3:属性值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>基础选择器之标签选择器</title>
<style>
p {
color: rgb(14, 214, 121);
}
div {
color: rgb(240, 65, 182);
}
</style>
</head>
<body>
<p>男士</p>
<p>男士</p>
<p>男士</p>
<div>女士</div>
<div>女士</div>
<div>女士</div>
<div>女士</div>
</body>
</html>
标签选择器的作用:
标签选择器可以把某一类标签全部选择出来,比如所有的
优点:
能快速的为页面中同类型的标签统一设置样式。
缺点:
不能设计差异化样式,只能选择全部的当前标签。
如果想要差异化选择不同的标签,单独选一个或者某几个标签, 可以使用类选择器。
语法:
.类名 {
属性1: 属性值1;
}
例如,将所有拥有red类的HTML元素均为红色。
.red {
color: red;
}
结构需要用class属性来调用class 类的意思
<div class="red">变红色</div>
类选择器口诀:样式点定义,结构类(class)调用。一个或多个,开发最常用(style里面的.red就相当于body标签的class=“red”)
练习
<!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: rgb(224, 14, 14);
}
.wx {
color: rgb(43, 219, 37);
}
.dfa {
color: rgba(219, 13, 175, 0.623);
}
.lo {
color: rgb(21, 170, 207);
}
</style>
</head>
<body>
<ul>
<li class="red">冰雨</li>
<li class="wx">来生缘</li>
<li class="dfa">水手</li>
<li>大海</li>
<li>铁窗泪</li>
<li class="red">伤心太平洋</li>
</ul>
<ol>
<li class="dfa">落霞与孤鹜齐飞</li>
<li class="wx">秋水共长天一色</li>
</ol>
<div class="lo">大家晚上好</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUhY2uoW-1656254631795)(Typora_image/021.png)]](https://1000bd.com/contentImg/2022/06/28/053139829.png)
注意:
(1)类选择器使用"."(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的),不用起标签语言的名字(如div/p/span等)
(2) 可以理解为给这一个标签语言起了一个名字,来表示。
(3)长名字或词组可以使用中横线来为选择器命名。
<head>
<style>
.string-stree {
color: red;
}
</style>
</head>
(4) 不要使用纯数字、中文等命名,尽量使用英文字母来表示
(5) 命名要有意义,尽量使用别人一眼就知道这个类名的目的
(6) 命名规范:见附页(Web 前端来发规范手册.doc)
| header | 头 |
|---|---|
| content/container | 内容 |
| footer | 尾 |
| nav | 导航 |
| sidebar | 侧栏 |
| column | 栏目 |
| wrapper | 页面外围控制整体布局宽度 |
| left right center | 左右中 |
| loginbar | 登陆条 |
| logo | 标志 |
| banner | 广告 |
| main | 页面主体 |
| hot | 热点 |
| news | 新闻 |
| download | 下载 |
| subnav | 子导航 |
| menu | 菜单 |
| submenu | 子菜单 |
| search | 搜索 |
| friendlink | 友情链接 |
练习一下:
<!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>
.red {
background-color: rgb(241, 13, 13);
width: 100px;
height: 100px;
}
.green {
background-color: green;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div class="red">红色</div>
<div class="green">绿色</div>
<div class="red">红色</div>
</body>
</html>
备注:在
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9Zbr6al-1656254631796)(Typora_image/022.png)]](https://1000bd.com/contentImg/2022/06/28/053140040.png)
我们可以给一个标签指定多个类名,从而达到更多的选择目的。这些类名都可以选出这个标签,
简单理解就是一个标签有多个名字,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8R9beqR-1656254631797)(Typora_image/023.png)]](https://1000bd.com/contentImg/2022/06/28/053140368.png)
1.多类名使用方式
<div class="red font20">大法师</div>
(1)在标签class属性中写多个类名
(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>
.yello {
color: rgb(224, 210, 11);
}
.font35 {
font-size: 50px;
}
</style>
<body>
<div class="yello font35">姑苏城外寒山寺</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rMwd9i06-1656254631798)(Typora_image/024.png)]](https://1000bd.com/contentImg/2022/06/28/053140618.png)
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>
.box {
width: 100px;
height: 100px;
}
.red {
background-color: rgb(241, 13, 13);
}
.green {
background-color: green;
}
</style>
</head>
<body>
<div class="red box">红色</div>
<div class="green box">绿色</div>
<div class="red box">红色</div>
</body>
</html>
(1)可以把一些标签元素相同的样式(共同的部分)放到一个类里面
(2)这些标签都可以调用这个公共的类,然后再调用自己独有的类
(3)从而节省代码,统一修改也非常方便。
<div class= "pink font20 weigh font18">放大</div>
<div class= "pink font20 weigh font18">房源</div>
<div class= "pink font20 weigh font18">发生</div>
<div class= "pink font20 weigh font18">待发送</div>
1.各个类名中间用空格隔开
2.简单理解:就是给某个标签添加了多个类,或者这个标签有多个名字
3.这个标签就可以分别具有这些类名的样式
4.从而节省了CSS代码,统一修改也非常方便
5.多类名选择器在后期布局比较复杂的情况下,还是较多使用的
id 选择器可以为标有特定的id的HTML元素指定特定的样式
HTML元素以id属性来设置id选择器,CSS中id选择器以"#"来定义。
#id名 {
属性1:属性值1;
...
}
例如,将id为nav元素中的内容设置为红色
#nav {
color: red;
}
代码演示:
<!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>
#orange {
color: orange;
}
</style>
</head>
<body>
<div id="orange">会当凌绝顶,一览众山小</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cdnzNRvk-1656254631798)(Typora_image/025.png)]](https://1000bd.com/contentImg/2022/06/28/053140821.png)
id选择器的口诀:样式#定义,结构id调用只能调用一次,别人切勿使用(规则)
| id选择器和类选择器的区别 |
|---|
| 1.类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用 |
| 2.id选择器好比人的身份证号码,全中国是唯一的,不得重复 |
| 3.id选择器和类选择器最大的不同在于使用次数上 |
| 4.类选择器在修改样式中用到最多,id选择器一般用于页面唯一性的元素上,经常和JavaScript搭配使用 |
在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>
* {
color: blue;
}
</style>
<!-- * 在这里把 html body div span li 等标签都改为了红色 -->
</head>
<body>
<div>呐喊</div>
<span>我彷徨</span>
<ul>
<li>朝花夕拾</li>
</ul>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTdx42gM-1656254631799)(Typora_image/026.png)]](https://1000bd.com/contentImg/2022/06/28/053140930.png)
通配符选择器不需要调用,自动就给所欲的元素使用样式
特殊情况才使用,后面讲解使用场景(以下是清除所有的元素标签的内外边距)
* {
margin: 0;
padding: 0;
}
| margin | [ˈmɑːdʒɪn] | 外边距属性 |
|---|---|---|
| padding | [ˈpædɪŋ] | 内边距属性 |
| 基础选择器 | 作用 | 特点 | 使用情况 | 用法 |
|---|---|---|---|---|
| 标签选择器 | 可以选出所有相同的标签,比如p | 不能差异化选择 | 较多 | p {color: red;} |
| 类选择器 | 可以选出1个或者多个标签 | 可以根据需求选择 | 非常多 | .nav {color: red;} |
| id选择器 | 一次只能选择1个标签 | ID属性只能在每个HTML文档中出现一次 | 一般和js搭配 | #nav {color: red;} |
| 通配符选择器 | 选择所有的标签 | 选择的太多,有部分不需要 | 特殊情况使用 | * {color: red;} |
CSS Fonts(字体)属性用于定义字体系统、大小、粗细、和文字样式(如斜体)
3.1 字体系列
CSS使用 font-family 属性定义文本的字体系列
p {font-family:"微软雅黑";}
div{font-family:Arial,"Microsoft Yahei","微软雅黑";}
代码演示
<!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>CSS字体属性之字体系列</title>
<style>
h2 {
/* font-family:'微软雅黑'; */
font-family: 'Gill Sans', 'Gill Sans MT';
}
p {
font-family: '华文行楷';
}
</style>
</head>
<body>
<h2>像风一样活着</h2>
<p>没有预谋</p>
<p>只管有勇无谋</p>
<p>风风火火地向前冲</p>
<p>撞上南墙</p>
<p>也无人看得见自己的伤痛</p>
<p>人人都能感知风向的变换</p>
<p>却少有人见识风的模样</p>
</body>
</html>
演示效果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1rlTaum0-1656254631801)(Typora_image/027.png)]](https://1000bd.com/contentImg/2022/06/28/053141040.png)
(1)各种字体之间必须使用英文状态下的逗号隔开
(2)一般情况下,如果有空格隔开的多个单词组成的字体,加引号。
(3)尽量使用系统默认自带的字体,保证在任何用户的浏览器中都能正确显示
(4)最常见的几个字体:body{font-family:‘Microsoft YaHei’,‘tahoma,arial’,‘Hiragino Sans GB’;}
(5)可以给整个body标签设置字体
在开发中,浏览器会依次寻找存在的字体进行显示
CSS使用font-size属性定义字体大小
p {
font-size: 20px;
}
(1) px(像素)大小是我们网页的最常用的单位
(2) 谷歌浏览器默认的文字大小为16px
(3) 不同浏览器可能默认显示的字号大小不一致,我们尽量给一个明确值大小,不要默认大小。
(4)可以给body指定整个页面文字的大小
代码演示:
<!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>CSS字体属性之字体系列</title>
<style>
body {
font-size: 32px;
}
</style>
</head>
<body>
<h2>像风一样活着</h2>
<p>没有预谋</p>
<p>只管有勇无谋</p>
<p>风风火火地向前冲</p>
<p>撞上南墙</p>
<p>也无人看得见自己的伤痛</p>
<p>人人都能感知风向的变换</p>
<p>却少有人见识风的模样</p>
</body>
</html>
演示效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkrWDHhk-1656254631801)(Typora_image/028.png)]](https://1000bd.com/contentImg/2022/06/28/053141196.png)
可以看到,给整个body标签设定了字体,但是标题标签比较特殊,需要单独指定文字大小
<head>
<style>
h2 {
font-size: 16px;
}
</style>
</head>
CSS使用font-weight属性设置文本字体的粗细
| normal | 正常的字体,相当于number为400 |
|---|---|
| bold | 粗体,相当于number的700 |
| bolder | 特粗体 |
| lighter | 细体 |
| number | 通过数字实现加粗效果(100-900),注意这个数字后面不跟单位 |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoyedNc6-1656254631802)(Typora_image/029.png)]](https://1000bd.com/contentImg/2022/06/28/053141415.png)
使用number属性(后面不用跟单位)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9CrDuWZN-1656254631803)(Typora_image/030.png)]](https://1000bd.com/contentImg/2022/06/28/053141571.png)
展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qTLXKimU-1656254631804)(Typora_image/031.png)]](https://1000bd.com/contentImg/2022/06/28/053141712.png)
实际开发中,我们通常用number进行改变粗细。
h2 {
font-weight: 400; /* 实际开发中常用 */
font-weight: normal; /* 和上面的语句等价 */
}
学会让加粗标签(比较h和strong等)不加粗,只需要定义 font-weight: 400;就可以
学会让正常标签改变粗细,也只需定义font-weight的数字就可以了。
实际开发中更喜欢用数字表示粗细。
CSS使用font-style属性设置文本的风格
p {
font-style" normal;
}
| 属性值 | 作用 |
|---|---|
| normal | 默认值,浏览器会显示标准的字体样式 font-style: normal; |
| italic | 浏览器会显示斜体的字体样式 |
<!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>
p {
font-style: normal;
font-size: 50px;
}
</style>
</head>
<body>
<p>元芳,你怎么看!</p>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jeWrbJtr-1656254631804)(Typora_image/032.png)]](https://1000bd.com/contentImg/2022/06/28/053141946.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>
p {
font-style: italic;
font-size: 50px;
}
</style>
</head>
<body>
<p>元芳,你怎么看!</p>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p5Mp4TFM-1656254631805)(Typora_image/033.png)]](https://1000bd.com/contentImg/2022/06/28/053142071.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>
</head>
<body>
<em>马上就要放假了</em>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Dk6bU2X-1656254631806)(Typora_image/034.png)]](https://1000bd.com/contentImg/2022/06/28/053142165.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>
em {
font-style: normal;
}
</style>
</head>
<body>
<em>马上就要放假了</em>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g6doZdRB-1656254631807)(Typora_image/035.png)]](https://1000bd.com/contentImg/2022/06/28/053142274.png)
注意:平时我们很少给文字加斜体,反而要给斜体标签(em,i)改为不倾斜字体。
字体属性可以把以上文字样式综合来写,这样可以更节约代码
body {
font: font-style font-weight font-size/line-height font-family;
}
注意,不能更改里面的顺序
需求:想要div里面文字变倾斜,加粗,字号设置为16像素,并且是微软雅黑
<!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 {
font-style: italic;
font-size: 16px;
font-weight: 700;
font-family: 'Microsoft YaHei;
} */
/* font: font-style font-weight font-size/line-height font-family; */
div {
font: italic 700 16px 'Microsoft YaHei';
}
</style>
</head>
<body>
<div>他说风雨中,这点痛算什么,擦干泪不要问为什么!</div>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LEI97C7-1656254631808)(Typora_image/036.png)]](https://1000bd.com/contentImg/2022/06/28/053142415.png)
(1)使用font属性时,必须按上面的语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开
(2)不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用
上面的例子省略版可写为:
<head>
<style>
div {
font: 16px 'Microsoft YaHei';
}
</style>
</head>
| 属性 | 表示 | 注意点 |
|---|---|---|
| font-size | 字号 | 我们通常用的单位是px像素,一定要跟上单位 |
| font-family | 字体 | 实际工作中按照团队约定来写字体 ‘Microsoft YaHei’ |
| font-weight | 字体粗细 | 记住加粗是700或者bold 不加粗是normal或者400 记住数字不要跟单位 |
| font-style | 字体样式 | 记住倾斜是italic 不倾斜是normal 工作中我们常用normal |
| font | 字体连写 | 字体连写是有顺序的 不能随意换位置;其中字号 和字体必须同时出现 |
拓展: 标签也可以用来设置倾斜
看完思考两个问题:
(1)字体复合属性如何写?里面有没有什么注意细节?
字体连写是有顺序的 不能随意换位置;其中字号 和字体必须同时出现
(2)如何让加粗的文字不加粗显示,如何让倾斜的文字不倾斜显示
font-weight改成400;font-style改成normal
CSS Text(文本)属性可定义文本的外观,比如文本的颜色,对齐文本,装饰文本,文本缩进,行间距等。
color属性用于定义文本的颜色
div {
color: red;
}
| 表示 | 属性值 |
|---|---|
| 预定义的颜色值 | red,green,blue等 |
| 十六进制 | #FF0000,#FF6600,#29D794 |
| RGB代码 | rgb(255,0,0)或rgb(100%,0%,0%) 实际上是三原色的缩写(red,green,blue) |
<!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>css文本外观属性之颜色</title>
<style>
div {
color: green;
}
p {
color: #16f1e7;
}
span {
color: rgb(100,222,555);
}
</style>
</head>
<body>
<div>听说你最喜欢丁香花,因为你的名字就是它</div>
<p>大风起兮云飞扬</p>
<span>幸甚至载,何以咏志</span>
</body>
</html>
执行下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1YkqpBvh-1656254631810)(Typora_image/037.png)]](https://1000bd.com/contentImg/2022/06/28/053142555.png)
在实际开发中,最常用十六进制。
text-align 属性用于设置元素内文本内容的水平对齐方式
div {
text-align: center;
}
| 属性值 | 解释 |
|---|---|
| left | 左对齐(默认值) |
| right | 右对齐 |
| center | 居中对齐 |
<!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>CSS文本外观之文字对齐</title>
<style>
div {
text-align: left;
}
span {
text-align:center;
}
/* span失效,h1成功,本质上是让h1盒子里面的文字水平居中对齐 */
h1 {
text-align: center;
}
p {
text-align:right;
}
</style>
</head>
<body>
<h1>大家晚上好</h1>
<div>大家晚上好</div>
<span>大家晚上好</span>
<p>大家晚上好</p>
</body>
</html>
执行下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rt3XKPY4-1656254631814)(Typora_image/038.png)]](https://1000bd.com/contentImg/2022/06/28/053142665.png)
text-decoration 属性规定添加到文本的修饰,可以给文本添加下划线、删除线、上划线等
div {
text-decoration: underline;
}
| 属性值 | 描述 |
|---|---|
| none | 默认。没有装饰线(最常用) |
| underline | 下划线。链接a自带下划线(常用) |
| overline | 上划线。(几乎不用) |
| line-through | 删除线。(不常用) |
<!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 {
text-decoration: underline;
}
span {
text-decoration: line-through;
}
p {
text-decoration: none;
}
h6 {
text-decoration: overline;
}
a {
text-decoration: none;
color: #000;
}
</style>
</head>
<body>
<div>愁安静的旋律</div>
<span>迷人的小猫</span>
<p>记忆的角落</p>
<h6>善良的阿刁</h6>
<a href="#">超链接的下划线如何去掉</a>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2T2xLVG-1656254631837)(Typora_image/039.png)]](https://1000bd.com/contentImg/2022/06/28/053142774.png)
text-indent 属性用来指定文本的第一行的缩进,通常是将段落的首航缩进。
div {
text-indent: 10px;
}
通过设置该属性,所有元素的第一行都可以缩进一个给定的长度,甚至该长度可以是负值
p {
text-indent: 2em;
}
em是一个相对单位,就是当前元素(font-size)一个文字的大小,如果当前元素没有设置大小,则会按照父元素的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> CSS文本外观之文本缩进</title>
<style>
p {
text-indent: 32px;
}
h6 {
text-indent: 2em;
}
</style>
</head>
<body>
<p>我记得苏童一直欣赏的一句话:真正的先锋一如既往。借用这句话的语式,
我想说,真正的读者也要一如既往。我对于苏童,可以说是一个一如既往的读者。
我最初实际上是苏童的崇拜者和忠实的读者,是一个苏童迷。自从1989年我读到
他的《妻妾成群》《红粉》开始,对他的小说近乎是一种沉浸和迷恋。可以说我几
乎没有遗漏过他的任何一部作品。我和苏童是同龄人,他的作品不仅能带给我许多
能让我重新找回自我的东西,还能唤醒许多关于国家、民族尤其个人生命记忆的
东西。而且,我不仅喜爱他的作品,更主要的是他是让我内心极为敬佩的一个作家。</p>
<h6>近年,大家都在称赞贾平凹的《秦腔》,尤其是他在作品中表现出的文学叙事的耐心。
其实,我觉得苏童也是一位真正的、非常有叙事耐心的作家。耐心是如何建立起来的?
这里实际上就是个写作姿态的问题。可以说,苏童还是一个心理承受力极好的作家,这
些年来他基本不受外界的干扰,扎扎实实地做人作文。所以,毕飞宇曾说,认识苏童这
么多年,发现他身上很多东西几乎就没有什么变化。一个作家凭借什么力量能够使读者
保持对你的喜爱,不仅是因为你有一两部好小说,还因为你对文学写作一如既往的虔诚
。这是一个作家最不该变化的东西。苏童对于小说写作是相当虔诚的,有时甚至是倔强
的。</h6>
<p>我认为,他对于短篇的偏爱和写作就是倔强的,不惜气力的。也是超出了任何功利
心的、富于耐性的。当然,我们可以说,苏童是一个在写作上既有“坡度”也有“弯度”的
作家,有许多作家也是在三十几岁、四十几岁就写了三五百万字,可那是自我滑行的长
度,却没有向上的坡度。苏童却是一位始终具有写作坡度和高度的作家。那么,因为苏
童自己写作的起点太高了,他有一个整体上的绝对的高度。一上手就是《一九三四年的
逃亡》,就是《妻妾成群》《南方的堕落》,就是《刺青时代》,所以自己很难越过
自己建立的“标高”。 长篇也是这样,你很难说《米》好还是《城北地带》好,更不好
说《碧奴》就强于《我的帝王生涯》。我也不认为《蛇为什么会飞》就是一部失败的小
说。有高有低。但我感觉,苏童真正能够不断超过自己的还是他的短篇小说,而不是中
篇、长篇。能够让他感到最自信的实际上也是短篇。十几年来,苏童短篇写作的热情持
续不减,而苏童的短篇的被需要,也在某种程度上体现出这个时代审美方向的一些变化。</p>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ixw8DtfS-1656254631839)(Typora_image/040.png)]](https://1000bd.com/contentImg/2022/06/28/053142899.png)
line-height 属性用于设置行间的距离(行高)。可以控制文字行与行之间的距离
p {
line-height: 26px;
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvnL1EZg-1656254631841)(Typora_image/041.png)]](https://1000bd.com/contentImg/2022/06/28/053143087.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>CSS文本外观之行间距</title>
<style>
h5 {
line-height: 26px;
}
p {
line-height: 32px;
}
</style>
</head>
<body>
<div>
<h5>我记得苏童一直欣赏的一句话:</h5>
<p>真正的先锋一如既往。借用这句话的语式,
我想说,真正的读者也要一如既往。我对于苏童,<br>可以说是一个一如既往的读者。
我最初实际上是苏童<br>的崇拜者和忠实的读者,是一个苏童迷。自从1989年我<br>读到
他的《妻妾成群》《红粉》开始,对他<br>的小说近乎是一种沉浸和迷恋。</p>
<p>可以说我几
乎没有遗漏过他的任何一部作品。我和苏童是同龄人,他<br>的作品不仅能带给我许多
能让我重新找回自我<br>的东西,还能唤醒许多关于国家、民族尤其个人<br>生命记忆的
东西。而且,我不仅喜爱他的作品,更主要的是他是让我内心极<br>为敬佩的一个作家。</p>
</div>
</body>
</html>
执行下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ploG9l5N-1656254631843)(Typora_image/042.png)]](https://1000bd.com/contentImg/2022/06/28/053143243.png)
| 属性 | 表示 | 注意点 |
|---|---|---|
| color | 文本颜色 | 我们通常用十六进制,比如而且是简写形式#fff |
| text-align | 文本对齐 | 可以设定文字水平的对齐方式 |
| text-indent | 文本缩进 | 通常我们用于段落首行缩进2个字的距离 text-indent:2em; |
| text-decoration | 文本修饰 | 记住添加下划线 underline 取消下划线 none |
| line-height | 行高 | 控制行与行之间的距离 |
按照CSS样式书写的位置(或者引入的方式),CSS样式表可以分为三大类:
1.行内样式表(行内表)
2.内部样式表(嵌入式)
3.外部样式表(链接式)
内部样式表(内嵌样式表)是写到html页面内部,是将所有的CSS代码抽取出来,单独放到一个
<style>
div {
color: red;
font-size: 12px;
}
</style>
(1)
(2)通过此种方式,可以方便的控制当前整个页面中的元素样式设置。
(3)代码结构清晰,但是并没有实现结构与样式的完全分离(最终的CSS还是放在页面里面了)
(4)使用内部样式表设定CSS,通常也被称为嵌入式引入,这ahng方式是我们练习时常用的方式。
行内样式表(内联样式表)是在元素标签内部的style属性中设定CSS样式,适合于修改简单样式。
<div style="color: red; font-size: 12px;">认识自己的无知是开启命运的大门</div>
需求:只把第三句改成样式为红色,字体为12px。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fcegGGjJ-1656254631844)(Typora_image/043.png)]](https://1000bd.com/contentImg/2022/06/28/053143352.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>行内样式表</title>
</head>
<body>
<p>像风一样活着</p>
<p>不管多少次碰壁</p>
<p style="color: red; font-size: 12px;">都将忍住伤痛继续远行</p>
<p>不在乎有没人在意落魄的风影</p>
</body>
</html>
执行效果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XQXZXcLH-1656254631848)(Typora_image/044.png)]](https://1000bd.com/contentImg/2022/06/28/053143540.png)
(1) style 其实就是标签的属性
(2) 在双引号中间,写法要符合CSS规范
(3) 可以控制当前的标签设置样式
(4) 由于书写繁琐,并没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单的样式的时候,可以考虑使用。
(5)使用行内样式表设定CSS,通常也被称为行内式引入。
实际开发都是外部样式表,适合于样式比较多的情况,核心是:样式单独写到CSS文件中,之后把CSS文件引入到HTML页面中使用。
引入外部样式表分为两步:
1.新建一个后缀名为.css的样式文件,把所有CSS代码都放入此文件中。
2.在HTML页面中,使用标签引入这个文件。
<link rel="stylesheet" href="css文件路径">
在这里,stylesheet表示样式表,是一个属性
展示:
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>
style.css文件中,代码如下:
/* 这个css文件里面只有样式没有标签 */
div {
color: aquamarine;
}
因为在同级目录,href标签里直接写文件名就可以。
执行效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NT9IPXpZ-1656254631849)(Typora_image/045.png)]](https://1000bd.com/contentImg/2022/06/28/053143680.png)
| 属性 | 作用 |
|---|---|
| rel | 定义当前文档与被链接文档直接的关系,在这里需要指定为"stylesheet",表示被链接的文档是也给样式表文件 |
| href | 定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径 |
(1) 使用外部样式表设定CSS,通常也被称为外链式或者链接引入式,这种方式是开发中常用的
| 样式表 | 优点 | 缺点 | 使用情况 | 控制范围 |
|---|---|---|---|---|
| 行内样式表 | 书写方便,权重高 | 结构样式混写 | 较少 | 控制一个标签 |
| 内部样式表 | 部分结构和样式相分离 | 没有彻底分离 | 较多 | 控制一个页面 |
| 外部样式表 | 完全实现结构和样式相分离 | 需要引入 | 最多,推荐 | 控制多个页面 |
制作网页:https://baijiahao.baidu.com/s?id=1638025218001146475&wfr=spider&for=pc
制作页面整体可以分为两步:
1.搭建html结构页面
2.修改CSS样式
(faststone capture 测量字体的工具)
(图片加居中对齐没有效果,一般做法是给图片加一个父标签,比如
)
<style>
.img {
text-align: center;
}
</style>
<body>
<img src="qiwentu.png" alt="这是一张气温图" title="气温图" width="500" height="450" border="1" class="img">
</body>
这样的操作,图片并没有居中
应该用下面的操作,图片才会居中
<head>
<style>
.img {
text-align: center;
}
</style>
</head>
<body>
<p class="img">
<img src="qiwentu.png" alt="这是一张气温图" title="气温图" width="500" height="450" border="1">
</p>
</body>
网页案例代码如下:
<!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 {
font: 16px/28px 'Microsoft YaHei';
}
h1 {
font-weight: 400;
text-align: center;
}
.grey {
color: #888;
font-size: 12px;
text-align: center;
}
a {
text-decoration: none;
}
.search {
color: #666;
width: 171px;
}
.btn {
font-weight: 700;
}
.pic {
text-align: center;
}
.footer {
color: #888;
font-size: 12px;
}
</style>
</head>
<body>
<h1>热到膨胀!北方高温明日达鼎盛,京津冀局地地表温度将超60℃</h1>
<div class="grey">发布时间: 2019-07-03 16:29<a></a></div>
<div class="grey">发布时间: 2019-07-03 16:29<a href="#" class="search">中国天气网</a>
<input type="text" value="请输入查询条件" class="search"> <button class="btn">搜索</button>
</div>
<hr>
<p>中国天气网讯 今天(3日),华北、黄淮多地出现高温天气,截至下午2点,北京、天津、郑州等地气温突破35℃。预报显示,今后三天(3-5日),这一带的高温天气将继续发酵,高温范围以及强度将在4日达到鼎盛,预计北京、天津、石家庄、济南等地明天的最高气温有望突破38℃,其中北京和石家庄的最高气温还有望创今年以来的新高。</p>
<h4>气温41.4℃!地表温度66.5℃!北京强势迎七月首个高温日</h4>
<p>今天,华北、黄淮一带的高温持续发酵,截至今天下午2点,陕西北部、山西西南部、河北南部、北京、天津、山东西部、河南北部最高气温已普遍超过35℃。大城市中,北京、天津、郑州均迎来高温日。 </p>
<p class="pic">
<img src="qiwentu.png" alt="这是一张气温图" title="气温图" width="500" height="450" border="1">
</p>
<p>今天,北京地区迎来今年七月份的首个高温日。监测显示,截至今天下午3点,城区气温普遍在36到39℃之间,古观象台、大观园、回龙观等地气温超过40℃,气温最高的站点出现在昌平区流村,达到41.4℃。</p>
<p class="pic">
<img src="wendutu.png" alt="这是一张温度图" title="温度图" width="500" height="450" border="1">
</p>
<p>在阳光暴晒下,地表温度也逐渐走高。今天下午2点,华北黄淮大部地区的地表温度都在50℃以上,部分地区地表温度甚至超过60℃。其中,河北衡水地表温度高达68.3℃,天津站和北京站附近的地表温度分别高达66.6℃和66.5℃。</p>
<h4>明日热度再升级!京津冀携手冲击38℃+</h4>
<p>中国天气网气象分析师王伟跃介绍,明天(4日),华北、黄淮地区35℃以上的高温天气还将继续升级,并进入鼎盛阶段,高温强度和范围都将发展到最强。</p>
<p>明天,北京南部、天津大部、河北中部和南部、山东中部和西部、山西南部局地、河南北部、东北部分地区的最高气温都将达到或超过35℃。</p>
<p>大城市中,明天(4日)石家庄的最高气温会向39℃冲击,北京、天津、济南也将达到38℃,酷热难耐。其中,北京和石家庄的气温都有望刷新今年以来的最高气温纪录。(注:此处北京气温统计地为南郊观象台,其他站点可能会超过这个温度。)</p>
<p>由于明天京津冀一带的气温还将继续升级,地表温度也将随之走高,预计,京津冀一带部分地区地表温度或将继续超过60℃。</p>
<p>到了5日,北方35℃以上的高温天气范围将略有缩小,但在河北南部、山东西部、河南北部、山西南部、陕西中南部部分地区、新疆东南部的最高气温依然会达到或超过35℃。</p>
<h4>京津冀周末迎降温 唯有济南热度不减</h4>
<p>中国天气网气象分析师王伟跃介绍,周六(6日)开始,受降水天气影响,华北、黄淮大部的35℃以上高温天气会逐渐缓解,仅在河南、陕西南部、山西南部等地有分散性高温天气出现。7日以后,盘踞在华北、黄淮35℃以上的高温天气将逐渐销声匿迹。</p>
<p>不过,专家提醒,济南被雨水天气完美绕开,因此未来一周,当地的高温还会天天上岗。在此提醒当地居民注意防暑降温,防范持续高温带来的各种不利影响。</p>
<p class="footer">(文/张慧 数据支持/王伟跃 胡啸 审核/刘文静 张方丽)</p>
</body>
</html>
执行后运行如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h333i92n-1656254631851)(Typora_image/046.png)]](https://1000bd.com/contentImg/2022/06/28/053143868.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2K545Mhy-1656254631854)(Typora_image/047.png)]](https://1000bd.com/contentImg/2022/06/28/053144149.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0nXz738-1656254631855)(Typora_image/048.png)]](https://1000bd.com/contentImg/2022/06/28/053144305.png)
Chrome浏览器提供了一个非常好用的调试工具,可以用来调试我们的HTML结构和CSS样式
1.打开调试工具
打开Chrome浏览器之后,按下F12键或者右击页面空白处–>检查
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7LsvywL-1656254631858)(Typora_image/049.png)]](https://1000bd.com/contentImg/2022/06/28/053144622.png)
2.使用调试工具
(1) Ctrl + 滚轮 可以放大开发者工具代码大小。
(2) 左边是HTML元素结构,右边是CSS样式。
(3) 右边CSS样式可以改动数值(左右箭头或者直接输入)和查看颜色。
(4) Ctrl + 0 复原浏览器大小
(5) 如果点击元素,发现右侧没有样式引入,极有可能是类名或者样式引入错误。
(6) 如果有样式,但是样式前面有黄色叹号提示,则是样式属性书写错误。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1FLIk36-1656254631860)(Typora_image/050.png)]](https://1000bd.com/contentImg/2022/06/28/053144794.png)
Emmet语法是前身是Zen coding,它使用缩写,来提高html/css的编写速度,Vscode内部已经集成该语法。
(1)生成标签 直接输入标签名 按tab键即可 比如
div(再按table键)
生成
<div></div>
(2)如果想要生成多个相同标签 加上*就可以了 比如
div*3
生成
<div></div>
<div></div>
<div></div>
(3) 如果有父子级关系的标签,可以用 > 比如
ul>li
生成
<ui>
<li></li>
</ui>
ol>li#test$*5
生成
<ol>
<li id="test1"></li>
<li id="test2"></li>
<li id="test3"></li>
<li id="test4"></li>
<li id="test5"></li>
</ol>
(4)如果有兄弟关系的标签,用 + 就可以 比如
div+p
生成
<div></div>
<p></p>
(5)如果生成带有类名或者id名字的 比如
.demo
生成
<div class="demo"></div>
#one
生成
<div id="one"></div>
(6)如果生成的div类名是有顺序的,可以用自增符号$
.demo
生成
<div class="demo"></div>
.demo*4
生成
<div class="demo"></div>
<div class="demo"></div>
<div class="demo"></div>
<div class="demo"></div>
.demo$*4
生成
<div class="demo1"></div>
<div class="demo2"></div>
<div class="demo3"></div>
<div class="demo4"></div>
p.one
生成
<p class="one"></p>
span.green
生成
<span class="green"></span>
span#green
生成
<span id="green"></span>
p.one$*4
生成
<p class="one1"></p>
<p class="one2"></p>
<p class="one3"></p>
<p class="one4"></p>
(7)如果想要在生成的标签内部写内容可以用{}表示
div{今天没有下雨}
生成
<div>今天没有下雨</div>
div{今天不上班}*5
生成
<div>今天不上班</div>
<div>今天不上班</div>
<div>今天不上班</div>
<div>今天不上班</div>
<div>今天不上班</div>
div{$}*5
生成
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<style>
.test {
输入文本
}
</style>
在输入文本中
输入:tac 生成 text-align: center;
输入:w 生成 width: ;
输入:h 生成 height: ;
输入:w100 生成 width: 100px;
输入:h200 生成 height: 200px;
输入:ti2em 生成 text-indent: 2em;
输入: lh32px 生成 line-height: 32px;
输入:tdnone 生成 text-decoration: none;
<style>
.test {
text-align: center;
width: ;
height: ;
width: 200px;
height: 200px;
text-indent: 2em;
line-height: 32px;
text-decoration: none;
}
</style>
方法一:
在VSCode中,格式化文档的快捷键
shift +alt + F
也可以设置我们保存页面的时候自动格式化代码
方法二:
1.【文件】》》》》【首选项】》》》【设置】;
2.搜索setting
3.在settings.json下的【用户】中添加以下语句:
{
"editor.formatOnType": true,
"editor.formatOnSave": true
}
只需要设置一次,以后都可以自动保存格式化代码。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJCTIsXq-1656254631862)(Typora_image/051.png)]](https://1000bd.com/contentImg/2022/06/28/053144919.png)
在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的。
(1) 复合选择器可以更准确的、更高效的选择目标元素标签
(2) 复合选择器是有由两个或多个基础选择器,通过不同的方式组合而成的。
(3)常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等
后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就称为外层标签的后代。
语法:
元素1 元素2 {样式声明}
上述语法表示选择元素1里面的所有元素2(后代元素)
例如:
ul li { 样式声明 } /* 选择ul里面的所有的li标签元素 */
(1) 元素1 和元素2 中间用空格隔开
(2) 元素1 是父级,元素2 是子级,最终选择的是元素2
(3) 元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可
(4) 元素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>
/* <!-- 需求:将ol里面的li全部变为red --> */
ol li {
color: green;
}
/* 需求:将ol里面的li里面的p标签变为orange */
ol li p {
color: orange;
}
/* 需求:把第二组ul里面的li里面的p标签变为yellow */
.yellow li p {
color: yellow;
}
</style>
</head>
<body>
<!-- 有序列表 -->
<ol>
<li>速度</li>
<li>速度</li>
<li>速度</li>
<li>
<p>孙子辈的标签</p>
</li>
</ol>
<!-- 无序列表 -->
<ul>
<li>速度</li>
<li>速度</li>
<li>速度</li>
<li>
<P>无序列表里面的p标签不会变化</P>
</li>
</ul>
<ul class="yellow">
<li>速度</li>
<li>速度</li>
<li>速度</li>
<li>
<p>我第二组无序列表里面的p标签</p>
<p>我第二组无序列表里面的p标签</p>
<p>我第二组无序列表里面的p标签</p>
<p>我第二组无序列表里面的p标签</p>
</li>
</ul>
</body>
</html>
执行效果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IsMlWWFq-1656254631865)(Typora_image/052.png)]](https://1000bd.com/contentImg/2022/06/28/053145028.png)
子元素选择器(子选择)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素。
语法
元素1 > 元素2{样式声明}
上述语法表示选择器11里面的所有直接后代(子元素)元素2.
例如:
div > p { 样式声明 } /* 选择div里面所有最近一级p标签元素*/
(1)元素1 和元素2 中间用大于号隔开
(2) 元素1是父级,元素2是子级,最终选择的是元素2
(3)元素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>a {
color: rgb(221, 30, 30);
}
</style>
</head>
<body>
<div class="red">
<a href="#">我是儿子</a>
<p>
<a href="#">我是孙子</a>
</p>
</div>
</body>
</html>
运行效果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nFwJ8LHR-1656254631866)(Typora_image/053.png)]](https://1000bd.com/contentImg/2022/06/28/053145137.png)
上面例子中的第二个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>子元素选择器</title>
<style>
.red>a {
color: rgb(221, 30, 30);
}
.red p a {
color: rgb(45, 209, 53);
}
</style>
</head>
<body>
<div class="red">
<a href="#">我是儿子</a>
<p>
<a href="#">我是孙子</a>
</p>
</div>
</body>
</html>
执行效果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-phpClOmu-1656254631869)(Typora_image/054.png)]](https://1000bd.com/contentImg/2022/06/28/053145390.png)
测试练习
1.请将下面的链接文字修改为红色
<div>
<ul>
<li><a href="#">百度</a></li>
<li><a href="#">百度</a></li>
</ul>
</div>
修改样式如下:
<style>
.nav ul li a {
color: red;
}
</style>
2.请将下面的诸葛亮改为橘色
<body>
<div class="hot">
<a href="#">诸葛亮</a>
<ul>
<li><a href="#">孔明</a></li>
<li><a href="#">卧龙</a></li>
</ul>
</div>
</body>
修改样式为:
<style>
.hot>a {
color: orange;
}
</style>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1MBvHIZy-1656254631869)(Typora_image/055.png)]](https://1000bd.com/contentImg/2022/06/28/053145578.png)
并集选择器可以选择多组标签,同时为他们定义相同的样式,通常用于集体声明。
并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
语法:
元素1,元素2 { 样式声明 }
上述语法表示选择元素1 和元素2
例如
ul,div { 样式声明 } /* 选择ul 和 div标签元素*/
(1)元素1 和元素2 中间用逗号隔开
(2) 逗号可以理解为 和 的意思
(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>
/* 需求1:请把熊大和熊二改为粉色 */
/* div {
color: pink;
}
p {
color: pink;
} */
/* div,
p {
color: pink;
} */
/* 需求2:请把熊大、熊二改为红色 还有小猪一家改为粉色 */
div,
p,
.pig li {
color: pink;
}
</style>
</head>
<body>
<div>熊大</div>
<p>熊二</p>
<span>光头强</span>
<ul class="pig">
<li>小猪佩奇</li>
<li>猪爸爸</li>
<li>猪妈妈</li>
</ul>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2tnsKTAd-1656254631872)(Typora_image/056.png)]](https://1000bd.com/contentImg/2022/06/28/053145732.png)
约定的语法规范,并集选择器喜欢竖着写,最后一个选择器不需要加逗号(需求二的样式)
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如:hover、first-child。
因为伪类选择器很多,比如有链接伪类、结构伪类等。
a.link 选择所有未被访问的链接
a.visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起的链接)
代码如下:
<!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>
/* 未访问的链接 a:link */
a:link {
color: rgb(228, 231, 15);
text-decoration: none;
}
/* 选择点击过的(访问过的)链接 a:visited */
a:visited {
color: rgb(26, 224, 238);
}
/* 选择鼠标经过的那个链接 a:hover */
a:hover {
color: rgb(238, 23, 166);
}
/* 选择的是我们鼠标正在按下还没有弹起鼠标的那个链接 a:active */
a:active {
color: rgba(18, 238, 18, 0.74);
}
</style>
</head>
<body>
<a href="#">CSS链接伪样式选择器</a>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flPjb1Vc-1656254631873)(Typora_image/057.png)]](https://1000bd.com/contentImg/2022/06/28/053145841.png)
(1) 链接伪类选择器注意点
1.为了确保生效,按照LVHA的顺序声明 (:link—>:visited–>:hover—>:active)
2.记忆法:love hate 或者lv 包包 hao.
3.因为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>复合选择器之链接伪类选择器</title>
<style>
body {
color: purple;
}
</style>
</head>
<body>
<a href="#">这是一个链接</a>
</body>
</html>
整体给body设定一个样式是不生效的,需要具体指定
<!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>
/* body {
color: purple;
} */
a {
color: green;
}
</style>
</head>
<body>
<a href="#">这是一个链接</a>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJaytyFi-1656254631876)(Typora_image/058.png)]](https://1000bd.com/contentImg/2022/06/28/053145982.png)
(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>
a {
color: yellow;
text-decoration: none;
}
a:hover {
color: pink;
}
</style>
</head>
<body>
<a href="#">页面显示黄色,鼠标经过粉红色</a>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v780BqrH-1656254631877)(Typora_image/059.png)]](https://1000bd.com/contentImg/2022/06/28/053146091.png)
:forcus 伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况下类表单元素才能获取,因此这个选择器也主要针对表单元素来说。
input:focus {
backgroud-color: yellow;
}
实例代码:
<!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>focus伪类选择器</title>
<style>
/* 把获得光标的input表单元素选取出来 */
input:focus {
background-color: yellow;
color: rgb(12, 221, 236);
}
</style>
</head>
<body>
<input type="text">
<input type="text">
<input type="text">
</body>
</html>
效果展示
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cA4cAXq7-1656254631880)(Typora_image/060.png)]](https://1000bd.com/contentImg/2022/06/28/053146777.png)
| 选择器 | 作用 | 特征 | 使用情况 | 隔开符号及用法 |
|---|---|---|---|---|
| 后代选择器 | 用来选择后代元素 | 可以是子孙代 | 较多 | 符号是空格.nav a |
| 子代选择器 | 选择最近一级元素 | 只选亲儿子 | 较少 | 符号是大于 .nav>p |
| 并集选择器 | 选择某些相同样式的元素 | 可以用于集体声明 | 较多 | 符号是逗号 nav,.header |
| 链接伪类选择器 | 选择不同状态的链接 | 跟链接相关 | 较多 | 重点记住a{}和a:hover 实际开发的写法 |
| :forcus选择器 | 选择获取光标的表单 | 跟表单相关 | 较少 | input:focus 记住这个写法 |
了解元素的显示模式可以更好的让我们布局页面。
作用:网页的标签非常多,在不同的地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。
元素显示模式就是元素(标签)以什么方式进行显示,比如
HTML元素一般分为块元素和行内元素两种类型。
常见的块元素有
、
| Ordered List | [ˈɔːdəd lɪst] | 有序表 |
|---|---|---|
| Unordered list | [ˌʌnˈɔːdəd lɪst] | 无序表 |
块元素的特点:
(1)比较霸道,自己独占一行。
(2)高度、宽度、外边距以及内边距都可以控制
(3)宽度默认是容器(父级宽度)的100%。
(4)是一个容器及盒子,里面可以放行内或者块级元素。
注意点:
(1)文字类的元素不能使用块级元素
(2)
标签主要用于存放文字,因此
里面不能放块级元素,特别是不能放
(3)同理,
执行下面代码:
<body>
<div>块级标签的使用方法</div>
<p>
<div>大家好,我是p标签里的div</div>
</p>
</body>
在检查里面可以看到:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bwfu6hD-1656254631883)(Typora_image/061.png)]](https://1000bd.com/contentImg/2022/06/28/053146886.png)
特别注意,在p标签,h标签里不能放类似div这种块级元素
常见的行内元素有、、、、、、、、等,其中标签是最典型的行内元素。有的地方也将行内元素称为内联元素。、
行内元素的特点:
(1) 相邻行内元素在一行上,一行可以显示多个。
(2) 高、宽直接设置是无效的
(3) 默认宽度就是他本身的宽度
(4) 行内元素只能容纳文本或其他行内元素。
执行代码:
<body>
<a>你好1</a><strong>你好2</strong><b>你好3</b><em>你好4</em><i>你好5</i><del>你好6</del><s>你好7</s><ins>你好8</ins><u>你好9</u><span>你好10</span>
</body>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y22mLnn0-1656254631885)(Typora_image/062.png)]](https://1000bd.com/contentImg/2022/06/28/053146996.png)
注意:
(1)链接里面不能再放链接
(2) 特殊情况链接里面可以放块级元素,但是给转换一下块级元素最安全。
在行内元素中有几个特殊的标签---------、、,他们同时具有块元素和行内元素的特点。
有些资料称它们为行内块元素。
行内块元素的特点:
(1) 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
(2) 默认宽度就是它本身内容的宽度(行内元素特点。)
(3)高度,行高、外边距以及内边距都可以控制(块级元素特点)
测试代码:
<body>
<input type="text">
<input type="text">
<input type="text">
<img src="qiwentu.png" width="40px" height="40px" alt="这是一张图片">
<img src="wendutu.png" width="40px" height="40px" alt="这是一张图片">
</body>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUlbPxNw-1656254631888)(Typora_image/063.png)]](https://1000bd.com/contentImg/2022/06/28/053147105.png)
1.4 元素显示模式总结
| 元素模式 | 元素排列 | 设置样式 | 默认宽度 | 包含 |
|---|---|---|---|---|
| 块级元素 | 一行只能放一个块级元素 | 可以设置宽度高度 | 容器的100% | 容器级可以包含任何标签(p标签不可以放div) |
| 行内元素 | 一行可以放多个行内元素 | 不可以直接设置宽度高度 | 它本身内容的宽度 | 容纳文本或者其它行内元素(a标签可以放块元素) |
| 行内块元素 | 一行放多个行内块元素 | 可以设置宽度和高度 | 它本身内容的宽度 |
2.元素的显示模式的分离
特殊情况下,我们需要元素模式的转换,简单理解:一个模式的元素需要另外一种模式的特性
比如:行内元素需要设置宽度高度,就需要转化成块级元素
比如:想要增加链接的触发范围。
转换为块元素: display:block;
转换为行内元素: display:inline;
转换为行内块元素: display:inline-block;
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>元素显示模式转换</title>
<style>
a {
width: 800px;
height: 80px;
background-color: aquamarine;
text-decoration: none;
/* 上面设置高度,宽度不起作用,此时需要把行内元素a转换为块级元素 */
display: block;
}
div {
width: 800px;
height: 300px;
background-color: blue;
/* 上面的高度,宽度起作用了,此时可以把块级元素转换成行内元素 */
display: inline;
}
span {
width: 500px;
height: 300px;
background-color: purple;
/* 上面的高度,宽度都没起作用,此时可以把行内元素转换成行内块元素 */
display: inline-block;
}
</style>
</head>
<body>
<a href="#">a标签是一个行内元素,不可以直接设置宽度和高度,背景可以设置,转化成块级元素就可以</a>
<div>我是块级元素 ,接下面要变成行内元素/div>
<span>我是一个行内元素,直接设置不了宽高,接下面要变成行内块元素</span>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFp2gHIw-1656254631890)(Typora_image/064.png)]](https://1000bd.com/contentImg/2022/06/28/053147215.png)
4.一个小工具的使用 snipaste
Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕
常用的快捷键:
(1) F1可以截图,同时测试大小,设置箭头,书写文字等。
(2) F3在桌面置顶显示
(3)点击图片,alt可以取色 (按下shift可以切换取色模式)
(4) 按下esc取消图片显示
下载地址:https://www.snipaste.com/
需求效果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRqq7RLh-1656254631892)(Typora_image/065.png)]](https://1000bd.com/contentImg/2022/06/28/053147324.png)
核心思路:
1.把链接a转换成块级元素,这样链接就可以单独占一行,并且有宽度和高度
2.鼠标经过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>简单小米侧边栏</title>
<stYle>
/* 把a转换为块级元素 */
a {
color: aliceblue;
font-size: 14px;
background-color: lightslategrey;
display: block;
width: 300px;
height: 40px;
/* 去掉超链接的下划线 */
text-decoration: none;
/* 首行缩进两个字 */
text-indent: 2em;
}
/* 鼠标经过a给链接设置背景颜色 */
a:hover {
/* 这边用color只是改变字体颜色,不改变背景颜色,应该用background-color */
/* color: orange; */
background-color: orange;
}
</stYle>
</head>
<body>
<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平板</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#">健康 儿童</a>
<a href="#">耳机 音响</a>
<a href="#"></a>
</body>
</html>
4.1垂直居中的小技巧
CSS没有给我们提供文字垂直居中的代码,这里我们可以使用一个小技巧来实现
解决方案:
让文字的行高等于盒子的高度,就可以让文字在当前盒子里垂直居中
执行代码:
<!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>
div {
width: 400px;
height: 100px;
background-color: orange;
/* 让行高等于盒子的高度,就可以居中 */
line-height: 100px;
}
</style>
</head>
<body>
<div>我要居中</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9g5XDJtr-1656254631893)(Typora_image/066.png)]](https://1000bd.com/contentImg/2022/06/28/053147480.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdHOi1f6-1656254631896)(Typora_image/067.png)]](https://1000bd.com/contentImg/2022/06/28/053147652.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>单行文字垂直居中</title>
<style>
.juzhong {
width: 400px;
height: 100px;
background-color: orange;
/* 让行高等于盒子的高度,就可以居中 */
line-height: 100px;
}
.xiaoyu {
width: 400px;
height: 100px;
background-color: aquamarine;
/* 让行高小于盒子的高度,就偏上 */
line-height: 50px;
}
.dayu {
width: 400px;
height: 100px;
background-color: rgb(209, 197, 27);
/* 让行高大于盒子的高度,就偏下 */
line-height: 150px;
}
</style>
</head>
<body>
<div class="juzhong">我要居中</div>
<div class="xiaoyu">行高小于盒子高度</div>
<div class="dayu">行高大于盒子高度</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DN18CJnx-1656254631898)(Typora_image/068.png)]](https://1000bd.com/contentImg/2022/06/28/053147793.png)
通过CSS背景属性,可以给页面元素添加背景样式。
背景属性可以设置背景颜色,背景图片,背景平铺,背景图片位置,背景图像固定等
background-color属性定义了元素的背景颜色。
background-color:颜色值;
一般情况下,元素背景颜色默认值是transparent(透明),我们也可以手动指定背景颜色为透明色。
示例
<head>
<style>
div {
width: 200px;
height: 200px;
/* background-color: transparent; 默认的背景颜色 */
background-color: aquamarine;
}
</style>
</head>
<body>
<div>
</div>
</body>
background-image属性描述了元素的背景图像。实际开发常见于logo或者一些装饰性的小图片或者超大的背景图片,优点是非常便于控制控制位置(精灵图也是一种运行场景)
background-image: none | url (url)
| 参数值 | 作用 |
|---|---|
| none | 无背景图(默认) |
| url | 使用绝对或相对地址指定背景图片 |
示例
<head>
<style>
div {
width: 200px;
height: 200px;
background-image: url(qiwentu.png);
/* background-image: url(../HTML/1.jpg); */
}
</style>
</head>
<body>
<div>
</div>
</body>
如果需要在HTML页面上对背景图像进行平铺,可以使用background-repeat属性。
background-repeat: repeat | no-repeat | repeat-x | repeat-y
| repeat | 背景图片在纵向和横向平铺 |
|---|---|
| no-repeat | 背景图片不平铺 |
| repeat-x | 背景图片在横向上平铺 |
| repeat-y | 背景图片在纵向上平铺 |
执行代码
<!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>
div {
width: 200px;
height: 200px;
/* 盒子大小大于图片大小时,会平铺,如果有背景颜色的话会压住背景颜色 */
background-image: url(../access/vscodelogo.png);
background-color: darkgrey;
/* 默认情况下,背景图片是平铺的,可以设定不平铺 */
/* background-repeat: no-repeat; */
/* 沿着x轴平铺 */
/* background-repeat: repeat-x; */
/* 沿着y轴平铺 */
/* background-repeat: repeat-y; */
/* 注意:页面元素既可以添加背景颜色,也可以添加背景图片,只不过背景图片会压住背景颜色。 */
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ersTbHAK-1656254631899)(Typora_image/069.png)]](https://1000bd.com/contentImg/2022/06/28/053147949.png)
利用background-position属性可以改变图片在背景中的位置。
background-position: x y;
参数代表的意思:X坐标和Y坐标。可以使用方位名词或者精确单位。
| 参数值 | 说明 |
|---|---|
| length | 百分数 |由浮点数字和单位标识符组合的长度值 |
| position | top |center |bottom |left | center |right 方位名词 |
(1) 如果指定的是两个值都是方位名词,则两个值前后顺序无关,比如left top 和top left 效果一致
(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>
div {
width: 300px;
height: 300px;
background-image: url(../access/vscodelogo.png);
background-color: antiquewhite;
background-repeat: no-repeat;
/* 水平居中 */
/* background-position: center top; */
/* 水平靠右侧对齐 */
/* background-position: right center; */
/* 如果写方位名词,顺序无关 ,right center 和 center right 效果等价 */
background-position: center right;
/* 如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐 */
/* 下行代码显示,水平位置一定是靠左侧对齐,第二个参数省略 y轴是垂直居中显示的 */
/* background-position: left; */
/* 下行代码显示,水平位置一定是靠顶部对齐,第二个参数省略 y轴是垂直居中显示的 */
background-position: top;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWRzinhF-1656254631902)(Typora_image/070.png)]](https://1000bd.com/contentImg/2022/06/28/053148105.png)
5.4.1案例:背景位置方位名词应用
(1)如何获取网页图片,如下图所示保存,然后鼠标右键另存为即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JZ3AtkEg-1656254631903)(Typora_image/071.png)]](https://1000bd.com/contentImg/2022/06/28/053148261.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>背景位置方位名词应用</title>
<style>
h3 {
width: 550px;
height: 145px;
/* background-color: purple; */
font-size: 35px;
font-weight: normal;
/* 让盒子里的文字垂直居中 */
line-height: 145px;
background-image: url(../access/logo.png);
background-repeat: no-repeat;
background-position: left center;
text-indent: 2em;
}
</style>
</head>
<body>
<!-- 如果用插入图片,调位置难以确定 -->
<!-- <h3><img src="../access/logo.png">背景位置方位名词应用</h3> -->
<!-- 一般像小的图标,用背景图片进行处理 -->
<h3>背景位置方位名词应用</h3>
</body>
</html>
效果如下:

5.4.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>
body {
background-image: url(../access/bjt.jpg);
/* 图片太大,整个页面展示不全 */
/* 先设置不重复 */
background-repeat: no-repeat;
/* 再设置图片位置,水平居中 */
background-position: center top;
}
</style>
</head>
<body>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xoAXbDXe-1656254631908)(Typora_image/073.png)]](https://1000bd.com/contentImg/2022/06/28/053149105.png)
(1) 如果参数值是精确坐标,那么第一个肯定是X坐标,第二个一定是Y坐标。
(2) 如果只指定一个数值,那该数值一定是X坐标,另一个默认垂直居中。
需求:让图标距离左侧20px,距离上侧10px。
执行代码:
<!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>
div {
width: 400px;
height: 100px;
background-color: #add3e9;
background-image: url(../access/wzlogo.png);
background-repeat: no-repeat;
/* 下行代码中 20px 10px x轴一定是20 y轴一定是10 */
background-position: 20px 10px;
/* 指定一个数值一定是x轴的 y轴就是默认的垂直居中 */
background-position: 50px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDeb1i4J-1656254631909)(Typora_image/074.png)]](https://1000bd.com/contentImg/2022/06/28/053149418.png)
如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标
执行代码:
<!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>
div {
width: 300px;
height: 300px;
background-color: rgb(223, 144, 223);
background-image: url(../access/wzlogo.png);
background-repeat: no-repeat;
/* x轴居中,y轴向下80px */
/* background-position: center 80px; */
/* x轴向左80,y轴居中 */
background-position: 80px center;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCdsXYX5-1656254631912)(Typora_image/075.png)]](https://1000bd.com/contentImg/2022/06/28/053149636.png)
background-attachment 属性设置背景图片是否固定或者随着页面的其余部分滚动。
background-attachment 后期可以制作视差滚动的效果
backgtound-attachment : scroll | fixed
| 参数 | 作用 |
|---|---|
| scroll | 背景图像是随对象内容滚动的 |
| fixed | 背景图像固定 |
<style>
body {
background-image: url(../access/girl.jpg);
background-repeat: no-repeat;
background-position: center top;
/* 把背景图像固定住 */
background-attachment: fixed;
color: #fdf;
}
</style>
为了简化背景属性的代码,我们可以将这些属性合并简写在同一个属性background中,从而节约代码量。
当使用简写属性时,没有特定的书写顺序,一般习惯约定顺序为:
background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置
<style>
body {
/* background-image: url(../access/girl.jpg); */
/* background-repeat: no-repeat; */
/* background-position: center top; */
/* 把背景图像固定住 */
/* background-attachment: fixed; */
/* background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置 */
background: palegoldenrod url(../access/girl.jpg) no-repeat fixed center top;
color: #fdf;
}
</style>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZu3Pc2j-1656254631913)(Typora_image/076.png)]](https://1000bd.com/contentImg/2022/06/28/053149949.png)
CSS3为我们提供了背景颜色半透明的效果。
backgroup:rgba(0,0,0,0.3);
(1)最后一个参数是alpha透明度,取值范围在0~1之间。
(2)我们习惯把0.3的0去掉,写为backgroup:rgba(0,0,0,.3)。
(3)注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响。
(4)CSS新增样式,是IE +9版本浏览器才支持的
(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>背景色透明写法</title>
<style>
div {
width: 300px;
height: 300px;
/* background-color: black; */
/* 改写成半透明效果 */
/* background: rgba(0, 0, 0, 0.1) */
/* background: rgba(0, 0, 0, 0.7) */
/* 省略写法 */
background: rgba(0, 0, 0, .3)
}
</style>
</head>
<body>
<div>里面的内容不会受影响</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mOljaRxR-1656254631917)(Typora_image/077.png)]](https://1000bd.com/contentImg/2022/06/28/053150105.png)
| 属性 | 作用 | 值 |
|---|---|---|
| background-color | 背景颜色 | 预定义的颜色值/十六进制/RGB代码 |
| background-image | 背景图片 | url(图片路径) |
| background-repeat | 是否铺平 | repeat/no-repeat/repeat-x/repeat-y |
| background-position | 背景位置 | length/position 分别是X 和 Y坐标 |
| background-attachment | 背景附着 | scroll(背景滚动)/fixed (背景固定) |
| 背景简写 | 书写更简单 | 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置; |
| 背景色半透明 | 背景颜色半透明 | background:rgba(0,0,0,.3);后面必须是4个值 |
背景图片:实际开发常见于logo或者装饰性的小图片或者超大的背景图片,优点是非常便于控制位置。(精灵图也是一种运用场景)
效果展示:(鼠标经过会变颜色)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wpPZtM7a-1656254631918)(Typora_image/079.png)]](https://1000bd.com/contentImg/2022/06/28/053150215.png)
案例价值:
(1) 链接属于行内链接,但是此时需要宽度,高度,因此需要模式转换
(2)里面文字需要水平居中和垂直居中,因此需要单行文字垂直居中的代码。
(3) 链接里面需要设置背景图片,因此需要用到背景的相关属性设置
(4)鼠标经过变化背景图片,因此需要用到链接伪类选择器。
代码如下:
<!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>
.nav a {
/* 转为行内块元素,既可以设置宽度和高度,又可以在同一行上面 */
display: inline-block;
width: 120px;
height: 39px;
background-color: rgb(127, 206, 238);
/* 文字居中 */
text-align: center;
/* 垂直居中,为了更加好看,微调 */
line-height: 29px;
/* 去掉超链接下划线 */
text-decoration: none;
}
.nav .bg1 {
background: url(../access/demo1.png) no-repeat;
}
.nav .bg1:hover {
background-image: url(../access/demo2.png);
}
.nav .bg2 {
background: url(../access/demo2.png) no-repeat;
}
.nav .bg2:hover {
background-image: url(../access/demo3.png);
}
.nav .bg3 {
background: url(../access/demo3.png) no-repeat;
}
.nav .bg3:hover {
background-image: url(../access/demo4.png);
}
.nav .bg4 {
background: url(../access/demo4.png) no-repeat;
}
.nav .bg4:hover {
background-image: url(../access/demo5.png);
}
.nav .bg5 {
background: url(../access/demo5.png) no-repeat;
}
.nav .bg5:hover {
background-image: url(../access/demo1.png);
}
</style>
</head>
<body>
<div class="nav">
<a href="#" class="bg1">五彩导航</a>
<a href="#" class="bg2">五彩导航</a>
<a href="#" class="bg3">五彩导航</a>
<a href="#" class="bg4">五彩导航</a>
<a href="#" class="bg5">五彩导航</a>
</div>
</body>
</html>
CSS有三个非常重要的三个特性:层叠性、继承性、优先性
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。
(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>CSS层叠性</title>
<style>
div {
color: green;
font-size: 35px;
}
div {
color: purple;
}
</style>
</head>
<body>
<div>大家晚上好</div>
</body>
</html>
效果如下:(长江后浪拍前浪)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nYrXmPzT-1656254631919)(Typora_image/080.png)]](https://1000bd.com/contentImg/2022/06/28/053150480.png)
| inherit | [ɪnˈherɪt] | 继承(金钱、财产等); 经遗传获得(品质、身体特征等); 接替(责任等); 继任; |
|---|---|---|
| position | [pəˈzɪʃn] | 恰当位置; 正确位置; |
现实中的继承:我们继承了父亲的姓。
CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号。简单理解就是:子承父业。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRQfqTQF-1656254631922)(Typora_image/081.png)]](https://1000bd.com/contentImg/2022/06/28/053150746.png)
恰当的使用继承可以简化代码,降低CSS样式的复杂性(比如可以给整个body标签设定字体等)
子元素可以继承父元素的样式(text-,font-,line- 这些元素开头的可以继承,以及color属性)
注意:子元素并不是把所有的父类元素都继承,而是以文字相关的某些样式,字体,行高,颜色等这些样式可以继承。
行高的继承
body {
font: 23px/1.5 'Microsoft YaHei';
}
(1) 行高可以跟单位也可以不跟单位
(2) 如果子元素没有设置行高,则会继承父元素的行高为1.5
(3)此时子元素的行高是:当前子元素的文字大小*1.5
(4)body行高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>行高的继承</title>
<style>
body {
color: purple;
/* 行高可以跟单位,行高也可以不跟单位 */
/* 行高跟单位 */
/* font: 21px/46px 'Microsoft YaHei'; */
/* 行高不跟单位 */
font: 23px/1.5 'Mircosoft YaHei'
}
div {
/* 子元素继承了父元素body的行高1.5 */
/* 这个1.5就是当前元素文字大小font-size 的1.5倍 */
/* 即:14×1.5=21px,所以此时div行高是21px。 */
font-size: 14px;
}
p {
/* 此时p的行高为16×1.5=24px */
font-size: 16px;
}
/* li没有手动指定文字大小,但是会继承父亲的文字大小,ul没指定,继续往上走body,所以父亲的文字大小为23px */
/* 即li的文字大小为23px,li的行高为23×1.5=34.5 */
</style>
</head>
<body>
<div>今晚月色不错</div>
<p>今晚月色不错</p>
<ul>
<li>没有指定文字大小</li>
</ul>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaIwglxP-1656254631924)(Typora_image/082.png)]](https://1000bd.com/contentImg/2022/06/28/053150886.png)
当同一个元素指定多个选择器,就会有优先级的产生。
(1) 选择器相同,则执行层叠性
(2) 选择器不同,则根据选择器权重执行
选择器权重如下表所示:
| 选择器 | 选择器权重 | |
|---|---|---|
| 继承 或者* | 0,0,0,0 | 0 |
| 元素选择器 | 0,0,0,1 | 10 |
| 类选择器,伪类选择器 | 0,0,1,0 | 100 |
| ID选择器 | 0,1,0,0 | 1000 |
| 行内样式 style=“” | 1,0,0,0 | 10000 |
| !important重要的 | ∞ 无穷大 | 100000 |
执行代码:
<!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>CSS优先级</title>
<style>
/* 元素选择器 标签选择器 */
div {
color: orange;
}
/* 类选择器 */
/* 加!improtant权重最大 */
.test {
color: pink !important
}
/* id选择器 */
#demo {
color: yellow;
}
/* style是行内样式表 */
</style>
</head>
<body>
<div class="test" id="demo" style="color:purple">你笑起来真好看</div>
</body>
</html>
注意事项:
(1)权重是有4组数字组成,但是不会有进位。
(2)可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器,以此类推
(3) 等级判断从左到右,如果某一位数值相同,则判断下一位数值。
(4)可以简单记忆法:通配符和继承权重为0,标签选择器为1,类(伪类)选择器为10,id选择器为100,行内样式表为1000,!improtant无穷大。
代码如下:
(5)继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0(重点)
事项举例:
<!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>
/* 父亲的权重为100 */
#father {
color: green;
}
/* 看标签到底执行那个样式,就先看这个标签有没有直接被选出来 */
/* p继承的权重为0 */
/* 所以p执行了自己的标签选择器颜色 */
p {
color: red;
}
body {
color: blue;
}
/* 此时a样式并没有继承body的样式,没有显示出蓝色, */
/* 继承的权重为0, a有它自己的样式 */
/* 这是因为a链接浏览器默认制定了一个样式 蓝色的 有下划线的 a {color:blue;} */
/* 此时a标签还是自身的蓝色,若要变换样式,需要给它指定一个样式,比如 */
/* 给body此时更改样式,不影响a的样式 */
a {
color: orange;
}
</style>
</head>
<body>
<div id="father">
<p>你笑起来真好看 </p>
</div>
<a href="#">我是单独的样式</a>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20uZniZq-1656254631929)(Typora_image/083.png)]](https://1000bd.com/contentImg/2022/06/28/053151011.png)
测试:
| div ul li | 0,0,0,1+0,0,0,1+0,0,0,1 | 0,0,0,3 |
|---|---|---|
| .nav ul li | 0,0,1,0 +0,0,01 +0,0,0,1 | 0,0,1,2 |
| a:hover | 0,0,0,1 +0,0,1,0 | 0,0,1,1 |
| .nav a | 0,0,1,0 +0,0,0,1 | 0,0,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>
/* 复合选择器会有权重叠加的问题 */
/* li的权重是0,o,o,1 */
li {
color: red;
}
/* ul li 权重 0,0,0,1 +o,o,o,1=0,0,0,2 */
/* 权重更新叠加,但是永远不会有进位问题 */
ul li {
color: green;
}
/* .nav li 权重 0,0,1,0 + 0,0,0,1 =0,0,1,1 */
.nav li {
color: pink;
}
</style>
</head>
<body>
</body>
<ul class="nav">
<li>诸葛亮</li>
<li>孔明</li>
<li>卧龙</li>
</ul>
</html>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9IHTi2lf-1656254631931)(Typora_image/084.png)]](https://1000bd.com/contentImg/2022/06/28/053151227.png)
测试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>CSS权重练习</title>
<style>
li {
color: red;
}
.nav li {
color: green;
}
</style>
</head>
<body>
<ul class="nav">
<li>CSS权重练习</li>
<li>CSS权重练习</li>
<li>CSS权重练习</li>
<li>CSS权重练习</li>
</ul>
</body>
</html>
答案是绿色,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYTaqCFy-1656254631934)(Typora_image/085.png)]](https://1000bd.com/contentImg/2022/06/28/053151446.png)
原因:虽然权重有高低,但是继承的权重为0.
代码如下:
<!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>CSS权重练习2</title>
<style>
.nav li {
color: red;
}
/* 根据上面代码,此时li为红色 */
/* 需求1:把第一个li颜色改成 粉色加粗 */
/* 代码如下 */
/* .nav .one {
color: pink;
font-weight: 700; */
/* 写成下面代码,只发生加粗效果,颜色不会变化 */
/* 原因:.nav li 的权重是0,0,1,0_0,0,0,1=0,0,1,0 .one的权重是0,0,1,0, 所以上面代码的权重高 */
/* 如果想改成粉色,就用.nav .one 权重为 0,0,1,0 +0,0,1,0=0,0,2,0 ,这样才会执行粉色 */
.one {
color: pink;
font-weight: 700;
}
</style>
</head>
<body>
</body>
<ul class="nav">
<li class="one">CSS权重练习2</li>
<li>CSS权重练习2</li>
<li>CSS权重练习2</li>
<li>CSS权重练习2</li>
</ul>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVWc3Vfa-1656254631936)(Typora_image/086.png)]](https://1000bd.com/contentImg/2022/06/28/053151634.png)
页面布局要学习三大核心,盒子模型,浮动 和定位,学习好盒子模型能非常好的帮助我们布局页面。
2.1透过现象看本质
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7l3AL3dV-1656254631937)(Typora_image/087.png)]](https://1000bd.com/contentImg/2022/06/28/053152071.png)
1.先准备好相关的网页元素,网页元素基本都是盒子Box.
2.利用CSS设置好盒子样式,然后摆放到相应位置。
3.往盒子里面装东西。
网页布局的核心本质:就是利用CSS摆盒子。
盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS盒子模型本质上是一个盒子,封装周围的HTML的元素,它包括:边距、外边距、内边距、和实际内容。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGUC8nCw-1656254631938)(Typora_image/088.png)]](https://1000bd.com/contentImg/2022/06/28/053152212.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-95OSeaQN-1656254631940)(Typora_image/089.png)]](https://1000bd.com/contentImg/2022/06/28/053152368.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7xMq0oO-1656254631945)(Typora_image/090.png)]](https://1000bd.com/contentImg/2022/06/28/053152462.png)
border可以设置元素的边框。边框有三部分组成:边框宽度(粗细)、边框样式、边框颜色。
语法
border : border-width || border-style ||border-color
| 属性 | 作用 |
|---|---|
| border-width | 定义边框明细,单位是px |
| border-style | 边框的样式 |
| border-color | 边框颜色 |
执行代码:
<!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>
div {
width: 300px;
height: 200px;
/* border-width 边框的粗细 一般情况下都用px */
border-width: 5px;
/* 实线边框 */
/* border-style: solid; */
/* 虚线边框 */
/* border-style: dashed; */
/* 点线边框 */
border-style: dotted;
/* border-color 设置边框颜色 */
border-color: aquamarine;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VqvR8Mdl-1656254631946)(Typora_image/091.png)]](https://1000bd.com/contentImg/2022/06/28/053152680.png)
CSS边框属性允许你指定一个元素边框的样式和颜色。
边框简写:
border: 1px solid red; 没有顺序
边框分开写法:
border-top: 1px solid red; /* 只设定上边框,其余同理 */
执行代码:
<!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>
.nav {
width: 100px;
height: 60px;
/* border-width: 5px;
border-color: aqua;
border-style: dashed; */
/* 边框的复合简写 */
/* border: 5px aqua dashed */
/* 也可以分开设定,只设定上边框 */
border-top: 5px dashed purple;
/* 设定下边框 */
border-bottom: 8px orange dotted;
/* 设定左边框 */
border-left: 20px solid green;
/* 设定右边框 */
border-right: 12px rosybrown solid;
}
/* 测试案例:请给一个200*200的盒子,设置一个上边框为红色,其余边框为蓝色(注意边框的层叠性) */
.test {
width: 200px;
height: 200px;
/* 运用了层叠性 */
border: 5px solid blue;
/* 层叠性指示层叠了上边框 */
border-top: 5px solid red;
/* 如果把bord-top和border变换位置,则显示四个边都是蓝色 一般先写大的,后写小的 */
}
</style>
</head>
<body>
<div class="nav"></div>
<div class="test"></div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ci7BFwxH-1656254631948)(Typora_image/092.png)]](https://1000bd.com/contentImg/2022/06/28/053152977.png)
border-collapse 属性控制浏览器绘制表格边框的方式,它控制相邻单元格的边框。
语法:
border-collapse:collapse;
| border | [ˈbɔːdə®] | 边境; 边界; 边疆; 国界; 边界地区; |
|---|---|---|
| collapse | kəˈlæps] | (突然)倒塌; 在这里译为合并 |
border-collapse: collapse; 表示相邻边框合并在一起
执行代码:
<!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>
/* 表格指定大小 */
table {
width: 500px;
height: 30px;
}
/* 表格和单元格,表头单元格指定边框 */
table,
td,
th {
border: 1px solid skyblue;
/* 合并相邻的边框 */
border-collapse: collapse;
font-size: 14px;
/* 所有文字居中对齐 */
text-align: center;
}
</style>
</head>
<body>
<table align="center" width="500px" height="30px" border=1 cellspacing="0">
<thead>
<tr>
<th>排名</th>
<th>关键字</th>
<th>趋势</th>
<th>进入搜索</th>
<th>最近七日</th>
<th>相关链接</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td><img src="https://img0.baidu.com/it/u=3088610651,3841531735&fm=253&fmt=auto&app=138&f=JPEG?w=466&h=500"
width="20" height="20"></td>
<td>345</td>
<td>123</td>
<td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a
href="https://image.baidu.com/">图片</a> <a href="https://baike.baidu.com/">百科</a></td>
</tr>
<tr>
<td>2</td>
<td>盗墓笔记</td>
<td><img src="https://img0.baidu.com/it/u=3088610651,3841531735&fm=253&fmt=auto&app=138&f=JPEG?w=466&h=500"
width="20" height="20"></td>
<td>124</td>
<td>675432</td>
<td><a href="https://tieba.baidu.com/index.html">贴吧</a> <a
href="https://image.baidu.com/">图片</a> <a href="https://baike.baidu.com/">百科</a></td>
</tr>
</tbody>
</table>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDGHIFxy-1656254631950)(Typora_image/093.png)]](https://1000bd.com/contentImg/2022/06/28/053153274.png)
边框会额外增加盒子的实际大小。因此我们有两种方案解决:
(1) 测量盒子大小的时候,不量边框
(2) 如果测量的时候包含了边框,则需要width/height减去边框宽度
代码示例:
<!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>
<!-- 需求:我们需要一个200*200的盒子,但是这个盒子有10像素的红色边框 -->
<style>
div {
width: 200px;
height: 200px;
background-color: rgba(11, 243, 231, 0.333);
/* 再加一个红色边框 */
border: 10px red solid;
}
/* 此时整个盒子变成220*220 */
</style>
</head>
<body>
<div></div>
</body>
</html>
padding属性用于设置内边距,即边框与内容之间的距离。
| 属性 | 作用 |
|---|---|
| padding-left | 左内边距 |
| padding-right | 右内边距 |
| padding-top | 上内边距 |
| padding-bottom | 下内边距 |
代码如下:
<!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>
div {
width: 200px;
height: 180px;
background-color: rgb(235, 220, 12);
/* 左边距移动20px */
padding-left: 20px;
/* 上边距移动30px */
padding-top: 30px;
}
</style>
</head>
<body>
<div>盒子内容是content
盒子内容是content
盒子内容是content
盒子内容是content</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOmIM6Jv-1656254631953)(Typora_image/094.png)]](https://1000bd.com/contentImg/2022/06/28/053153477.png)
padding属性(简写属性)可以有一到四个值。
| 值的格式 | 表达意思 |
|---|---|
| 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像素 顺时针 |
执行代码:
<!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>
div {
width: 600px;
height: 200px;
background-color: rgb(233, 177, 233);
/* 内边距混合写法,一个值表示上下左右都是该值 */
/* padding: 15px; */
/* 两个值 代表 上下 左右 */
/* padding: 20px 10px; */
/* 三个值,代表 上 左右 下 */
/* padding: 15px 30px 5px; */
/* 四个值,代表 上 右 下 左 */
padding: 20px 40px 60px 20px;
}
</style>
</head>
<body>
<div>盒子内容是content盒子内容是content盒子内容是content盒子内容是content盒子内容是content盒子内容是content</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7a9483Le-1656254631954)(Typora_image/095.png)]](https://1000bd.com/contentImg/2022/06/28/053153602.png)
当我们给盒子指定padding值之后,发生了2件事情:
(1) 内容和边框有了距离,添加了内边距
(2) padding影响了盒子实际大小
也就是说,如果盒子已经有了宽度和高度,此时再指定内边距,会撑大盒子
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3PW2yzFY-1656254631958)(Typora_image/096.png)]](https://1000bd.com/contentImg/2022/06/28/053153720.png)
如何解决,盒子大小已经设定好,修改内边距,会撑大盒子的问题?
解决办法:
如果保证盒子跟效果图大小保持一致,则让 width/height 减去多出来的内边距大小即可
代码如下:
<!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>
/* 需求,盒子200*150的大小不变,增加20px的内边距 */
div {
/* width: 200px; */
width: 160px;
/* height: 150px; */
height: 110px;
background-color: rgb(128, 211, 236);
padding: 20px;
}
</style>
</head>
<body>
<div>padding会影响盒子实际大小padding会影响盒子实际大小padding会影响盒子实际大小padding会影响盒子实际大小</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAjin8b2-1656254631961)(Typora_image/097.png)]](https://1000bd.com/contentImg/2022/06/28/053153868.png)
padding 可以撑开盒子,我们可以做非常巧妙的应用
因为每个导航栏里面的字数不一样多,我们可以不用给每个盒子宽度了,之间给padding最合适。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XeA2KA3C-1656254631963)(Typora_image/098.png)]](https://1000bd.com/contentImg/2022/06/23/131717983.png)
给盒子设定padding,可以让所以的导航栏模块内边距相等。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2C1tL2Dw-1656254631967)(Typora_image/099.png)]](https://1000bd.com/contentImg/2022/06/28/053154493.png)
场景:遇到导航栏里面的文字字数不一样多的时候,最好使用padding.
案例的相关取值:
(1) 上边框为3像素,颜色为#ff8500
(2) 下边框为1像素,颜色为# edeef0
(3)盒子高度为41像素,背景颜色为#fcfcfc
(4) 文字颜色为#4c4c4c
案例代码如下:
<!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>
.nav {
/* 高度为41px */
height: 41px;
/* 设置背景 */
background-color: #fcfcfc;
/* 上边框 */
border-top: 3px solid #ff8500;
/* 下边框 */
border-bottom: 1px solid #edeef0;
/* 垂直居中显示 行高等于height时,文字可以垂直居中*/
line-height: 41px;
}
.nav a {
/* a直接设定高度不会生效,因为a属于行内元素,需要转化为行内块元素 */
/* height: 41px; */
/* 设置下面两个代码,内容会竖着显示
display: block;
height: 41px; */
display: inline-block;
height: 41px;
font-size: 12px;
/* 文字颜色改变 */
color: #4c4c4c;
/* 去掉超链接的下划线 */
text-decoration: none;
/* 设置内边距,上下0像素,左右20像素 */
padding: 0 20px;
}
.nav a:hover {
/* 当鼠标经过的时候,改变背景色 */
background-color: rgb(129, 236, 231);
/* 当鼠标经过的时候, 改变文字颜色 */
color: #ff8500;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">新浪导航</a>
<a href="#">手机新浪网</a>
<a href="#">移动客户端</a>
<a href="#">微博</a>
<a href="#">其他</a>
<a href="#">我知道</a>
</div>
</body>
</html>
效果展示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-65SZD2id-1656254631969)(Typora_image/100.png)]](https://1000bd.com/contentImg/2022/06/28/053154602.png)
padding内边距可以撑开盒子,有时候也会让我们去修改宽度。
所以小米侧边栏这个案例,文字距离左侧的距离不应该用text-indent这样不精确。
实际开发中的做法是给padding值,这样更加精确。
执行代码
<!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>
/* 把a转换为块级元素 */
a {
color: aliceblue;
font-size: 14px;
background-color: lightslategrey;
display: block;
/* width: 300px; */
width: 270px;
height: 40px;
/* 去掉超链接的下划线 */
text-decoration: none;
/* 首行缩进两个字 这个写法不准确 */
/* text-indent: 2em; */
/* 此时内边距设置30px,此时整个盒子变成330,要想保持原来的盒子大小,需要更改width的大小 */
padding-left: 30px;
}
/* 鼠标经过a给链接设置背景颜色 */
a:hover {
/* 这边用color只是改变字体颜色,不改变背景颜色,应该用background-color */
/* color: orange; */
background-color: orange;
}
</stYle>
</head>
<body>
<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平板</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#">健康 儿童</a>
<a href="#">耳机 音响</a>
<a href="#"></a>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l4YzQsos-1656254631971)(Typora_image/101.png)]](https://1000bd.com/contentImg/2022/06/28/053154743.png)
重点:
如何盒子本身没指定width/height属性,则此时padding不会撑开盒子大小。
执行代码:
<!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>padding不会影响盒子大小的情况</title>
<style>
h1 {
/* 如果给一个盒子不指定宽度,则默认是它父亲一样宽,h1的父亲是body,body就是浏览器的宽度。 */
/* 此时不要写 */
/* width: 100%; */
/* 这样会超出 */
height: 200px;
background-color: rgb(94, 226, 175);
padding: 30px;
}
div {
width: 300px;
height: 100px;
background-color: rgb(73, 43, 207);
}
div p {
/* 按道理,因为p没有指定像素,p的宽度会继承div的宽度 增加padding,则p会超过父亲div的像素 实际却不会*/
padding: 30px;
background-color: orange;
/* 但是p没有超出 不要写 */
/* width: 100%; */
/* 这样会超出 */
}
</style>
</head>
<body>
<h1></h1>
<div>
<p>孩子</p>
</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IeZcp639-1656254631976)(Typora_image/102.png)]](https://1000bd.com/contentImg/2022/06/28/053154868.png)
margin属性用于设置外边距,即控制盒子和盒子之间的距离。
| 属性 | 作用 |
|---|---|
| margin-left | 左外边距 |
| margin-right | 右外边距 |
| margin-top | 上外边距 |
| margin-bottom | 下外边距 |
外边距的简写和padding的简写一样。(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>
div {
width: 200px;
height: 200px;
background-color: rgb(214, 194, 101);
}
/* 给第一个盒子底部增加20px */
/* .one {
margin-bottom: 20px;
} */
/* 给第二个盒子上面增加20px */
/* .two {
margin-top: 20px;
} */
/* 给第二个盒子上下左右都增加20px */
.two {
margin: 20px;
}
</style>
</head>
<body>
<div class="one">1</div>
<div class="two">2</div>
</body>
</html>
效果如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RShH2dyu-1656254631977)(Typora_image/103.png)]](https://1000bd.com/contentImg/2022/06/28/053155087.png)
外边距可以让盒子水平居中,但是必须满足两个条件
(1) 盒子必须指定了宽度(width).
(2) 盒子左右外边距都设置了auto.
语法:
.header { width:960px; margin:0 auto;}
常见的写法,以下三种都可以:
(1) margin-left:auto; margin-right:auto;
(2)margin:auto;
(3)margin:0 auto;
| auto | [ˈɔːtəʊ] | 汽车; |
|---|---|---|
| margin | [ˈmɑːdʒɪn] | 边缘; 页边空白; 白边; 在这里指外边距 |
执行代码:
<!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>
.header {
width: 900px;
height: 200px;
background-color: orange;
/* 水平居中 */
/* margin: 0 auto; */
/* 上下为100px,左右还是auto */
margin: 100px auto;
/* 只要实现左右为auto,就可以实现居中对齐 */
}
</style>
</head>
<body>
<div class="header">想要把盒子水平居中</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zNbId9h-1656254631983)(Typora_image/104.png)]](https://1000bd.com/contentImg/2022/06/28/053155196.png)
注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align:center即可
执行代码:
<!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>
div {
width: 900px;
height: 300px;
background-color: rgb(54, 231, 163);
/* 让盒子水平居中 */
/* margin: 0 auto; */
/* 让盒子上下为50px,左右还为auto */
margin: 50px auto;
/* 此时盒子居中了,但是里面文字没有居中 */
/* 要让行内元素或者行内块元素水平居中给其父元素添加 text-align: center 即可; */
text-align: center;
}
a {
color: blue;
text-decoration: none;
}
</style>
</head>
<body>
<div>
<!-- 行内元素的水平居中对齐 -->
<a href="#">我想居中对齐</a>
</div>
<div>
<!-- 行内块元素的水平居中对齐 -->
<img src="../access/bjt.jpg" width="45px" height="45px" alt="这是一张图片">
</div>
</body>
</html>
效果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-unoYKR15-1656254631984)(Typora_image/105.png)]](https://1000bd.com/contentImg/2022/06/28/053155430.png)