6.CSS介绍&选择器

1.CSS

1.1简介
CSS 是一种描述 HTML 文档样式的语言。
作用:为HTML便签添加样式,让它变的好看。

html的作用是添加语义。
css的作用是添加样式。
css学习选择器和属性。 
1.2语法结构
选择器 (属性1:; 属性2:; 属性3:;) --> 声明块
		
选择器:指向您需要设置样式的 HTML 元素/标签。

声明块:包含一条或多条,用分号分隔的声明。
    每条声明都包含一个CSS属性名称和一个值,以冒号分隔。
    多条CSS声明用分号分隔,声明块用花括号括起来。
1.3引入方式
HTML代码渲染样式需要先引用css代码.
引用的方式有三种:
	1.HTML文档中style标签内直接书写 (临时使用)
	2.使用link标签引用外部css文件   (最正规的方式,解耦合)
	3.在HTML标签的style属性中书写   (临时使用,不推荐使用)
1.直接书写
在head标签内使用style标签.
内部直接书写(临时使用)
<head>
···
  <style type="text/css">
	选择器(标签){
	属性:;
	key:value;
	···
	}
  </style>
</head>
分号不要省略。
style 标签中,默认带有 type="text/css" 告诉浏览器这个是css文件,可以省略不写。
2.外部引入
link便签引用外部css文件
<link rel="stylesheet" href="01.css">
3.行内书写
在HTML标签的style属性中书写 可以称为 行内式
<h1 style="color: chartreuse">书写样式1</h1>
这个方式是最不推荐的,html只需要为文字添加语意就可以了,
css才是设置样式的.分工明确!
1.4css注释
/* 单行注释 */ 

/*
多行注释1
多行注释2
/*
通常使用css样式的时候也会用来注释划定样式区域,
(因为HTML代码多,对应的css代码也很多)

/* 博客园首页的css样式文件 */
/* 顶部导航条样式 */
···
/* 左侧菜单栏样式*/
···
/* 右侧菜单栏样式 */
···

2.基本选择器

css 为标签设置样式,需要先通过选择器来匹配标签,在设置样式.
基本选择器:
    1.标签选择器
    2.id选择器
    3.类选择器
    4.通用选择器
2.1标签选择器
1.介绍
依据标签的名字找到标签。
标签选择器会选后,当前页面的所有该标签都被选中。
2.格式
标签名称 {
属性:;
···
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>标签签选择器</title>
    <style>
        h1 {
            color: red;  /*  设置标签的文字的颜色  */
        }
        h3 {
            color: aqua;
        }
    </style>
</head>
<body>
    <h1>石灰吟</h1>
    <h6>作者:于谦</h6>
    <h3>千锤万凿出深山,烈火焚烧若等闲。</h3>
    <h3>粉骨碎身浑不怕,要留清白在人间。</h3>
</body>
</html>
2.2id选择器
1.介绍
依据标签的id属性值找到标签。
在html中id属性的值可以当做是唯一的标识.

注意:
1.id选择器需要加上#号。
2.每个标签都有id属性,同一个页面中id不能重复。
3.id值只能由字母/数字/下划线组成,不能以数字开头,也不能与标签名重名。
4.一般情况下不会使用id,在前端中id是留给js使用的。
2.格式
#id {
属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        #d1 {
            color: red;  /*  设置标签的文字的颜色  */
        }

        #d2 {
            color: aqua;
        }
    </style>
</head>
<body>
    <h1>石灰吟</h1>
    <h6>作者:于谦</h6>
    <h3 id="d1">千锤万凿出深山,烈火焚烧若等闲。</h3>
    <h3 id="d2">粉骨碎身浑不怕,要留清白在人间。</h3>
</body>
</html>
2.3类选择器
1.介绍
依据标签的class属性值找到标签。
一般用于批量设置.

注意:
1.类选择器需要加上.号。
2.每个标签都有class属性,类名可以重复。
3.类名只能由字母/数字/下划线组成,不能以数字开头,也不能与标签名重名。
4.类名是给标签设置样式的,CSS使用。
5.标签可以绑定多个类名,类名之间用空格隔开。
 <标签 class="类名1 类名2 ···">
