CSS常见选择器总结

1.简单选择器

简单选择器是开发中使用最多的选择器,包含:

  • 元素选择器,使用元素的名称

  • 类选择器,使用.类名

  • id选择器,使用#id

id注意事项:

一个HTML文档里面的id值 是唯一的,不能重复
  • id值如果由多个单词组成,单词之间可以用中划线-、下划线_连接,也可以使用驼峰标识
  • 最好不要用标签名作为id值

2.属性选择器

[att] 选择拥有att属性的元素

[att=val] 选择拥有属性att并且属性值为val的元素

<style>
    [title] {
      color: red;
    }
    [title=div] {
      background-color: blue;
    }
  </style>
  
  <div>我是div元素</div>
  <div title="div">我也是div元素</div>
  <p>我是p元素</p>
  <h2 title="h2">我是h2元素</h2>

3.后代选择器

  • 选中所有后代(用 空格 分隔)

  <style>
    /* 所有后代选择器 */
    .home span {
      color: red;
      font-size: 30px;
    }
  </style>
  
  <div class="home">
    <span>啦啦啦啦</span>  //选中
    <div class="box">
      <p>我是p元素</p>
      <span class="home-item">呵呵呵呵</span> //选中
  </div>
  • 选中直接后代(使用 分隔)

  <style>
    /* 所有后代选择器 */
    .home > span {
      color: red;
      font-size: 30px;
    }
  </style>
  
  <div class="home">
    <span>啦啦啦啦</span>  //选中
    <div class="box">
      <p>我是p元素</p>
      <span class="home-item">呵呵呵呵</span> //未选中
  </div>

4.兄弟选择器

  • 相邻兄弟选择器(使用 连接)

  <style>
    .box + .content {
      color: red;
    }
  </style>
  <div class="home">
    <div>叽叽叽叽</div>
    <div class="box">呵呵呵呵</div>
    <div class="content">哈哈哈哈</div> //选中
    <p>我是p元素</p>
  </div>

       选中class="box"的元素的具有class="content "的直接兄弟元素,直接兄弟和class="content "要同时满足,只会选中一个。

  • 普遍兄弟选择器(使用 连接)

  <style>
    .box ~ div {
      background-color: #f6b8b8;
    }
  </style>
  <div class="home">
    <div>叽叽叽叽</div>
    <div class="box">呵呵呵呵</div>
    <div class="content">哈哈哈哈</div> //选中
    <div>嘻嘻嘻嘻</div> //选中
    <div>嘿嘿嘿嘿</div> //选中
    <p>我是p元素</p>
  </div>

       选中class="box"元素的后面的兄弟元素,并且这些兄弟是div元素 ,选中同时满足两个条件的元素,可以选中多个。

5.组合选择器

