HTML5+CSS3的学习(一)
2018版李立超html+css基础 103集教程,哔哩哔哩链接:https://www.bilibili.com/video/BV1sW411T78k?spm_id_from=333.999.0.0
2019版李立超前端html5+css3 148集教程,哔哩哔哩链接:https://www.bilibili.com/video/BV1XJ411X7Ud?spm_id_from=333.999.0.0
前言
不管是前端工程师还是后台工程师我们要做的工作无非就是软件的开发。软件主要分两种架构C/S 和B/S 。我们主要从事的是B/S的软件的开发。
B/S中的B指的是browsers,是浏览器的意思,S即Server,指服务器的意思 。B/S架构的软件一般都是通过访问一个网页的形式来使用的,而将一些运算等操作放到远端的服务器上。这样就降低了对客户端的要求,我们的计算机上只需要安装一个浏览器即可使用。
软件开发流程
? 根据万维网联盟(W3C)标准,一个网页主要由三部分组成:结构、表现还有行为 。
? 万维网联盟World Wid Web Consortium,W3C专门为了定义网页相关的标准而成立,W3C定义了网页中的HTML、CSS、DOM、HTTP、XML等标准。
-
结构:HTML用于描述页面的结构 -
表现:CSS用于控制页面中元素的样式 -
行为:JavaScript用于响应用户操作
一、HTML
1.HTML的发展
? 1993年6月:HTML第一个版本发布。
? 1995年11月:HTML2.0
? 1997年1月:HTML3.2(W3C推荐)
? 1999年12月:HTML4.01(W3C推荐)
? 2000年底:XHTML1.0(W3C推荐)
? 2014年10月:HTML5(W3C推荐)
2.HTML的语法规范
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Html的语法规范</title>
</head>
<body>
<p>我是一个p标签</p>
<p>我是一个p标签
abc
<br />
bcd
<br>
efg
<p>今天天气<font color="red">真不错</font><p>
<p>今天天气<font color="red">真不错<p></font>
<hr />
<p>今天天气<font color>真不错</font><p>
<p>今天天气<font color='red'>真不错</font><p>
</body>
</html>
3.HTML族谱
4.标签
? HTML中的标记指的就是标签, HTML使用标记标签来描述网页。 ? 结构: <标签名>标签内容</标签名>
? <标签名 />
常用标签
html
- 在网页中HTML专门用来负责网页的结构,所以在使用html标签时,应该关注的是标签的语义,而不是它的样式
head
- head标签,该标签中的内容,不会在网页中直接显示,它用来帮助浏览器解析页面的
- head是网页的头部,head中的内容不会在网页中直接出现,主要用来帮助浏览器或搜索引擎来解析网页
title
<head>
<title>网页的标题</title>
</head>
body
- body是html的子元素,表示网页的主体,网页中所有的可见内容都应该写在body里
h1~h6
<!--
标题标签,都是块元素(在页面中独占一行的元素称为块元素(block element),
在页面中不会独占一行的元素称为行内元素(inline element)
在HTML中,一共有六级标题标签
h1 ~ h6
在显示效果上h1最大,h6最小,但是文字的大小我们并不关心
使用HTML标签时,关心的是标签的语义,我们使用的标签都是语义化标签
6级标题中,h1的最重要,表示一个网页中的主要内容,h2 ~ h6重要性依次降低
对于搜索引擎来说,h1的重要性仅次于title,搜索引擎检索完title,会立即查看h1中的内容
h1标签非常重要,它会影响到页面在搜索引擎中的排名,一个页面只能写一个h1
一般页面中标题标签只使用h1 h2 h3,h3以后的基本不使用
-->
<h1>一级标题</h1>
<h2>一级标题</h2>
<h3>一级标题</h3>
hgroup
<hgroup>
<h1>回乡偶书二首</h1>
<h2>其一</h2>
</hgroup>
p
<!--
段落标签,段落标签用于表示内容中的一个自然段
使用p标签来表示一个段落, p也是一个块元素
p标签中的文字,默认会独占一行,并且段与段之间会有一个间距
-->
<p>我是一个p标签,我用来表示一个段落</p>
<p>我是一个p标签,我用来表示一个段落</p>
br
<!--
在HTML中,字符之间写再多的空格,浏览器也会当成一个空格解析,
换行也会当成一个空格解析。
在页面中可以使用br标签来表示一个换行,br标签是一个自结束标签
-->
<p>
锄禾日当午,<br />
汗滴禾下土,<br />
谁知盘中餐,<br />
粒粒皆辛苦。<br />
</p>
hr
<!--
hr标签也是一个自结束标签,可以在页面中生成一条水平线
-->
<hr />
img
HTML之绝对路径与相对路径
相对路径
相对路径是指目标相对于当前文件的路径,网页结构设计中多采用这种方法来表示目标的路径。相对路径有多种表示方法,其表示的意义不尽相同。表示方法如下:
./ :代表文件所在的目录(可以省略不写)
../ :代表文件所在的父级目录
../../ :代表文件所在的父级目录的父级目录
/ :代表文件所在的根目录
值得注意的是,(/ :代表文件所在的根目录)其实可以理解成项目内部的绝对路径。
"/aaa" //表示根目录下的aaa 也相当于./aaa
"../aaa" //表示当前目录的上级目录下的aaa
"bbb/aaa" //表示当前目录的bbb目录下的aaa
如果要在test.html中引入000.css,可以有以下写法:
<linkhref="./css/css1/000.css"/> (./可以省略)
<link href="/html/css/css1/000.css"/>
<link href="../html/css/css1/000.css"/>
绝对路径
绝对路径是指完整的网址,假设项目的网站域名为www.quanbaike.com ,那么000.css的绝对路径应该是
https://www.quanbaike.com/html/css/css1/000.css
a
/*
* 涉及到a的链接伪类选择器一共有四个:
* :link
* :visited
* :hover
* :active
* 而这四个选择器的优先级是一样的。
*/
/* 未访问的链接 */
a:link{
color: yellowgreen;
}
/* 已访问的链接 */
a:visited{
color: red;
}
/* 鼠标移动到链接上
*/
a:hover{
color: orange;
}
/*
* 选定的链接
*/
a:active{
color: cornflowerblue;
}
<a href="http://www.baidu.com">我是一个超链接</a> <br /><br />
<a href="demo03.html" target="tom">我是一个超链接</a>
<br /> <br />
<iframe src="demo02.html" name="tom"></iframe>
<a href="#">这是一个新的超链接</a>
<br><br>
<a href="javascript:;">这是一个新的超链接</a>
<br><br>
<a id="bottom" href="#">回到顶部</a>
返回顶部和底部
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>练习</title>
</head>
<body>
<center>
<a href="#bottom">去底部</a>
<a href="#hello">去指定位置</a>
<h1>这是我的个人博客</h1>
<hr />
<h2>东风破</h2>
<a href="#">周杰伦</a>
<p id="hello">
一盏离愁 孤单伫立在窗口 <br />
我在门后 假装你人还没走 <br />
<img src="1.jpg" alt="图片" width="300px" /> <br />
篱笆外的古道我牵着你走过<br />
荒烟漫草的年头 就连分手都很沉默<br />
<img src="2.jpg" alt="图片2" width="300px" /> <br />
谁在用琵琶弹奏 一曲东风破<br />
岁月在墙上剥落 看见小时候<br />
犹记得那年我们都还很年幼<br />
</p>
<hr />
友情链接:<a href="#">A网站</a> | <a href="#">B网站</a> | <a href="#">C网站</a> <br /><br />
<a id="bottom" href="#">回到顶部</a> |
<a href="mailto:abc@atguigu.com">联系我们</a>
</center>
</body>
</html>
center
<center>
<p>我是一个p标签</p>
</center>
5.元素
我们还将一个完整的标签称为元素。
<h1>一级标题</h1>
<p>我是一个<em>段落</em></p>
<body>
<p><em>内容</em></p>
</body>
标签和元素的区别
比如<p>这就是一个标签; <p>这里是内容</p> 这就是一个元素,也就是说元素由一个开始的标签和结束的标签组成,用来包含某些内容;
这里有一个值得注意的例外,即<br/>本身既是开始标签也是结束标签,但不包含任何内容,所以这只是个标签。
1. 元素: HTML网页实际上就是由许许多多各种各样的HTML元素构成的文本文件,并且任何网页浏览器都可以直接运行HTML文件。
所以可以这样说,HTML元素就是构成HTML文件的基本对象,HTML元素可以说是一个统称而已。
HTML元素就是通过使用HTML标签进行定义的。
2. 标签: 标签就是<head>、<body>、<table>等被尖括号“<”和“>”包起来的对象,绝大部分的标签都是成对出现的,
如<table></talbe>、<form></form>。
当然还有少部分不是成对出现的,如<br>、<hr>等。
标签就是用来标记HTML元素的。位于起始标签和结束标签之间的文本就是HTML元素的内容。
3. 属性: 为HTML元素提供各种附加信息的就是HTML属性,它总是以"属性名=属性值"这种名值对的形式出现,
而且属性总是在HTML元素的开始标签中进行定义。
元素之间的关系
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#d1 span{
color: greenyellow;
}
#d1 p span{
font-size: 50px;
}
div > span{
background-color: yellow;
}
</style>
</head>
<body>
<div id="d1">
<p>
<span>我是p标签中的span</span>
</p>
<span>我是div标签中的span</span>
</div>
<div>
<span>我是body中的span元素</span>
</div>
</body>
</html>
6.属性
? 可以为HTML标签设置属性,通过属性为HTML元素提供附加信息。
? 属性总是以名称/值对 的形式出现。 比如:name=“value”
? 有些属性可以是任意值,有些则必须是指定值。
<h1>这是我的<font color="green" size="7">第二个</font>网页</h1>
<h2 title="我是一个标题">标题</h2>
<img src="" alt="" />
常见属性
id
– id属性作为标签的唯一标识,在同一个网页中不能出现相同的id属性值。
class
– class属性用来为标签分组,拥有相同class属性的标签我们认为就是一组,可以出现相同的class属性,可以为一个元素指定多个class。
title
– title属性用来指定标签的标题,指定title以后,鼠标移入到元素上方时,会出现提示文字。
7.html注释
? HTML注释中的内容不会在网页中显示。
<!--
HTML的注释,注释中的内容会被浏览器所忽略,不会在网页中直接显示,
但是可以在源码中查看注释,注释用来对代码进行解释说明的
开发中一定要养成良好的编写注释的习惯,注释要求简单明了
注释还可以将一些不希望显示的内容隐藏
注释不能嵌套
标签一般成对出现,但是也存在一些自结束标签
<img>
<img />
<input>
<input />
-->
<!--这是单行注释-->
<!--
这是多行注释
这是多行注释
这是多行注释
-->
注释不能嵌套!以下为错误的错误:
<!--
<!--
我是注释中的注释 注释不能嵌套
-->
-->
8.css的注释
CSS的注释,作用和HTML注释类似,只不过它必须编写在style标签中,或者是css文件中,注释中的内容会自动被浏览器所忽略
9.JS、jQuery注释
10.less注释
//这是单行注释,且当编译为css文件时注释内容不会转移过去
/*
这是多行注释,当编译为css文件时注释内容会转移过去
*/
11.DOCTYPE(文档声明)
<!doctype html>
<html>
<head>
<title>这是一个非常好的网页</title>
</head>
<body>
<h1>这是我的第一个网页</h1>
</body>
</html>
怪异模式
如果不写文档声明,则会导致有些浏览器会进入一个怪异模式,进入怪异模式以后,浏览器解析页面会导致页面无法正常显示,所以为了避免进入该模式,一定要写文档声明。
为了兼容一些旧的页面,浏览器中设置了两种解析模式:
? – 标准模式(Standards Mode)
? – 怪异模式(Quirks Mode)
? 怪异模式解析网页时会产生一些不可预期的行为,所以我们应该避免怪异模式的出现。
? 避免的最好方式就是在页面中编写正确的doctype。
12.编码、解码
字符编码
李立超 -> 110000110110 (编码)
110000110110 -> 李立超 (解码)
- 所有的数据在计算机中存储时都是以二进制形式存储的,文字也不例外。
所以一段文字在存储到内存中时,都需要转换为二进制编码
当我们读取这段文字时,计算机会将编码转换为字符,供我们阅读
- 编码
- 将字符转换为二进制码的过程称为编码
- 解码
- 将二进制码转换为字符的过程称为解码
13.字符集(charset)
14.乱码
如果编码和解码所采用的字符集不同就会出现乱码问题,在html5中只需要使用meta标签就可解决,如果网页声明为HTML5则可以省略/
<meta charset="utf-8" />
15.进制
16.meta
– meta 标签可提供有关页面的元信息,比如针对搜索引擎和更新频度的描述和关键词。
– meta 标签位于文档的头部,不包含任何内容。 标签的属性定义了与文档相关联的名称/值对。
<!doctype html>
<html>
<head>
<!-- 需要来告诉浏览器,网页所采用的编码字符集
meta标签用来设置网页的一些元数据,比如网页的字符集,关键字、简介,元数据不是给用户看的
charset 指定网页的字符集
name 指定的数据的名称
content 指定的数据的内容
meta是一个自结束标签,编写一个自结束标签时,可以在开始标签中添加 一个 "/"
-->
<!--1.设置页面的字符集-->
<meta charset="utf-8" />
<!--
2.使用meta标签还可以用来设置网页的关键字,可以同时指定多个关键字,关键字间使用","隔开
-->
<meta name="keywords" content="HTML5,JavaScript,前端,Java" />
<!--
3.还可以用来指定网页的描述,网站的描述会显示在搜索引擎的搜索的结果中
搜索引擎在检索页面时,会同时检索页面中的关键词和描述,但是这两个值不会影响页面在搜索引擎中的排名
-->
<meta name="description" content="发布h5、js等前端相关的信息" />
<!--
4.使用meta可以用来做请求的重定向,将页面重定向到另一个网站
<meta http-equiv="refresh" content="秒数;url=目标路径" />
-->
<meta http-equiv="refresh" content="5;url=http://www.baidu.com" />
<title>网页的标题</title>
</head>
<body>
<h1>这是一个非常漂亮的网页</h1>
</body>
</html>
17.实体(转义字符串)
? 在HTML中预留了一些字符,这些预留字符是不能在网页中直接使用的。浏览器解析到实体时,会自动将实体转换为其对应的字符。
? 比如< 和> ,我们不能直接在页面中使用< 和> 号,因为浏览器会将它解析为html标签。
? 为了可以使用这些预留字符,我们必须在html中使用字符实体。
? 语法:
&实体名;
常用的字符实体
除号:÷
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>实体</title>
</head>
<body>
<!--
在网页中编写的多个空格默认情况会自动被浏览器解析为一个空格
在HTML中,一些如< >这种特殊字符是不能直接使用,
需要使用一些特殊的符号来表示这些特殊字符,这些特殊符号我们称为实体(转义字符串)
浏览器解析到实体时,会自动将实体转换为其对应的字符
实体的语法:
&实体的名字;
-->
a<b>c
<p>©÷今天天气 好晴朗,处处好风光</p>
</body>
</html>
二、CSS(Cascading Style Sheets):层叠样式表
? css可以用来为网页创建样式表,通过样式表可以对网页进行装饰。
? 所谓层叠,可以将整个网页想象成是一层一层的结构,层次高的将会覆盖层次低的,而最终我们能看到只是网页的最上边一层。
? 而css就可以分别为网页的各个层次设置样式,总之一句话,CSS用来设置网页中元素的样式 。
1.基本语法
? CSS的样式表由一个一个的样式构成,一个样式又由选择器 和声明块 构成。
? 语法: – 选择器 {样式名:样式值;样式名:样式值 ; }
? – p {color:red ; font-size:12px;}
2.CSS的常用方式
1.行内样式(内联样式)
? 可以直接将样式写到标签内部的style属性中,这种样式不用填写选择器,直接编写声明即可。
? 这种方式编写简单,定位准确。但是由于直接将css代码写到了html标签的内部,导致结构与表现耦合,同时导致样式不能够复用,所以这种方式我们不推荐使用 。
<p style="color: red;font-size: 30px"></p>
2.内部样式表
? 可以直接将样式写到
? 这样使css独立于html代码,而且可以同时为多个元素设置样式,这是我们使用的比较多的一种方式。
? 但是这种方式,样式只能在一个页面中使用,不能在多个页面中重复使用 。
<style type="text/css">
p{
color:red;
font-size:40px;
}
</style>
<style>
p{color:red; font-size: 30px;}
</style>
3.外部样式表
? 可以将所有的样式保存到一个外部的css文件中,然后通过标签将样式表引入到文件中。
? 这种方式将样式表放入到了页面的外部,可以在多个页面中引入,同时浏览器加载文件时可以使用缓存,这是我们开发中使用的最多的方式 。
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="css/style.css"/>
3.样式的继承
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
body{
font-size: 30px;
}
</style>
</head>
<body>
<div style="background-color: yellow;">
<p>
我是p标签中的文字
<span>我是span中的文字</span>
</p>
</div>
<span>我是p元素外的span</span>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
p{
color: red;
background-color: orange;
}
div{
color: yellowgreen
}
</style>
</head>
<body>
<p>
我是一个p元素
<span>我是p元素中的span</span>
</p>
<span>我是p元素外的span</span>
<div>
我是div
<span>
我是div中的span
<em>我是span中的em</em>
</span>
</div>
</body>
</html>
三、CSS选择器
选择器(selector),会告诉浏览器:网页上的哪些元素需要设置什么样的样式。
比如:p这个选择器就表示选择页面中的所有的p元素,在选择器之后所设置的样式会应用到所有的p元素上 。
1.元素选择器(标签选择器)
? 元素选择器(标签选择器),可以根据标签的名字来从页面中选取指定的元素。
? 语法:标签名 { }
2.类选择器
? 类选择器,可以根据元素的class属性值选取元素。
? 语法:.className { }
/*
* 类选择器
* - 通过元素的class属性值选中一组元素
* - 语法:
* .class属性值{}
*/
/*.p2{
color: red;
}
.hello{
font-size: 50px;
}*/
<p class="p2 hello">锄禾日当午</p>
3.ID选择器
? ID选择器,可以根据元素的id属性值选取元素。
? 语法:#id { }
? 比如#box会选中页面中id属性值为box的元素,和class属性不同,id属性是不能重复的 。
4.复合选择器(交集选择器)
? 复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素。
? 语法:选择器1选择器2{}
? 第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,交集选择器是并且的意思。 即...又...的意思,用的相对来说比较少,不太建议使用。
? 例如div.box1会选中页面中具有box1这个class的div元素。
span.p3{
background-color: yellow;
}
5.群组选择器(css选择器分组或并集选择器)
? 群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式。
? 语法:选择器1,选择器2,选择器3 { }
? 比如p,.hello,#box 会同时选中页面中p元素,class为hello的元素,id为box的元素。
6.通用选择器(通配选择器)
? 通用选择器,可以同时选中页面中的所有元素。
? 语法:*{ }
7.后代(元素)选择器(包含选择器)
? 后代选择器可以根据标签的关系,为处在元素内部的代元素设置样式。
? 语法:祖先元素 后代元素 后代元素 { }
? 比如p strong 会选中页面中所有的p元素内的strong元素。
#d1 span{
color: greenyellow;
}
#d1 p span{
font-size: 50px;
}
8.伪类和伪元素
有时候,你需要选择本身没有标签,但是仍然易于识别的网页部位,比如段落首行或鼠标滑过的连接。CSS为他们提供一些选择器:伪类和伪元素。伪类用2个点表示即冒号(:)
伪类专门用来表示元素的一种的特殊的状态,比如:访问过的超链接,比如普通的超链接,比如获取焦点的文本框 ,当我们需要为处在这些特殊状态的元素设置样式时,就可以使用伪类
使用伪元素(用两个冒号表示 ::) 来表示元素中的一些特殊的位置,
给链接定义样式
有四个伪类可以让你根据访问者与该链接的交互方式,将链接设置成4种不同的状态。
? 正常链接
? – a:link
? 访问过的链接
? – a:visited(只能定义字体颜色)
? 鼠标滑过的链接
? – a:hover
? 正在点击的链接
? – a:active
其他
? 获取焦点
? – :focus
? 指定元素前
? – :before
? 指定元素后
? – :after
? 选中的元素
? – ::selection
伪类选择器
a元素的伪类、焦点
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02.伪类选择器</title>
<style type="text/css">
a:link{
color: yellowgreen;
}
a:visited{
color: red;
}
a:hover{
color: skyblue;
}
a:active{
color: black;
}
input:focus{
background-color: yellow;
}
p::-moz-selection{
background-color: orange;
}
p::selection{
background-color: orange;
}
</style>
</head>
<body>
<a href="http://www.baidu.com">访问过的链接</a>
<br /><br />
<a href="http://www.baidu123456.com">没访问过的链接</a>
<p>我是一个段落</p>
<input type="text" />
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>伪类</title>
<style>
ul > li:not(:nth-of-type(3)){
color: yellowgreen;
}
</style>
</head>
<body>
<ul>
<span>我是一个span</span>
<li>第〇个</li>
<li>第一个</li>
<li>第二个</li>
<li>第三个</li>
<li>第四个</li>
<li>第五个</li>
</ul>
</body>
</html>
伪元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p:before{
content: "我会出现在整个段落的最前边";
color: red;
}
p:after{
content: "我会出现在整个段落的最后边";
color: orange;
}
</style>
</head>
伪元素选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
p{
font-size: 20px;
}
p::first-letter{
font-size: 50px;
}
p::first-line{
background-color: yellow;
}
p::selection{
background-color: greenyellow;
}
div::before{
content: '『';
}
div::after{
content: '』';
}
</style>
</head>
<body>
<div>Hello Hello How are you</div>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Atque velit modi veniam nisi veritatis tempore laborum nemo ipsa itaque optio. Id odit consequatur mollitia excepturi, minus saepe nostrum vel porro.
</p>
</body>
</html>
:after/::after和:before/::before的异同
相同点
都可以用来表示伪类对象,用来设置对象前的内容
:before和::before写法是等效的; :after和::after写法是等效的
不同点
:before/:after是Css2的写法,::before/::after是Css3的写法
:before/:after 的兼容性要比::before/::after好 ,
不过在H5开发中建议使用::before/::after比较好
注意
这些伪元素 要配合content属性一起使用
这些伪元素 不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入
这些伪元素 的特效通常要使用:hover伪类样式来激活
<style>
span{
background: yellow;
}
span:hover::before{
content:"111111";
}
</style>
<span>222</span>
9.其他选择器
否定伪类
? 否定伪类可以帮助我们选择不是其他东西的某件东西。
? 语法:
:not(选择器){}
? 比如p:not(.hello) 表示选择所有的p元素但是class为hello的除外。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p:not(.hello){
background-color: yellow;
}
</style>
</head>
<body>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p class="hello">我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
</body>
</html>
10.属性选择器
? 属性选择器可以挑选带有特殊属性的标签。
? 语法:
- [属性名]
- [属性名=“属性值”]
- [属性名~=“属性值”]
- [属性名|=“属性值”]
- [属性名^=“属性值”]
- [属性名$=“属性值”]
- [属性名*=“属性值”]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p[title*="c"]{
background-color: yellow;
}
</style>
</head>
<body>
<p title="hello">我是一个段落</p>
<p>我是一个段落</p>
<p title="hello">我是一个段落</p>
<p title="abbc">我是一个段落</p>
<p title="abccd">我是一个段落</p>
<p title="abc">我是一个段落</p>
</body>
</html>
11.子元素选择器
? 子元素选择器可以给另一个元素的子元素设置样式。
? 语法:父元素 > 子元素{}
? 比如body > h1 将选择body子标签中的所有h1标签。 div.box > span{color: orange;}
其他子元素选择器
? :first-child – 选择第一个子标签
? :last-child – 选择最后一个子标签
?:nth-child(n) – 选择指定位置的子元素
选择指定类型的子元素:
? :first-of-type
? :last-of-type
? :nth-of-type
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p:last-of-type{
background-color: yellow;
}
</style>
</head>
<body>
<span>我是span</span>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<span>hello</span>
</body>
</html>
12.兄弟选择器
? 除了根据祖先父子关系,还可以根据兄弟关系查找元素。
? 语法:
– 查找后边一个兄弟元素
? 兄弟元素 + 兄弟元素{}
– 查找后边所有的兄弟元素
? 兄弟元素 ~ 兄弟元素{}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
span ~ p{
background-color: yellow;
}
</style>
</head>
<body>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<span>我是一个span</span>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
</body>
</html>
13.选择器的权重
? 在页面中使用CSS选择器选中元素时,经常都是一个元素同时被多个选择器选中。
? 比如:body h1 h1
? 上边的两个选择器都会选择h1元素,如果两个选择器设置的样式不一致那还好不会产生冲突,但是如果两个选择器设置的是同一个样式,这样h1到底要应用那个样式呢?CSS中会默认使用权重较大的样式,权重又是如何计算的呢?
权重的计算
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.p1{
background-color: yellow;
}
p{
background-color: red;
}
*{
font-size: 50px;
}
p{
font-size: 30px;
}
#p2{
background-color: yellowgreen;
}
p#p2{
background-color: red;
}
.p3{
color: green;
}
.p1{
color: yellow;
background-color: greenyellow !important;
}
</style>
</head>
<body>
<p class="p1 p3" id="p2" style="background-color: orange;">我是一个段落
<span>我是p标签中的span</span>
</p>
</body>
</html>
源码获取
至此,我们的HTML5+CSS3的学习(一) 就讲解完成了。下篇我们将介绍文本标签及样式 ,源码素材可以通过关注我的微信公众号 我爱学习呀嘻嘻 ,回复关键字HTML5+CSS3源码素材 进行获取哦。
HTML5+CSS3的学习(二):文本标签及样式
HTML5+CSS3的学习(三):CSS盒子模型
HTML5+CSS3的学习(四):背景、表格
HTML5+CSS3的学习(五):表单、动画、less、flex
HTML5+CSS3的学习(六):案例实战
|