2.格式
.类名 {
属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类选择器</title>
    <style>
        .c1 {
            color: red;  /*  设置标签的文字的颜色  */
        }

        .c2 {
            color: aqua;
        }

        .typeface {
            font-family: '楷体';  /*  设置标签的文字的字体  */
        }
    </style>
</head>
<body>
    <h1>石灰吟</h1>
    <h6 class="c1">作者:于谦</h6>
    <h3 class="c2 typeface">千锤万凿出深山,烈火焚烧若等闲。</h3>
    <h3>粉骨碎身浑不怕,要留清白在人间。</h3>
</body>
</html>
2.4通用选择器
1.介绍
为当前页面所有的标签设置属性。

注意:
1.使用*通配符,找到当前html的所有标签.(也被称为通配符选择器.)
2.使用后会遍历所有的标签,当标签比较多的时候,性能会变差,开发者一帮不会去使用。
(后续学习其他的方案去解决这些问题。)
2.格式
* {
属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通配符选择器</title>
  <style>
    * {
      color: red;  /*  设置标签的文字的字体  */
    }
  </style>
</head>
<body>
    <h1>标题</h1>
    <p>1</p>
    <p>2</p>
    
    <ul>
      <li>
        <p>3.1</p>
        <p>3.2</p>
      </li>
    </ul>
</body>
</html>

3.组合选择器

在前端将便签的嵌套用亲戚关系来描述层级。
嵌套的关系定义:
1.后代选择器 空格
2.儿子选择器 >
3.毗邻选择器 +
4.弟弟选择器 ~
3.1后代选择器
1.介绍
后代标签包括了儿子标签,孙子标签 ···
后代选择器可以指定特定的后代标签.(默认是所有)

注意点:
1.后代选中器使用空格隔开。
2.标签名称 id 类可以进行任意组合。
3.顺序-->: 标签名称 #id .类名.
2.格式
格式:
标签名称 #id .类名  {
属性:;
}
3.演示
1.标签组合
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器(标签组合)</title>
    <style>
        ul li p {  
            color: red;
        }

        body p {
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p>段落一</p>

    <p>段落二</p>

    <ul>
        <li><p>段落三</p></li>
    </ul>
</body>
</html>
2.id组合
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器(id组合)</title>
    <style>

        #d1 #d2 {
            color: #04ff00;
        }

        #d11 #d12 #d13 {
            color: red;
        }

    </style>
</head>
<body>
    <p>段落一</p>


    <ul id="d1">
        <li id="d2">
            <p>段落二</p>
        </li>
    </ul>

    <ul id="d11">
        <li id="d12">
            <p id="d13">段落三</p>
        </li>
    </ul>
</body>
</html>
3.类名组合
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器(类组合)</title>
    <style>
        .c1 .c2 .c3 {
            color: red;
        }

    </style>
</head>
<body>
    <p>段落一</p>

    <p>段落二</p>

    <ul class="c1">
        <li class="c2">
            <p class="c3">段落三</p>
        </li>
    </ul>

</body>
</html>
4.混合组合
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器(混合组合)</title>
    <style>
        ul #d1 .c1 {
            color: red;
        }
    </style>
</head>
<body>
    <p>段落一</p>

    <ul>
        <li id="d1">
            <p class="c1">段落二</p>
        </li>
    </ul>

</body>
</html>
3.2儿子选择器
1.介绍
为标签的儿子标签,设置属性。