交集选择器(两个选择器紧密相连

选中同时满足两个条件的元素:

  <style>
    div.box {
      color: red;
      font-size: 30px;
    }
  </style>
  <div class="box">我是box里面的div元素</div> //选中
  <div>我是普通div元素</div>
  <p class="box">我是p元素</p>

并集选择器(两个选择器以,分隔)

只要符合其中一个条件就选中

  <style>
   h1, h2 {
      color: red;
      font-size: 40px;
    }
  </style>
  <p>我是p元素</p> //选中 
  <h1>我是h1元素</h1> //选中

 

6.伪类选择器

伪类是 选择器的一种 ,它用于选择处于特定状态的元素。
常见的伪类有:

1.动态伪类

  • a:link 未访问的链接
  • a:visited 已访问的链接
  • a:hover 鼠标挪动到链接上(重要)
  • a:active 激活的链接(鼠标在链接上长按住未松开)
   <style>
    /* a元素的链接从来没有被访问过 */
    a:link {
      color: red;
    }
    /* a元素被访问过了颜色 */
    a:visited {
      color: green;
    }
    /* a元素鼠标放到上面 */
    a:hover {
      color: blue;
    }
    /* 点下去了, 但是还没有松手 */
    a:active {
      color: purple;
    }
    /* 所有的状态下同样的样式 */
    a {
      color: orange;
    }
    /* a/input元素聚焦(获取焦点) */
    input:focus {
      color: yellow;
    }
  </style>
  <a href="http://www.mi.com">小米</a>
  <a href="http://www.baidu.com">百度一下</a>
使用注意
  • :hover必须放在:link和:visited后面才能完全生效
  • :active必须放在:hover后面才能完全生效
所以建议的编写顺序是 :link、:visited、:hover、:active

 除了a元素,:hover、:active也能用在其他元素上

  <style>
    /* 鼠标放到div元素上面 */
    div:hover {
      color: blue;
    }
    /* 点下去了, 但是还没有松手 */
    div:active {
      color: purple;
    }
  </style>

  <div>我是div元素</div>

动态伪类(:focus) 

选中拥有输入焦点的元素(能接收键盘输入),适用于 input 和 元素(a元素可以被键盘的Tab键选中聚焦)

    /*-------- a/input元素聚焦(获取焦点)-------- */
 <style>   
    input:focus {
      background-color: #ea3f9d;
      color: yellow;
    }
    a:focus{
      background-color: #ea3f9d;
      color: yellow;
    }
  </style>
  <a href="http://www.baidu.com">百度一下</a>
  <input type="text">
动态伪类的编写顺序建议为:
:link、:visited、:focus、:hover、:active
直接给a元素设置样式,相当于给a元素的所有动态伪类都设置了
  • 相当于a:link、a:visited、a:hover、a:active、a:focus的color都是设置了相同样式

2.结构伪类

:nth-child

:nth-child(1)
  • 是父元素中的第1个子元素
:nth-child(2n)
  • n代表任意正整数和0 (0,1,2,3...)
  • 是父元素中的第偶数个子元素(第2、4、6、8......个)
  • 跟:nth-child(even)同义
:nth-child(2n + 1)
  • n代表任意正整数和0 (0,1,2,3...)
  • 是父元素中的第奇数个子元素(第1、3、5、7......个)
  • 跟:nth-child(odd)同义
nth-child(-n + 2)
  • 代表前2个子元素
<style>
    ul li:nth-child(3) {
      color: red;
    }
    /* 0, 1, 2, 3, 4, 5...... */
    ul li:nth-child(2n) {
      color: green;
    }
    ul li:nth-child(2n + 1) {
      color: rgb(102, 235, 72);
    } */
    div > div:nth-child(4n + 1) {
      color: orange;
    }
    div > div:nth-child(4n + 2) {
      color: purple;
    }
    div > div:nth-child(4n + 3) {
      color: red;
    }
    div > div:nth-child(4n) {
      color: blue;
    }
    /* 前几个 */
    div > div:nth-child(-n + 5) {
      font-size: 20px;
    }
  </style>
  <ul>
    <li>列表元素1</li>
    <li>列表元素2</li>
    <li>列表元素3</li>
    <li>列表元素4</li>
    <li>列表元素5</li>
    <li>列表元素6</li>
  </ul>
  <div>
    <div>列表元素1</div>
    <div>列表元素2</div>
    <div>列表元素3</div>
    <div>列表元素4</div>
    <div>列表元素5</div>
    <div>列表元素6</div>
    <div>列表元素7</div>
    <div>列表元素8</div>
    <div>列表元素9</div>
    <div>列表元素10</div>
  </div>

 

 :nth-last-child( )

从最后一个子元素开始往前计数

  •  :nth-last-child(1),代表倒数第一个子元素
  •  :nth-last-child(-n + 2),代表最后2个子元素

:nth-of-type( )

不同点是:nth-of-type()计数时只计算同种类型的元素

:nth-last-of-type( )

不同点是:nth-last-of-type()从最后一个这种类型的子元素开始往前计数

3.否定伪类

4.伪元素选择器

常用的伪元素有
  • ::before
  • ::after

::before和::after用来在一个元素的内容之前或之后插入其他内容(可以是文字、图片)

常通过 content 属性 来为一个元素添加修饰性的内容。
    /* 伪元素 */
  <style>
    .item::before {
      content: "321";
      color: orange;
      font-size: 20px;
    }
    .item::after {
      content: url("../images/hot_icon.svg");
      font-size: 20px;
      position: relative; /* 相对定位 */
      left: 5px;
      top: 2px;
    }
  </style>
 <div class="item">我是box3</div>

  • ::first-line(选中第一行)
  • ::first-letter (选中第一个字母)
  <style>
    .box {
      width: 800px;
      background-color: #f00;
      color: #fff;
    }
    .box::first-line {
      font-size: 30px;
      color: orange;
    }
    .box::first-letter {
      font-size: 50px;
      color: blue;
    }
  </style>
  
  <div class="box">
    雁门关,别名西陉关 ,坐落于我国山西省忻州市代县以北约成员国20千米的雁门山。它是长城上的一个关键大关,与宁武关、偏关并称之为“外三关”。坐落于偏关县大河上,辖四侧墙,总长度数百公里。迄今仍有30千米储存完好无损,所有用砖遮盖,沿堤岸耸立,十分壮阔。“边关丁宁岩,山连紫塞,地控大河北,鑫城携手共进强。”这也是前人对偏关的赞扬。早在春秋战国时代,这儿便是赵武灵王攻克胡林的竞技场。唐朝名将在关东建有九龙庙,宋代建有魏镇、杨三关。现有的关城始建明洪武二十三年,是重点学科文物古迹。
  </div>

为了区分伪元素和伪类,建议伪元素使用2个冒号::

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

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

相关文章

震坤行亮相2023工博会,并荣获第23届中国工博会“CIIF信息技术奖”

震坤行亮相2023工博会&#xff0c;并荣获第23届中国工博会“CIIF信息技术奖” 2023年9月19日&#xff0c;2023年第23届中国国际工业博览会CIIF&#xff08;以下简称“工博会”&#xff09;在上海国家会展中心盛大开幕。震坤行紧跟智能制造产业发展步伐&#xff0c;携数字化解决…

STM32 invalid UTF-8 in comment 警告解决办法

这里写自定义目录标题 STM32 invalid UTF-8 in comment 警告解决办法问题描述解决办法 STM32 invalid UTF-8 in comment 警告解决办法 问题描述 …/…/libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x\stm32f10x.h(18): warning: invalid UTF-8 in comment [-Winvalid-utf8]…

软件工程第七周

内聚 耦合 (Coupling): 描述的是两个模块之间的相互依赖程度。控制耦合是耦合度的一种&#xff0c;表示一个模块控制另一个模块的流程。高度的耦合会导致软件维护困难&#xff0c;因为改变一个模块可能会对其他模块产生意外的影响。 内聚 (Cohesion): 描述的是模块内部各个元素…

操作教程|如何注册成为Moonbeam社区代表参与治理

社区代表是高度参与社区治理的社区成员&#xff0c;其主要职责是将社区成员委托给他们的投票权参与社区投票&#xff0c;并确保链上治理稳健发展和活跃参与度。本文将向您展示如何快速注册成为社区代表。 首先&#xff0c;前往Moonbeam委托网站&#xff0c;点击网页右上角的“…

【AI视野·今日Robot 机器人论文速览 第五十八期】Thu, 19 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 19 Oct 2023 Totally 25 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers InViG: Benchmarking Interactive Visual Grounding with 500K Human-Robot Interactions Authors Hanbo Zhang, Jie Xu, Yuch…

nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

021-Qt 配置GitHub Copilot

Qt 配置GitHub Copilot 文章目录 Qt 配置GitHub Copilot项目介绍 GitHub Copilot配置 GitHub CopilotQt 前置条件升级QtGitHub Copilot 前置条件激活的了GitHub Copilot账号安装 Neovim 启用插件&#xff0c;重启Qt配置 GitHub Copilo安装Nodejs下载[copilot.vim](https://gith…

计算机网络文章荟萃

脑残式网络编程入门(二)&#xff1a;我们在读写Socket时&#xff0c;究竟在读写什么&#xff1f;-网络编程/专项技术区 - 即时通讯开发者社区! 1.什么是 socket - 掘金2.socket 的实现原理 - 掘金本文讲述了 socket 在 linux 操作系统下的数据结构&#xff0c;以及阻塞 IO 利用…

Linux网络编程:IP协议

目录 一. IP协议的功能 二. IP协议报头 2.1 IP报头的格式 2.2 IP报头各部分含义 三. IP报文的分片问题 3.1 什么是分片 3.2 分片的原理 3.3 合并报文 四. 网段划分 4.1 网络号和主机号 4.2 网络号和主机号的划分策略 4.3 特殊的IP地址 4.4 IP地址数量不足问题 五.…

Git常用的命令有哪些?

一、前言 git 的操作可以通过命令的形式如执行&#xff0c;日常使用就如下图6个命令即可 实际上&#xff0c;如果想要熟练使用&#xff0c;超过60多个命令需要了解&#xff0c;下面则介绍下常见的的git 命令 二、有哪些 配置 Git 自带一个 git config 的工具来帮助设置控制…

初识Java篇

1.介绍Java语言 1.1Java是什么 Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义。 不仅如此&#xff0c;Java还是一个有一系列计算机软件和规范形成的技术体系&#xff0c;这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境&am…

JoySSL证书买二送一买三送二特别活动

数字安全对于网站运营和用户信任至关重要。JoySSL作为一家知名的SSL证书品牌&#xff0c;为了回馈广大用户&#xff0c;推出了买二送一和买三送二的特别活动。 超值优惠&#xff1a;买二送一、买三送二 JoySSL的买二送一和买三送二活动非常有吸引力。在买二送一的活动中&#…

安装docker ,更换docker版本

docker dockerd & containerd Dockerd&#xff08;Docker 守护进程&#xff09;在其底层使用 Containerd 来管理容器。Containerd 是一个开源的容器运行时管理器&#xff0c;由 Docker 公司于2017年开发并开源&#xff0c;它负责实际的容器生命周期管理。 以下是 Docker 守…

简化通知基础设施:开源的消息通知服务 | 开源专题 No.41

novuhq/novu Stars: 22.9k License: MIT Novu 是一个开源的通知基础设施项目&#xff0c;它提供了统一的 API 来通过多个渠道发送通知&#xff0c;包括应用内、推送、电子邮件、短信和聊天。主要功能有&#xff1a; 为所有消息提供商 (应用内、电子邮件、短信、推送和聊天) 提…

javaEE -8(9000字详解网络编程)

一&#xff1a;网络编程基础 1.1 网络资源 所谓的网络资源&#xff0c;其实就是在网络中可以获取的各种数据资源&#xff0c;而所有的网络资源&#xff0c;都是通过网络编程来进行数据传输的。 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff…

解决 Element-ui中 表格(Table)使用 v-if 条件控制列显隐时数据展示错乱的问题

本文 Element-ui 版本 2.x 问题 在 el-table-column 上需根据不同 v-if 条件来控制列显隐时&#xff0c;就会出现列数据展示错乱的情况&#xff08;要么 A 列的数据显示在 B 列上&#xff0c;或者后端返回有数据的但是显示的为空&#xff09;&#xff0c;如下所示。 <tem…

反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )

