首页 > 其他分享 >前端基础之CSS选择器

前端基础之CSS选择器

时间:2024-03-19 16:35:21浏览次数:17  
标签:color 标签 前端 元素 id 选择器 CSS 属性

一、什么是选择器

选择器是指通过一定的语法规则选取到对应的HTML标记,然后给这个对应的HTML标记设置样式

二、选择器的分类

CSS中提供了多种不同类型的选择器,例如基本选择器、组合选择器、伪类选择器、伪元素选择器等等。

1、基本选择器

(1)概览

  • 在CSS中,选择器用于选取HTML文档中的元素。
  • 根据选择器的类型和语法的不同,可以选择不同的元素。
  • 常用的有id选择器、类选择器、元素/标签选择器和通用选择器。
选择器 格式 含义 缺点 举例
id选择器 #id属性值 id选择器可以为标有特定的ID的HTML元素指定特定的样式,只能使用一次,ID选择器以“#”来定义。 只能使用一次 #title
类选择器 .class属性值 类选择器,给拥有指定的CLASS属性值的元素设置样式 可以根据需求选择 .box
元素/标签选择器 标签名 标签选择器,匹配对应的HTML标签。 不能差异化选择 p
通用选择器 * 通用选择器,将匹配HTML所有标签。 选择的太多,有部分不需要 *

(2)id选择器

  • 通过元素的id属性进行选取。
  • 每个页面中id值是唯一的,所以在css中最好不重复使用id选择器。
<style>
	/*id选择器*/
	#d1 {  /*找到id是d1的标签,将文本颜色变成绿黄色*/
		color: greenyellow;
    }
</style>

(3)类选择器

类选择器可以根据标签的 class 属性匹配具体的 HTML 标签,所有符合条件的标签都会根据选择器内的样式进行格式化。类选择器的定义需要用到一个英文的句号.,后面紧跟 class 属性的值,如下所示:

.black {
    color: black;
}

.black选择器能够匹配文档中所有具有class="black"属性的标签。

由于 class 属性不是唯一的,可以应用于不同的标签,因此您还可以在定义类选择器时指定具体的标签,如下所示:

p.black {
    color: black;
}

p.black选择器仅会将其中的样式应用到所有具有class="black"属性的标签中,对于其它的具有class="black"属性的标签则没有影响。

另外,一个 HTML 标签中 class 属性可能不止一个,例如:

<p class="info selected"></p>
<p class="info"></p>

假如我们要为所有 class 属性包含 info 的元素设置粗体,为所有 class 属性包含 selected 的元素设置红色字体,为 class 属性中既包含 info 又包含selected 的元素设置蓝色背景,则可以写成下面这样:

.info {
    font-weight:bold;
}
.selected {
    color: red;
}
.info.selected {
    background: blue;
}

这种由多个 class 属性值所组成的类选择器我们可以称之为“多类选择器”,而前面介绍的由单个 class 属性值定义的类选择器可以称为“单类选择器”。

注意:多类选择器中,多个 class 属性之间是紧挨着的(例如 .info.selected),不需要使用空格分开。

(4)元素/标签选择器

  • 通过元素的标签名称进行选取。
  • 比如选择所有的段落、列表等。
 <style>
    /*元素(标签)选择器*/
    span {  /*找到所有的span标签*/
          color: green;
     }
</style>

(5)通用选择器

  • *表示所有的元素。
 <style>
    /*通用选择器*/
    * {  /*将HTML页面上所有的标签全部找到*/
      	  color: blue;
      }
</style>

