39. css概念、选择器

1. css的概念

CSS(Cascading Style Sheets,层叠样式表)是一种用于描述HTML文档的表现形式的样式语言。它被设计用于将网页的内容与表现形式分离,可以控制网页的外观和布局,包括间距、颜色、字体等视觉元素,而不需要直接修改HTML的结构。

2. 语法结构

选择符 {
    样式属性: 样式属性值;
    样式属性: 样式属性值;
    样式属性: 样式属性值, 样式属性值, 样式属性值;
}

2. 注释语法

/* 这是注释 */

3. 引入css的方式

3.1 head内style标签内部直接编写css代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p {
            color: aqua;
        }
    </style>
</head>
<body>
    <p>avril lavigne</p>
</body>
</html>

3.2 head内link标签引入外部css文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="newcss.css">
</head>
<body>
    <p>avril lavigne</p>
</body>
</html>

3.3 行内式

标签内部通过style属性直接编写

将HTML和css糅合到了一起(不推荐)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p style="color: blue">avril lavigne</p>
</body>
</html>

4. 基本选择器

4.1 标签选择器(范围查找)

通过标签名查找标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        h1 {
            color: cornflowerblue;
        }
    </style>
</head>
<body>
    <h1>avril</h1>
    <h1>lavigne</h1>
    <h1>haaland</h1>
</body>
</html>

 

4.2 类选择器(范围查找)

通过标签的class属性查找标签  .类名

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1 {
            color: cornflowerblue;
        }
    </style>
</head>
<body>
    <h1 class="c1">avril</h1>
    <h1 class="c1">lavigne</h1>
    <h1 class="c2">haaland</h1>
</body>
</html>

4.3 id选择器(精确查找)

通过标签的id属性查找标签  #id

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1 {
            color: lightseagreen;
        }
    </style>
</head>
<body>
    <h1 class="c1" id="d1">avril</h1>
    <h1 class="c1" id="d2">lavigne</h1>
    <h1 class="c2" id="d3">haaland</h1>
</body>
</html>

5. 关系选择器

5.1 分类

后代选择器、子代选择器、相邻兄弟选择器、通用兄弟选择器

5.2 演示说明

    <div>div1
        <div>div2
            <p>p1</p>
        </div>
        <p>p2
            <span>span1</span>
        </p>
        <span>span2</span>
    </div>

通过嵌套来表示标签关系:

[1]对于div1来说,div2、p2、span2是子代

[2]对于div1来说,内部的所有标签无论层级都是div1的后代

[3]div2、p2、span2是兄弟

5.3 代码

[1] 子代选择器

关键符号是大于号  

查找id是d1标签内部所有的子代span

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1 > span {
            color: blueviolet;
        }
    </style>
</head>
<body>
    <div id="d1">div1
        <div>div2
            <p>p1</p>
        </div>
        <p>p2
            <span>span1</span>
        </p>
        <span>span2</span>
        <span>span3</span>
    </div>
</body>
</html>

[2]后代选择器

关键符号是空格

查找id是d1标签内部所有的后代span

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1 span {
            color: blueviolet;
        }
    </style>
</head>
<body>
    <div id="d1">div1
        <div>div2
            <p>p1</p>
        </div>
        <p>p2
            <span>span1</span>
        </p>
        <span>span2</span>
        <span>span3</span>
    </div>
</body>
</html>

[3]相邻兄弟选择器

关键符号是加号

查找id是d2标签同级别紧随其后的span标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d2 + span {
            color: blueviolet;
        }
    </style>
</head>
<body>
    <div id="d1">div1
        <div>div2
            <p>p1</p>
        </div>
        <p id="d2">p2
            <span>span1</span>
        </p>
        <span>span2</span>
        <span>span3</span>
    </div>
</body>
</html>

[4]通用兄弟选择器

关键符号是波浪号

查找id是d2标签同级别下所有的h1标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d2 ~ h1{
            color: blueviolet;
        }
    </style>