1、绕过 编译阶段 为集合添加数据 反射是作用在运行时的技术&#xff0c;此时集合的泛型将不能产生约束了&#xff0c;此时是可以 为集合存入其他任意类型的元素的 。泛型只是在编译阶段可以约束集合只能操作某种数据类型&#xff0c;在 编译成Class文件进入 运行阶段 的时候&a…

使用adobe font style 工具绘制的艺术字,请鉴赏。

Adobe Fireflyhttps://firefly.adobe.com/generate/font-styles

广告联盟是什么?app开发者如何选择广告联盟?

在广告变现过程中&#xff0c;广告联盟是必不可少的因素&#xff0c;广告联盟是一种在线广告服务模式&#xff0c;它将广告主和网站主&#xff08;或博主、应用开发者等&#xff09;联系在一起&#xff0c;通过广告联盟平台的中介服务&#xff0c;将广告主的广告投放到网站主的…

记一次vue3实现TRSP大华相机拉流的经历

一、背景 业务场景&#xff0c;大华IP相机安装在A城市某建筑场所&#xff0c;工控机是内网通过4G流量卡上网&#xff0c;工控机通过相机采集数据后做故障识别并上传故障信息到地面服务器&#xff0c;地面服务器在B城市。 现需要在地面服务器提供的WEB界面上实现IP相机实时拉流…