(6)总体应用实例

 <!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>
        /* id选择器 */
        #myH1 {
            color: red;
        }

        /* 类选择器 */
        .title {
            font-size: 24px;
        }

        .content {
            line-height: 1.5;
        }

        /* 元素/标签选择器 */
        p {
            color: blue;
        }

        ul {
            list-style-type: none;
        }

        /* 通用选择器 */
        * {
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
<h1 id="myH1">Hello, World!</h1>
<p class="title">This is a title.</p>
<p class="content">This is a content.</p>
<ul>
    <li>This is a list item.</li>
    <li>This is another list item.</li>
</ul>
</body>
</html>

在上面的示例中,我们创建了一个包含一个id为"myH1"的标题、两个类分别为"title"和"content"的段落以及一个无序列表的HTML文档。

2、组合选择器

(1)概览

  • 后代选择器
  • 儿子选择器
  • 毗邻选择器
  • 弟弟选择器
选择器 格式 含义 举例
后代元素选择器 E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔 div span
儿子元素选择器 E>F 子元素选择器,匹配所有E元素的子元素F div>span
毗邻元素选择器 E+F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F,同级别紧挨着的下面第一个 div+span
弟弟元素选择器 E~F 弟弟元素选择器,匹配所有E元素之后的所有元素F div~span

(2)设置标签关系

<div>div1
	<div>div2
		<p>p1</p>
	</div>
	<p>p2
		<span>span1</span>
	</p>
	<span>span2</span>
</div>
  • 通过嵌套层级来表示亲属关系
    • 对于div1来说:div2、p2、span2都是儿子
    • 对于div2、p2、span2来说:div1就是父亲
    • 对于p1来说:div2是父亲 div1是爷爷(可以将div1和div2统称为祖先)
    • 对于span2来说:div2、p2是哥哥 span2是弟弟
    • div1内部所有的标签无论层级都可以称之为是div1的后代

ps:判断的时候一定要看层级关系

(3)样式设计实例

/*# 1.儿子选择器(关键符号是大于号)*/
d1 > span {
    /*查找id是d1标签内部所有的儿子span*/
    color: red;
}

/*# 2.后代选择器(关键符号是空格)*/
d1 span {
    /*查找id是d1标签内部所有的后代span*/
    color: red;
}

/*# 3.毗邻选择器(关键符号是加号)*/
d1 + a {
    /*查找id是d1标签同级别下面紧挨着第一个a标签*/
    color: red;
}

/*# 4.弟弟选择器(关键符号是小波浪号)*/
d1 ~ a {
    /*查找id是d1标签同级别下面所有a标签*/
    color: red;
}

3、属性选择器

(1)概览

  • 含有某个属性
  • 含有某个属性并且有某个值
  • 含有某个属性并且有某个值的某个标签

attr是英文单词 “attribude”的简写,中文意思 “属性” 属性名

val是英文单词 “value”的简写,中文意思是“值” 属性值

属性选择器种类 含义 举例
[attr] 匹配所有具有attr属性的元素,不考虑它的值 [align]
[attr = "val"] 匹配所有attr属性值等于val的元素 [align="center"]{.....},属性值一般加引号
标签 [attr = "val"] 匹配所有attr属性值等于val的元素的标签 input [align="center"]

(2)实例

  • 属性选择器是以[]作为标志的
<style>
	/*第一种情况*/
    [username] {  /*将所有含有属性名是username的标签背景色改为红色*/
        background-color: red;
    }

    /*第二种情况*/
    [username='xiao'] {  /*找到所有属性名是username并且属性值是xiao的标签*/
        background-color: orange;
    }

    /*第三种情况*/
    input[username='xiao'] {  /*找到所有属性名是username并且属性值是xiao的input标签*/
        background-color: bisque;
    }
</style>

4、分组与嵌套

(1)分组

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

(2)嵌套

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

(3)综合

玩法1

div#d1		查找id是d1的div标签
div.c1		查找class包含c1的div标签

玩法2

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

5、伪类选择器

(1)概览

标签属性 含义 状态
元素/标签 : link 向未被访问的链接添加样式 正常状态
元素/标签 : visited 向已被访问的链接添加样式 访问过后状态
元素/标签 : hover 当鼠标悬浮在元素上方时,向元素添加样式 鼠标放上状态
元素/标签 : active 鼠标放在元素上面时,点击的一瞬间 激活状态
input : focus input框获取焦点(鼠标点击了input框) 聚焦状态

(2)实例

<style>
    a:link{/* 正常状态 */
        color: #f00;/* 红 */
    }
    a:visited{/* 访问过后状态 */
        color: #000;/* 黑 */
    }
    a:hover{/* 鼠标悬停状态 */
        color: gold;/* 黄 */
    }
    a:active{/* 激活状态 */
        color: #0f0;/* 绿 */
    }
    input:focus {  /* input输入框获取焦点(input被选中) */
        background-color: blue;  /* 蓝 */
        }

</style>
<body>
    <a href="http://www.bilibili.com">哔哩哔哩</a>
    <a href="http://www.douyu.com">斗鱼</a>
    <a href="http://www.123.com">123</a>
    <input type="text">
</body>

(3)a链接的属性实现顺序

  • 超级链接的不同状态它其实是有顺序的,也就是说伪类选择器设置其实是有顺序的。如果不按照伪类选择器的顺序,那么样式就会失效。

顺序:要遵循 “爱恨法则” 要先有爱,才有恨。“love hate”。

  • l :link
  • v:visited
  • h:hover
  • a:active

6、伪元素选择器

(1)使用方法

/*1.修改首个字体样式*/
p:first-letter {
    color: red;
    font-size: 48px;
}

/*2.在文本开头添加内容*/
p:before {
    content: '哈哈';
    color: blue;
}

/*3.在文本结尾添加内容*/
p:after {
    content: '嘿嘿';
    color: yellow;
}

(2)应用场景

  • before 和 after 通常都是用来清除浮动带来的影响,即父标签塌陷的问题

  • 用于网站的内容防爬

三、基本选择器优先级

  • 选择器相同,书写顺序不同
    • 就近原则:谁离标签更近就选谁的
  • 选择器不同...
    • 行内 > id选择器 > 类选择器 > 标签选择器
    • 选择器不同的情况下,精确度越高越有效
##  行内 > id选择器 > 类选择器 > 标签选择器
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>

   <style>
       #d1 {
           color: orange;
       }
       .c1 {
           color: blueviolet;
       }
       p {
           color: red;
       }
   </style>