注意点:
1.子元素之间需要使用>号。
2.选择器可以是 标签/id/ 名称 任意组合。
2.格式
父标签>儿子标签{
	属性: ;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器(标签组合)</title>
    <style>
        ul > li > p {
            color: red;
        }

        body > p {
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p>段落一</p>
    <ul>
        <li><p>段落二</p></li>
    </ul>
    <p>段落三</p>
</body>
</html>
3.3毗邻选择器
1.介绍
同级紧跟在自己标签后面的第一个标签。(CSS2)

注意:
1.相邻兄弟选择器必须使用+号连接。
2.格式
标签+标签 {
	属性: ;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>毗邻选择器</title>
    <style>
        h1 + p {
            color: red;
        }
    </style>
</head>
<body>
    <h1>标题</h1>
    <p>第一段落</p>
    <p>第二段落</p>
    <p>第三段落</p>
</body>
</html>
3.4弟弟选择器
1.介绍
同级自己标签后面的所有选中的标签。(CSS3)

注意:
1. 通用兄弟选择器必须使用~号连接。
2.格式
标签~标签 {  /*  指定的弟弟 */
	属性:;	
}
标签~* {  /*  所有的弟弟 */
	属性:;	
}
3.演示
1.指定弟弟标签演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弟弟选择器</title>
    <style>
        h1 ~ p {  /* 指定 弟弟p标签 */
            color: red;
        }
    </style>
</head>
<body>
    <h1>标题</h1>
    <p>第一段落</p>
    <p>第二段落</p>
    <p>第三段落</p>
    <spa>xxx</spa>
</body>
</html>
2.所有弟弟标签演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弟弟选择器</title>
    <style>
        span ~ * {  /* 指定 所有弟弟标签 */
            color: red;
        }
    </style>
</head>
<body>
    <h1>标题</h1>
    <span>123</span>
    <p>第一段落</p>
    <p>第二段落</p>
    <p>第三段落</p>


</body>
</html>

4.集合选择器

集合选择器:
1.交集选择器
2.并集选择器
4.1交集选择器
1.介绍
找到多个标签中,属性相同的的标签.

注意:
1.选择器中间没有符号。
2.选择器可以是 标签/id/ 名称 任意组合。
2.格式
选择器1选择器2 {  /* 连写 */
    属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>交集选择器</title>
    <style>
        p.c1 {
            color: red;
        }

        .c1#d1 {
            color: aqua;
        }
    </style>
</head>
<body>
    <h1 class="c1" id="d1">标题</h1>
    <p>第一段落</p>
    <p class="c1">第二段落</p>
    <p>第三段落</p>
    <p class="c1">第四段落</p>
    <p>第五段落</p>
</body>
</html>
4.2并集选择器
1.介绍
选中的多个标签设置一个属性。

注意点:
1.并集选择器使用,号连接.
2.选择器可以是 标签/id/ 名称 任意组合.
2.格式
选择器1, 选择器2 {
	属性: ;
}
3.演示
1.同类型选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>并集选择器1</title>
    <style>
        .c1, .c2 {
            color: red;
        }
    </style>
</head>
<body>
    <h1 class="c1">标题</h1>
    <p class="c2">第一段落</p>
    <p>第二段落</p>
    <p>第三段落</p>
</body>
</html>
2.不同类型选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>并集选择器2</title>

    <style>
        #d1, .c1, span p span{
            color: red;
        }
    </style>
</head>

<body>

    <div id="d1">div</div>
    <p class="c1">p</p>
    <span>span
        <p>p
            <span> p内span </span>
        </p>
    </span>

</body>
</html>

5.序列选择器

CSS3中新增加且具有代表性的选择器。
序列选择器: (同类型指定的相同的标签)
1.不同类型序列选择器 (不区分类型)
2.同类型序列选择器  (区分类型)
5.1不同类型序选择器
1.介绍
其父元素的第几个标签.

注意:
1.使用冒号:分隔.
2.冒号前面的标签必须和序号对上才满足条件.(设置的样式只针对冒号前面的标签)
2.不区分类型.
2.格式
其父元素的第一一个子元素
	标签:first-child {属性:;} 
其父元素的最后一个子元素
	标签:last-child {属性:;} 
其父元素的第n个标签
	标签:nth-child(n) {属性:;} 
其父元素的倒数第n个标签
	标签:nth-last-child(n) {属性:;} 	
父元素中只存在唯一一个标签
	标签:only-child {属性:; } 
父元素中所有奇数标签
	标签:nth-child(odd) {属性:;} 
父元素中所有偶数标签
	标签:nth-child(even) {属性:;} 
公式条件
	nth-child(xn+y) {属性:;} 

	x  y 为自定义数字,
    n为数字从0开始递增。
    
    2n+0 2*0+0 = 0   2n+1 2*0+1 = 1
    2n+0 2*1+0 = 2   2n+1 2*1+1 = 3
3.演示
1.序选择器
p标签直接写在body标签下last-child不行,写在一个div标签内测试.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序选择器</title>
    <style>
        p:first-child {  /*其父元素的第一一个子元素*/
            color: red;
        }

        p:last-child {  /* 需要嵌套在div标签内才能生效*/
            color: gold;
        }

        p:nth-child(2) {  /*其父元素的第n个标签*/
            color: greenyellow;
        }

        span:nth-last-child(4) {  /*其父元素的倒数第n个标签*/
            color: aqua;
        }
    </style>
</head>
<body>
    <div>
        <p>p1</p>
        <p>p2</p>
        <p>p3</p>
        <span>s1</span>
        <p>p4</p>
        <p>p5</p>
        <p>p6</p>
    </div>
</body>
</html>

image-20220215201231297

2.唯一选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>唯一选择器</title>
    <style>
        p:only-child {
            color: red;
        }
    </style>
</head>
<body>
    <p>1段落</p>
    <ul>
        <li>
            <p>2.1段落</p>  <!--不区分类型,父元素中只存在唯一一个p标签-->
        </li>
    </ul>
</body>
</html>
3.奇偶选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>奇偶选择器</title>
    <style>
        p:nth-child(odd) {
            color: red;
        }

        p:nth-child(even) {
            color: blue;
        }
    </style>
</head>
<body>
    <div>
        <p>p1</p>
        <p>p2</p>
        <p>p3</p>
        <p>p4</p>
        <p>p5</p>
        <p>p6</p>
        <span>s1</span>
        <span>s2</span>
    </div>
</body>
</html>

image-20220215202848086

4.公式条件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>公式条件</title>
    <style>
        p:nth-child(2n+1) {
            color: red;
        }
    </style>
</head>
<body>
    <div>
        <p>p1</p>
        <p>p2</p>
        <p>p3</p>
        <p>p4</p>
        <p>p5</p>
        <p>p6</p>
    </div>
</body>
</html>

image-20220215203716896

5.2同类型序列选择器
1.介绍
其父元素的第一一个子元素

注意:
1.使用冒号:分隔.
2.冒号前面的标签必须和序号对上才满足条件.
3.区分类型。
2.格式
其父元素下同级同类型的第一个标签
	标签:first-fo-tyoe {属性:;}
其父元素下同级同类型的最后一个标签
	标签:last-fo-tyoe {属性:;}
其父元素下同级同类型的第n个标签
	标签:nth-fo-type(n) {属性:;}
其父元素下同级同类型的倒数第n个标签
	标签:nth-last-fo-type(n) {属性:;}
父元素中同类型标签只存在一个
	only-of-type {属性:;}
3.演示
1.序列选择器_区分类型
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序列选择器_同类型下</title>
    <style>
        p:first-of-type {  /*其父元素下同级同类型的第一个标签*/
            color: red;
        }

        p:last-of-type {  /*其父元素下同级同类型的最后一个标签*/
            color: #ffaa00;
        }

        p:nth-of-type(2) {  /*其父元素下同级同类型的第n个标签*/
            color: #04ff00;
        }

        p:nth-last-of-type(2) {  /*其父元素下同级同类型的倒数第n个标签*/
            color: blue;
        }

    </style>
</head>
<body>
    <div>
        <span>s1</span>
        <p>p1</p>
        <p>p2</p>
        <p>p3</p>
        <p>p4</p>
        <p>p5</p>
        <span>s2</span>
        <p>p6</p>
    </div>
</body>
</html>

image-20220215204936578

2.唯一选择器_区分类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>唯一选择器</title>
    <style>
        p:only-of-type  {
            color: red;
        }
    </style>
</head>
<body>
    <p>1段落</p>
    <ul>
        <li>
            <p>2.1段落</p>  <!--区分类型,父元素中只存在唯一一个p标签-->
        </li>
    </ul>
</body>
</html>

6.属性选择器

标签中包含属性:
1.只匹配属性
2.匹配属性与值
6.1匹配属性
1.介绍
标签中只包含属性即可.
2.格式
标签 [属性] {
属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>只包含属性</title>
    <style>
        p[id] {
            color: red;
        }
    </style>
</head>
<body>
    <p id="d1">1</p>
    <p>2</p>
    <p id="d2">3</p>
    <p>4</p>
    <p id="d3">5</p>
</body>
</html>
6.2匹配属性与值
1.介绍
标签中包含属性=.
2.格式
标签 [属性=值] {
    属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性=值</title>
    <style>
        p[class=c1] {
            color: red;
        }
    </style>
</head>
<body>
    <p class="c1">1</p>
    <p>2</p>
    <p class="c1">3</p>
    <p>4</p>
    <p class="c2">5</p>
</body>
</html>

7.条件匹配

条件匹配选择器:
1.属性的取值以什么开头
2.属性的取值以什么结尾
3.属性的取值包含某个值
7.1以什么开头
1.介绍
属性的取值以什么开头.
2.格式
 CSS2
 [属性|=值] {
     属性:;
 }
 CSS3 替代上面这个
 [属性^=值] {
	属性:;
 }
 
区别:
 CSS2中的只能找到value开头,并且value是被-隔开的。
 CSS3中的只能找到value开头的都可以找到。
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>以什么值开头</title>
    <style>
        img[alt^=abc] {
            color: red;
        }
        img[alt|=abc] {
            font-size: 30px;
        }
    </style>
</head>
<body>
    <img src="" alt="abc-1">  <!--符合-->
    <img src="" alt="abc2">  <!--符合-->
    <img src="" alt="abc 3">  <!--符合-->
    <img src="" alt="xxx">
</body>
</html>
7.2以什么结尾
1.介绍
属性的取值以什么结尾
2.格式
CSS3
[属性$=值] {
	属性:;
}
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>以什么值结尾</title>
    <style>
        img[alt$=a] {
            color: red;
        }
    </style>
</head>
<body>
    <img src="" alt="1-a">  <!--符合-->
    <img src="" alt="2 a">  <!--符合-->
    <img src="" alt="3a">  <!--符合-->
    <img src="" alt="xa">  <!--符合-->
    <img src="" alt="xx">
</body>
</html>
7.3属性值包含某个值
1.介绍
属性的取值包含某个值
2.格式
CSS2
[属性~=值] {
	属性:;
}
CSS3 替代上面这个
[属性*=值] {
	属性:;
}

区别:
CSS2中的只能找到独立的单词,左右两边被空格隔开。
CSS3中的只要是包含value就能找到。
3.演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>包含某个值</title>
    <style>
        img[alt*=abc] {
            color: red;
        }

        img[alt~=abc] {
            font-size: 30px;
        }
    </style>
</head>
<body>
    <img src="" alt="qqq abc xxx">  <!--符合-->
    <img src="" alt="www-abc-xxx">  <!--符合-->
    <img src="" alt="abcdef">  <!--符合-->
    <img src="" alt="qqqabc">  <!--符合-->
    <img src="" alt="xxxxx">
</body>
</html>

8.伪类选择器

8.1作用
1. :link    访问前的样式设置,在一个浏览器调开过一次就失效了,换一个浏览器获取换一个网址。
2. :hover   悬浮的样式设置
3. :active  点击的样式设置
4. :visited 访问后的样式设置
5. :focus   input框获取焦点(光标在输入框内)
8.2演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪类选择器</title>
    <style>
        a:link{   /*访问之前的状态*/
            color: red;
        }
        a:hover{   /*鼠标悬浮态*/
            color: green;
        }
        a:active{ /*激活态 鼠标点击不松开态*/
            color: blue;
        }
        a:visited{ /*访问之后的状态*/
            color: dimgrey;
        }
		p:hover{
            color:hotpink;
		}

		input:focus{ /* input框获取焦点(光标在输入框内)*/
            background-color: greenyellow;
        }
    </style>
</head>
<body>
    <!-- a标签为链接标签 -->
    <a href="https://www.jd.com"> 在不在 </a>
    <p>效果展示</p>
    姓名:<input type="text">
</body>
</html>

9.伪元素选择器

9.1作用
1. :first-letter    作用于文本的第一个文字。
2. :before          在文本首部插入文本,文本不可选中。
3. :after           在文本尾部插入文本,文本不可选中。
 	before  after 通常是用来清除浮动的影响:父标签塌陷问题。
4. font-size:48px;  字体大小设置
9.2演示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪元素选择器</title>

    <style>
        p:first-letter{
            font-size: 22px;  /*设置字体大小 22像素*/
            color: red;
        }
        p:before{
            content: '我自问:';  /*在文本开头插入文本内容,鼠标无法选中*/
            color: blue;
        }
        p:after{
            content:'睡吧,明天在学习!';
            color: darkgray;
        }
    </style>
</head>
<body>
    <p>今天学习了吗?</p>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值