【CSS】认识CSS选择器及各选择器对应的用法

目录

一、什么是CSS?

二、CSS 选择器

1. 标签选择器

2. 类选择器

3. ID选择器

4. 通配符选择器

5. 复合选择器


一、什么是CSS?

CSS(Cascading Style Sheet),层叠样式表。它与 HTML(超文本标记语言)一起使用,用于控制页面的样式。

CSS 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果。能够做到页面的样式和结构分离。

CSS 可以理解为“东方四大邪术”之化妆术。对页面的展示进行“化妆”。

二、CSS 选择器

CSS 选择器的主要功能就是选中页面指定的标签元素。选中元素后,对元素的属性进行设置。

认识 CSS 选择器之前,需要先了解一下 CSS 的引入方式,在HTML文档中引入CSS样式表有三种主要的方式:

1. 内联样式:内联样式是直接将CSS样式写在HTML元素的style属性中,仅对该元素生效。这种方式适用于只需要应用样式到少数几个元素的情况。

<div style="color: red; font-size: 20px;">这是一个红色的文字</div>

2. 内部样式表:内部样式表是将CSS代码直接写在HTML文档的<style>标签内,通常放在<head>标签中。这种方式适用于只在当前页面使用的样式,或者需要针对特定页面进行定制化样式的情况。

<head>
    <style>
        /* CSS样式 */
        body {
            background-color: #f0f0f0;
        }
    </style>
</head>

3. 外部样式表:外部样式表是将CSS代码写入一个独立的.css文件中,并通过<link>标签将其链接到HTML文档中。这种方式的优点是可以将样式与内容分离,方便管理和维护,并且可以在多个页面中重复使用相同的样式。

<head>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>

此处通过 HTML 代码演示 CSS 选择器的使用,以下演示使用内部样式表的方式引入 CSS 选择器:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="font32">我是⼀个div, class为font32</div>
    <div class="font32">我是⼀个div, class为font32</div>
    <div><a href="#">我是⼀个div</a></div>
    <!-- 无序列表 -->
    <ul> 
        <li>aaa</li>
        <li>bbb</li>
        <li><a href="#">ccc</a></li>
    </ul>
    <!-- 有序列表 -->
    <ol>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ol>
    <button id="submit">提交</button>
</body>

</html>

代码初始效果如下:

CSS选择器主要分为以下几种:

1. 标签选择器

标签选择器是CSS中最简单的选择器之一,它通过选择HTML元素的标签名称来应用样式。此处在以上代码 head 中引入 CSS 选择器:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        /* 选择所有的a标签, 设置颜⾊为红⾊ */
        a {
            color: red;
        }

        /* 选择所有的div标签, 设置颜⾊为绿⾊ */
        div {
            color: green;
        }
    </style>
</head>

 

2. 类选择器

类选择器用于选择具有相同类名的元素,并为它们应用相同的样式。类选择器以.开头,后面跟着类名。在前面代码 head 中再添加一个类选择器:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        /* 选择所有的a标签, 设置颜⾊为红⾊ */
        a {
            color: red;
        }

        /* 选择所有的div标签, 设置颜⾊为绿⾊ */
        div {
            color: green;
        }

        /* 选择class为font32的元素, 设置字体⼤⼩为32px */
        .font32 {
            font-size: 32px;
        }
    </style>
</head>

  • 一个类可以被多个标签使用,一个标签也能使用多个类(多个类名要使用空格分隔,这种做法可以让代码更好复用)

3. ID选择器

ID选择器是CSS中用于选择具有特定id属性的元素的选择器。ID选择器以#符号开头,后跟着id属性的值。

与类选择器不同,id选择器是唯一的,每个HTML文档中的元素都应该具有唯一的id。因此,id选择器通常用于针对单个元素应用特定样式或JavaScript操作。

在前面代码 head 中再添加一个ID选择器:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        /* 选择所有的a标签, 设置颜⾊为红⾊ */
        a {
            color: red;
        }

        /* 选择所有的div标签, 设置颜⾊为绿⾊ */
        div {
            color: green;
        }

        /* 选择class为font32的元素, 设置字体⼤⼩为32px */
        .font32 {
            font-size: 32px;
        }

        /* 选择id为submit的元素, 设置颜⾊为红⾊ */
        #submit {
            color: red;
        }
    </style>
</head>

4. 通配符选择器

通配符选择器(Universal Selector)在CSS中用   * 表示,它匹配文档中的任何元素。通配符选择器将应用样式于文档中的所有元素,包括HTML元素、内联元素和已应用类和id的元素。通常使用于设置默认参数。