<!--    <link rel="stylesheet" href="mycss.css">-->
</head>
<body>
   <p id="d1" class="c1" style="color: blue">下一个更乖</p>
</body>
</html>

image

标签:color,标签,前端,元素,id,选择器,CSS,属性
From: https://www.cnblogs.com/xiao01/p/18083280

相关文章

  • 【大前端攻城狮之路】百度爱番番前端性能监控体系方案设计
    一、背景爱番番大前端整体面临以下问题:Metrics:URL的RED指标不全。URL不全,ERROR缺失,Duration分位置缺失。整体实效性为T+1。无法及时感知问题。只对基本页面级别的读操作进行了监控。Tracing:Trace无法全端串联,直接影响具体case的跟进。无前端Trace。Logging:无Log。Sentry......
  • VUE前端打包报错:TypeError: Class extends value undefined is not a constructor or
    在执行npmrunbuild的时候遇到了错误:TypeError:Classextendsvalueundefinedisnotaconstructorornull;而执行npmrunserve是可以正常执行的,报错如下:buildingforproduction...ERRORTypeError:ClassextendsvalueundefinedisnotaconstructorornullTypeErr......
  • CSS
    简介CSS(CascadingStyleSheets)层叠样式表,又叫级联样式表,简称样式表CSS文件后缀名为.cssCSS用于HTML文档中元素样式的定义目的使用css的唯一目的就是让网页具有美观一致的页面语法CSS规则由两个主要的部分构成:选择器,以及一条或多条声明(样式)选择器通常是您需要改变样式的......
  • 有趣的css - 音频小动效
    大家好,我是Just,这里是「设计师工作日常」,今天分享的是用css3实现一个好玩的音频小动效。《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。目录整体效果核心代码html代码css部分代码完整代码如下html页面css样式页面渲染效果整体效果使用......
  • 前端传list集合,后端接收
    一、前端列表多选<el-tableref="multipleTable":data="tableData"stripestyle="width:99%;margin-bottom:10px;":height="$publicjs.tableHeight"@se......
  • 前端低代码(DSL&Schema)
    标准的DSL和Schema区别--ChatGPT4回答DSL(Domain-SpecificLanguage)和Schema这两个概念在计算机科学和软件开发中是不同的,但它们都是用来描述结构和约束的。DSL(Domain-SpecificLanguage):DSL是一种专用于特定领域的计算机语言。它的设计针对某一特定领域的问题解决,比如用于网......
  • 前端学习-vue视频学习009-defineProps(子组件接收父组件的数据)
    尚硅谷视频链接defineProps-只接收父:要有数据letpersonList=reactive<personArr>([{id:'qqq1',name:'aaa',age:10,gender:'F'},{id:'qqq2',name:'vvv',age:30,gender:'F'},{id:'qq......
  • 前端框架Vue--Part 01
    1.为什么要学习Vue前端必备技能:Vue.js作为现代前端开发领域中的主流框架之一,已成为前端开发者必备的技术栈。随着前端技术的不断发展和企业需求的变化,掌握Vue.js能够确保开发者跟上行业发展步伐,适应各类Web项目的开发需求。广泛应用与岗位需求:目前,在国内外绝大多数互联网公......
  • 前端面试题-vue2和vue3的区别
    监测机制的改变vue2对数据监测使用的是Object.definePropert()对数据进行劫持,结合发布订阅者模式来实现vue3通过使用proxyAPI对数据直接进行代理。vue3优于vue3的的地方就是:vue3的proxyAPI监测的是整个对象,而不再是某个属性消除了Vue2当中基于Object.defineProperty......
  • 【前端素材】推荐优质综合购物电子商城网站设计Cropium平台模板(附源码)
    一、需求分析在线电子数码商店网站是指专门销售电子产品和数码设备的网上商店。这类网站通常提供广泛的产品选择,涵盖手机、平板电脑、相机、电脑配件、智能家居设备等多种数码产品。以下是在线电子数码商店网站的一般功能:产品展示与购买: 网站上展示各种电子数码产品的详细......