</head>
<body>
    <div>div1
        <div id="d2">div2
            <p>p1</p>
        </div>
        <p>p2
            <span>span1</span>
        </p>
        <span>span2</span>
        <h1>avril</h1>
        <h1>lavigne</h1>
    </div>
</body>
</html>

6. 属性选择器

根据标签内部的属性名和属性值查找标签(关键符号是中括号)

方式一:直接通过属性名查找

将带有id属性的标签背景颜色改为blueviolet

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        [id] {
            background: blueviolet;
        }
    </style>
</head>
<body>
    <input type="text" name="aaa" id="1">
    <input type="text" name="bbb" id="2">
    <p id="3">avril</p>
    <p id="4">lavigne</p>
</body>
</html>

方式二:属性名+属性值

将属性名为id,属性值为1的标签背景颜色改为blueviolet

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        [id="1"] {
            background: blueviolet;
        }
    </style>
</head>
<body>
    <input type="text" name="aaa" id="1">
    <input type="text" name="bbb" id="2">
    <p id="3">avril</p>
    <p id="4">lavigne</p>
</body>
</html>

方法三:标签名+属性名+属性值

将标签名为p、属性名为id、属性值为3的标签背景颜色改为blueviolet

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p[id="3"] {
            background: blueviolet;
        }
    </style>
</head>
<body>
    <input type="text" name="aaa" id="1">
    <input type="text" name="bbb" id="2">
    <p title="666" id="3">avril</p>
    <p title="666" id="4">lavigne</p>
</body>
</html>

7. 分组与嵌套

7.1 分组

[1] 语法

/*查找div或者p或者span*/
div, p, span {
    color: red;
}

[2]示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    div {
      color: blue;
    }

    p {
      color: blue;
    }

    span {
      color: blue;
    }
  </style>

</head>
<body>
    <div>这是div标签</div>
    <p>这是p标签</p>
    <span>这是span标签</span>
</body>
</html>

上述方法,重复代码造成了代码的冗余

[3]优化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    /* 逗号表示并列关系 */
    div,span,p {
      color: blue;
    }
  </style>

</head>
<body>
<div>这是div标签</div>
<p>这是p标签</p>
<span>这是span标签</span>
</body>
</html>

7.2 嵌套

/*查找id是d1或者class包含c1或者span*/
#d1, .c1, span {
    color: red;
}

7.3 综合运用

div#d1    查找id是d1的div标签
div.c1    查找class包含c1的div标签
div #d1   查找div内部id是d1的后代标签
#d1>.c1   查找id是d1的内部class包含c1的子代标签

8. 伪类选择器

8.1 hover

设置鼠标悬停在标签时的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    p {
        color: grey;
    }
    p:hover {
        color: deepskyblue;
    }
  </style>

</head>
<body>
    <p>Avril lavigne</p>
</body>
</html>

 

8.2 focus

设置标签在成为输入焦点时的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        input:focus {
            background-color: deepskyblue;
        }
    </style>
</head>
<body>
    <input type="text">
</body>
</html>

9. 伪元素选择器

作用:通过css来操作文本内容

[1] 修改首个字体样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       p:first-letter {
           color: deepskyblue;
           font-size: 30px;
       }
    </style>
</head>
<body>
    <p>avril lavigne</p>
</body>
</html>

[2]在文本开头添加内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       p:before {
           content: 'usa';
           color: blue;
       }
    </style>
</head>
<body>
    <p>avril lavigne</p>
</body>
</html>

[3]在文本结尾添加内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       p:after {
           content: 'usa';
           color: deepskyblue;
       }
    </style>
</head>
<body>
    <p>avril lavigne</p>
</body>
</html>

使用场景:

  (1)用于清除浮动带来的影响

  (2)用于网站的内容防爬

 

posted @ 2024-12-03 10:19  hbutmeng  阅读(16)  评论(0)    收藏  举报