5. 复合选择器

复合选择器是指由多个简单选择器组合而成的选择器,用于更精确地选中文档中的元素。复合选择器可以根据元素的类型、类、ID等属性来进行选择。

例如:想把上述代码中 ul 标签下的 li 标签下的 a 标签,设置为黄色,此时就可以使用复合选择器,还是在前面代码 head 中再添加一个复合选择器:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        /* 选择所有的a标签, 设置颜⾊为红⾊ */
        a {
            color: red;
        }

        /* 选择所有的div标签, 设置颜⾊为绿⾊ */
        div {
            color: green;
        }

        /* 选择class为font32的元素, 设置字体⼤⼩为32px */
        .font32 {
            font-size: 32px;
        }

        /* 选择id为submit的元素, 设置颜⾊为红⾊ */
        #submit {
            color: red;
        }

        /*只设置 ul 标签下的 li 标签下的 a 标签, 颜⾊为黄色*/
        ul li a {
            color: yellow;
        }
    </style>
</head>

以上三个标签选择器 ul li a 中的任意,都可以替换成类选择器,或者ID选择器,可以是任意选择器的组合,也可以是任意数量选择器的组合。

这种以空格分隔的多个选择器,称为复合选择器中的后代选择器。 

除 1. 后代选择器 外,常见的复合选择器还包括:

2. 子代选择器:以 > 分隔的两个简单选择器,用于选择指定元素的直接子元素。

ul > li {
    /* 选中 ul 元素的直接子元素 li 元素 */
}

3. 相邻兄弟选择器:以 + 分隔的两个简单选择器,用于选择指定元素之后紧跟的同级兄弟元素。

h2 + p {
    /* 选中紧跟在 h2 元素之后的 p 元素 */
}

4. 通用兄弟选择器:以 ~ 分隔的两个简单选择器,用于选择指定元素之后的所有同级兄弟元素。

h2 ~ p {
    /* 选中在 h2 元素之后的所有 p 元素 */
}

除以上四种常见的复合选择器外,还有交集选择器和并集选择器等。

  • 交集选择器使用无连接符将两个选择器组合在一起,表示选择同时满足两个选择器的元素。
  • 并集选择器使用逗号将多个选择器组合在一起,表示选择多个选择器中的任意一个选择器代表的元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++11 的explicit关键字 -- 显示构建对象

概述: 在平时我们定义一个类&#xff0c;然后创建类对象可以有多种方式&#xff0c;主要分为两种: 声明一个Student类: class Student { public: Student(int age) { m_age age; } private: int m_age; }; 显示构建(explicit) Student s1(5); //…

全栈开发之路——前端篇(5)组件间通讯和接口等知识补充

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 辅助文档&…

WPF 图片显示某一部分区域

效果图&#xff1a; 代码&#xff1a; <Image Width"32"HorizontalAlignment"Right"Height"32"Source"../../Resources/Images/BLUEWOLF.jpg"><Image.Clip><PathGeometry><PathFigure StartPoint"32,32&quo…

重写muduo之Thread、EventLoopThread、EventLoopThreadPool

目录 1、概述 2、Thread 2.1 Thread.h 3、EventLoopThread 3.1 EventLoopThread.h 3.2 EventLoopThread.cc 4、 EventLoopThreadPool 4.1 EventLoopThreadPool.h 4.2 EventLoopThreadPool.cc 1、概述 管理事件循环线程的调度的 打包了一个EventLoop和线程&#xff0c;…

在ubuntu虚拟机中手动安装VMware Tools(VMware Workstation 17 player)

可参考官方文档&#xff1a;在 Linux 虚拟机中手动安装 VMware Tools 以下列出我在安装过程中遇见的问题&#xff1a; 1、“安装VMware Tools”选项为灰&#xff0c;无法选中 原因是VMware Tools的安装包镜像在Player的安装目录下&#xff0c;需要在虚拟机启动的时候加载这个…

【数字经济】上市公司供应链数字化数据(2000-2022)

数据来源&#xff1a; 时间跨度&#xff1a;2000-2022年 数据范围&#xff1a;各上市企业 数据指标&#xff1a; 样例数据&#xff1a; 参考文献&#xff1a;[1]刘海建,胡化广,张树山,等.供应链数字化的绿色创新效应[J].财经研究,2023,49(03):4-18. 下载链接&#xff1a;https:…

关系型数据库MySQL开发要点之多表查询2024详解

多表查询 准备测试数据 -- 部门管理 create table tb_dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时…

图神经网络综述和学习路径

