htmlCSS-----高级选择器

news/2024/10/20 11:25:22/

 目录

前言

伪类选择器

状态类

结构类

 伪元素选择器

属性选择器 


前言

        前面我们学习了CSS中的相关选择器(链接html&CSS-----CSS选择器(上)_灰勒塔德的博客-CSDN博客    html&CSS-----CSS选择器(下)_灰勒塔德的博客-CSDN博客)今天我们接着学习比较高级的选择器,下面就一起来去看看吧!

伪类选择器

当你希望元素在特定的状态下发生样式的变化时,可以使用伪类选择器。

  • 状态类

    写法介绍举例
    :hover鼠标悬停a:hover{color:pink;}
    :link未被访问的链接(特指a标签)a:link{color:red};
    :visited被访问过的链接(特指a标签)a:visited{color:blue;}
    :active被点击按下状态a:active{color:green;}

 :hover :active 不仅仅能用在a标签上。

:hover最为常用最为重要。

可以进一步在伪类后进行选择,比如:#wrap:hover .nav{display:none;

写法介绍举例
:focus获得焦点状态(接收键盘事件或其他用户输入的元素都允许 :focus 选择器。)input:focus{border:1px solid blue;}
:checked(单选/多选)表单被勾选状态input:checked{background-color:#aaa;}

 下面看个示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{font-size: 30px;}.first ul li:hover{color: violet;}.second a:link{/* 这里可以改变未被访问时的a标签颜色(样式) */color: red;}.third{color: green;}.forth:active{color: blue;}</style>
</head>
<body><!-- :hover选择器 --><div class="first"><ul><li>《Re:从零开始的异世界生活》</li><li>《来着新世界》</li><li>《紫罗兰永恒花园》</li></ul></div><!-- :link选择器 --><div class="second"><a href="www.baidu.com">访问百度</a></div><!-- :visited选择器 --><div class="third"><a href="www.baidu.com" target="_blank">访问baidu</a></div><!-- :active选择器 --><div class="forth">点我变颜色,看看吧</div>
</body>
</html>

 效果如下:

1691821211078

结构类

写法介绍举例
E:nth-child(n)这个表示选择列表中的倒数第n个标签p:nth-child(2){color:red;}
E:nth-of-type(n)E元素父级的第n个E元素,无视其他元素p:nth-of-type(2){color:red;}
E:first-childE元素父级的第一个子元素(该子元素需要满足E的选择规则,不满足则不会选中任何元素)p:first-child{color:red;}
E:last-childE元素父级的最后一个子元素(该子元素需要满足E的选择规则,不满足则不会选中任何元素)p:last-child{color:red;}

上述选择器 n 所表示的可以是一个 数字 或者 奇数odd 或者 偶数even 或者 一个表达式。

 :nth-child(n) :nth-of-type(n)有对应的“倒着数”属性 :nth-last-child(n) :nth-last-of-type(n)

 下面看个示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{font-size: 30px;}ul li:first-child{color: red;}ul li:last-child{color: red;}</style>
</head>
<body><ul><div>start</div><li>1</li><li>2</li><li>3</li><!-- <div>end</div> --></ul>
</body>
</html>

效果: 这里要注意first-child和last-child这两个选择器的使用,因为这里作用的标签必须是父类元素的第一个或者最后一个,否则不起效果,如上所示。

 伪元素选择器

伪类选择器相当于在某种情况下添加一个虚拟类名,而伪元素选择器则是相当于创建了一个虚拟元素。

写法介绍举例
E::before相当于在E元素的最前面添加一个额外的子元素#wrap::before{content:"Hello World!"}
E::after相当于在E元素的最后面添加一个额外的子元素#wrap::after{content:"Hello World!"}

必须拥有 content 样式,上述两个伪元素才会生效。

创建的子元素是一个行内元素

::after常用来清除浮动。

content 除了写文字之外,还可以用url指定一张图片等其他写法。

        /* 消除浮动自适应问题的写法 */E::after{content: '';display: block;clear: both; }

属性选择器 

这一类选择器跟正则匹配搭配使用,实际上并不是怎么用到,比较少用的那种,我们可以去选择性的去使用 

[attr]属性选择器(拥有attr标签属性)[title]{ color:red; }
[attr=val]属性选择器(拥有标签属性attr并值为val)[target=_blank]{ color:red; }
[attr*=val]属性选择器(拥有标签属性attr并值包含val)[src*=baidu]{border:5px solid pink;}
[attr$=val]属性选择器(拥有标签属性attr并值以val结尾)[src~=jpg]{ border:5px solid pink; }
[attr^=val]属性选择器(拥有标签属性attr并值以val开头)[class^=nav]{ background:pink; }
选择规则1选择规则2复合选择器(多个规则来匹配元素)div.nav.left{ width:100px; } 有nav和left类名的div标签

 下面看个示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{font-size: 30px;}/* 这里匹配到的是含有o字母的选择器 */div[class*='o']{color: blueviolet;}</style>
</head>
<body><div class="hhh">哈喽哦</div><div class="food">吃饭了吗</div><div class="look">快看快看</div>
</body>
</html>

效果:

 好了,以上就是今天的全部内容了,我们下一期再见!

分享一张壁纸:

咒术回战 - 知乎


http://www.ppmy.cn/news/1026276.html

相关文章

【Linux】线程的互斥

目录 写在前面的话 相关背景概念 什么是互斥 互斥锁&#xff08;互斥量&#xff09; 互斥锁的使用 一些相关的问题 线程安全和可重入的区别 写在前面的话 本文章主要介绍了线程的互斥的相关内容&#xff0c;而且本文的概念也比较多&#xff0c;所以需要有一些前提知识作…

面试题:HashMap常见面试题

HashMap是什么&#xff1f; HashMap是Java中的一个集合类&#xff0c;它实现了Map接口&#xff0c;使用键值对的方式存储数据。HashMap中的键和值都可以为null&#xff0c;同时HashMap是无序的&#xff0c;即不能保证存入的顺序和取出的顺序一致。 HashMap的底层实现原理是什么…

在 SHELL 脚本中调用另一个 SHELL 脚本(报错: go: not found)

文章目录 在 SHELL 脚本中调用另一个 SHELL 脚本&#xff08;报错&#xff1a; go: not found&#xff09;在 SHELL 脚本中调用另一个 SHELL 脚本一个脚本sudo调另外一个脚本&#xff0c;报错&#xff08;报错&#xff1a; go: not found&#xff09; 在 SHELL 脚本中调用另一个…

STM32F429IGT6使用CubeMX配置按键检测

1、硬件电路 2、设置RCC&#xff0c;选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、生成工程配置 5、部分代码 /* USER CODE BEGIN 0 */ //按键检测函数 void KEY_Test(void) {if(SET HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)){while(SET HAL_GPIO_ReadPin(…

质量小议29 -- 循证

1. 循证 Evidence-Based遵循证据基于证据慎重、准确和明智地应用当前所能获得的最好研究依据利用证据追求实践科学化和专业化的价值观&#xff0c;重视证据指导实践的理念&#xff0c;运用证据解决实践中问题的思维&#xff0c;基于证据开展专业实践活动的指导原则&#xff0c…

工程优化问题之三杆桁架设计研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Rust】Rust学习 第十章泛型、trait 和生命周期

泛型是具体类型或其他属性的抽象替代。我们可以表达泛型的属性&#xff0c;比如他们的行为或如何与其他泛型相关联&#xff0c;而不需要在编写和编译代码时知道他们在这里实际上代表什么。 之后&#xff0c;我们讨论 trait&#xff0c;这是一个定义泛型行为的方法。trait 可以…

【leetcode】151. 反转字符串中的单词(medium)

给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在前导空格、尾随…