应用邻域 应用举例 应用层面&#xff08;节点&#xff0c;连接&#xff0c;子图&#xff0c;全图&#xff09; 概念区别 图神经网络本质上解决了表示学习的问题 可以把神经网络看作一个黑箱&#xff0c;图中的f函数 困难与挑战 现代的深度学习&#xff0c;如何把图输入到神经…

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统&#xff1a;Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式&#xff1a; CMake 兼容配置&#xff1a; OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

QX-mini51单片机学习-----(3)流水灯

目录 1宏定义 2函数的定义 3延时函数 4标准库函数中的循环移位函数 5循环移位函数与左移和右移运算符的区别 6实例 7keil中DeBug的用法 1宏定义 是预处理语句不需要分号 #define uchar unsigned char//此时uchar代替unsigned char typedef是关键字 后面是接分号…

【Linux】线程的内核级理解详谈页表以及虚拟地址到物理地址之间的转化

一、线程的概念 对于进程来说&#xff0c;进程创建时间和空间成本较高&#xff0c;因为进程是承担分配系统资源的基本实体&#xff0c;所以线程的出现就成为了必然。Linux线程与进程非常相似&#xff0c;Linux设计者在设计之初觉得如果再为线程设计数据结构和调度算法就会使整个…

java--io流(一)

1. 前置知识 字符集是什么&#xff1f; 字符集&#xff08;Character Set&#xff09;是一组字符的集合&#xff0c;它定义了可以在计算机系统中使用的所有字符。字符集可以包括字母、数字、标点符号、控制字符、图形符号等。字符集使得计算机能够存储、处理和显示各种语言和…

idea 项目 修改项目文件名 教程

文章目录 目录 文章目录 修改流程 小结 概要流程技术细节小结 概要 原项目名 修改流程 关掉当前项目的idea页面 修改之后的文件名 重新打开idea。选择项目打开项目页面 技术细节 出现下面这个问题&#xff0c;可以参考作者新的一编文章idea开发工具 项目使用Spring框架开发解…

【智能楼宇秘籍】一网关多协议无缝对接BACnet+OPC+MQTT

在繁华的都市中心&#xff0c;一座崭新的大型商业综合体拔地而起&#xff0c;集购物、餐饮、娱乐、办公于一体&#xff0c;是现代城市生活的缩影。然而&#xff0c;这座综合体的幕后英雄——一套高度集成的楼宇自动化系统&#xff0c;正是依靠多功能协议网关&#xff0c;实现了…

《从零开始,搭建一个简单的UVM验证平台》实操

最近的工作中需要用UVM平台去仿真软件同事写的C程序&#xff0c;虽然只要用EDA同事已经搭好的UVM平台稍微改改就行&#xff0c;但对于我这种从未接触过UVM甚至都没用过System Verilog的纯FPGA工程师来说还是很有难度的&#xff0c;因为我对这方面一点概念都没有。 基于此&…

一文盘点 Partisia Blockchain 生态 4 月市场进展

Partisia Blockchain 是一个以高迸发、隐私、高度可互操作性、可拓展为特性的 Layer1 网络。通过将 MPC 技术方案引入到区块链系统中&#xff0c;以零知识证明&#xff08;ZK&#xff09;技术和多方计算&#xff08;MPC&#xff09;为基础&#xff0c;共同保障在不影响网络完整…

redis--安装

简介 官网&#xff1a;RedisInsight - The Best Redis GUI 各个版本官网下载地址&#xff1a;http://download.redis.io/releases/ Redis和Memcached是非关系型数据库也称为NoSQL数据库&#xff0c;MySQL、Mariadb、SQL Server、PostgreSQL Oracle 数据库属于关系型数据 应用…

17.接口自动化学习-日志

1.日志输出渠道 &#xff08;1&#xff09;文件格式 xx.log &#xff08;2&#xff09;控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…

rocketMQ-常用知识点

1、RocketMQ有什么作用&#xff1f; 1、应用解耦 系统的耦合性越高&#xff0c;容错性就越低。以电商应用为例&#xff0c;用户创建订单后&#xff0c;如果耦合调用库存系统、物流系统、支付系统&#xff0c;任何一个子系统出了故障或者因为升级等原因暂时不可用&#xff0c;都…

多线程【阻塞队列】(生产者消费者模型代码实现)

阻塞队列 解耦合削峰填谷生产者消费者模型&#xff1a; 解耦合 削峰填谷 生产者消费者模型&#xff1a; 正常来说&#xff0c;wait通过notify唤醒&#xff0c;其他线程调用了take,在take的最后一步进行notify. package thread; class MyBlockingQueue{private String [] data…
最新文章