【CSS】选择器(基本选择器、复合选择器、属性匹配选择器、结构伪类选择器、伪元素选择器)

news2024/9/20 20:43:12

选择器

  • 引入方式
  • 基础选择器
  • 复合选择器
  • 属性匹配选择器
  • 结构伪类选择器
  • 伪元素选择器

引入方式

1:外联

<!-- css引入方式1:外联   外联与内嵌优先级相同,取决于加载顺序 -->

<link rel="stylesheet" href="./样式.css">

2:内嵌

<!-- css引入方式2:内嵌(内部样式)   位于 head 标签内 -->

<style>
	.myclass{
	    background-color: pink;
	 }    
</style>

3:内联

<!-- css引入方式3:内联   优先级最高 -->

<div style="background-color: red;"></div>

基础选择器

id选择器类选择器标签选择器通配符选择器

<style>
        div{
        	/* 优先级提到最高(但同样可能会被覆盖): !important */
            background-color: green !important;  
        }

        /* 标签选择器 */
        nav{
            width: 100%;
            height: 75px;
            background-color: yellow;
        }
        
        /* id选择器 */
        #mynav{
            width: 200px;
            height: 200px;
            background-color: green;
        }
        
        /* 类选择器 */
        .myclass{
            background-color: pink;
        }

        /* 通配符选择器 */
        *{
            margin: 0;
            padding: 0;
        }

		/* 优先级:id选择器 > 类选择器 > 标签选择器 > 通配符选择器 */        

    </style>

复合选择器

后代选择器直系选择器并集选择器交集选择器

<style>
        /* css选择器的权重计算: 内联(1000) > id(100)> class(10)> 标签(1)> *(0) */
        #page_header .left img{
            /* id为 page_header的标签下面的类为 left的标签下面的 img标签被选中 */
        }

        /* 后代选择器 */
        #page_header .mynav .left{  /* 100+10+10 */
        	/* 不一定是父子关系 */
            color: green;
        }

        /* 直系选择器 */
        #page_header>nav>.left{  /* 100+1+10 */
            /* 必须是父子关系 */
            color: red;
        }

        /* 并集选择器 */
        nav,li{
            /* 逗号(表示:和)*/
            font-size: 24px;
        }

        /* 交集选择器 */
        li.left{
            /* 紧挨在一起,中间无空格 */
            background-color: aquamarine;
        }
</style>

属性匹配选择器

^*$

<style>
        /* 全匹配 */
        div[class="yangshi"]{
            background-color: gold;
        }

        /* 开头匹配 */
        input[type^="t"] {
	        border: none;
	        border-bottom: 1px solid red;
        } 

        /* 结尾匹配 */
        input[type$="d"] {
	        border: none;
	        border-bottom: 1px solid red;
        }
        
        /* 包含 */
        input[type*="o"] {
	        border: none;
	        border-bottom: 1px solid red;
        } 
</style>

结构伪类选择器

:first-child:first-of-type

<style>
	#myDiv :first-child {
	 background-color: #84c284;
	}
	#myDiv span:first-of-type {
		background-color: #e6a9fc;
	}
	#myDiv2>:first-child {
		background-color: #7eb6ff;
	}
	#myDiv2>span:first-of-type {
		background-color: #ffe054;
	}
</style>
<div id="myDiv">
	<div>我是myDiv的第 1 个孩子div</div>
	<div id="myDiv_2Son">
		<p>我是myDiv_2Son的第 1 个孩子p</p>
		<span>我是myDiv_2Son的第 2 个孩子,第 1 个span</span>
	</div>
	<span>我是myDiv的第 3 个孩子,第 1 个span</span>
</div>
<div id="myDiv2">
	<div>我是myDiv2的第 1 个孩子div</div>
	<div id="myDiv2_2Son">
		<p>我是myDiv2_2Son的第 1 个孩子p</p>
		<span>我是myDiv2_2Son的第 2 个孩子,第 1 个span</span>
	</div>
	<span>我是myDiv2的第 3 个孩子,第 1 个span</span>
</div>

效果:
在这里插入图片描述

:nth-child(n):nth-of-type(n)n从1开始

<style>
	#myDiv :nth-child(2) {
		background-color: #84c284;
	}
	#myDiv p:nth-of-type(2) {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div>我是myDiv的第 1 个孩子div</div>
	<div>我是myDiv的第 2 个孩子div</div>
	<div id="myDiv_3Son">
		<span>我是myDiv_3Son的第 1 个孩子span</span>
		<p>我是myDiv_3Son的第 2 个孩子,第 1 个p</p>
		<p>我是myDiv_3Son的第 3 个孩子,第 2 个p</p>
	</div>
	<p>我是myDiv的第 4 个孩子,第 1 个p</p>
	<p>我是myDiv的第 5 个孩子,第 2 个p</p>
</div>

效果:
在这里插入图片描述

:last-child:last-of-type

<style>
	#myDiv :last-child {
	 background-color: #84c284;
	}
	#myDiv p:last-of-type {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div id="myDiv_1Son">
	<p>我是myDiv_1Son的第 1 个孩子,第 1 个p</p>
		<p>我是myDiv_1Son的第 2 个孩子,第 2 个p</p>
		<span>我是myDiv_1Son的第 3 个孩子span</span>
	</div>
	<p>我是myDiv的第 2 个孩子,第 1 个p</p>
	<p>我是myDiv的第 3 个孩子,第 2 个p</p>
	<div>我是myDiv的第 4 个孩子</div>
</div>

效果:
在这里插入图片描述

:only-child:only-of-type

<style>
	#myDiv :only-child {
		background-color: #84c284;
	}
	#myDiv p:only-of-type {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div id="myDiv_1Son">
		<div>我是myDiv_2Son唯一的孩子</div>
	</div>
	<div>我是myDiv的第 3 个孩子div</div>
	<p>我是myDiv的第 4 个孩子,唯一的p</p>
</div>

效果:
在这里插入图片描述

:not()

<style>
	#myDiv :not(:nth-child(2)) {
		background-color: #84c284;
	}
	#myDiv2 :not(p) {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div>我是第 1 个孩子div</div>
	<p>我是第 2 个孩子p</p>
	<div>我是第 3 个孩子div</div>
</div>
<div id="myDiv2">
	<div>div</div>
	<p>p</p>
</div>

效果:
在这里插入图片描述

:hover:link:visited:active:focus:checked:disabled

<style>
	/*注意: :visited 应该在 :link 之后,:hover 必须位于 :link 和 :visited 之后, :active必须位于 :hover之后*/
	a:link{
		background-color: pink;
	}
	a:visited{
		background-color: #546aff;
	}
	a:hover{
		background-color: #e31dff;
	}
	a:active{
		background-color: #22a200;
	}
	input[type="text"]:focus{
		background-color: #93f879;
	}
	input[type="checkbox"]:checked{
		width: 30px;
		height: 30px;
	}
	button:disabled{
		background-color: #fffb00;
	}
</style>
<a href="./7.定位.html">超链接</a>
<input type="text">
<input type="checkbox">
<button disabled>按钮</button>

效果:
在这里插入图片描述

伪元素选择器

::before::after::selection::first-line::first-letter

<style>
	div::after{
		content: "啦啦啦啦"; /* 在选定元素的内容前插入内容 */
		color: #ef7878;
	}
	div::before{
		content: "嘻嘻嘻嘻"; /* 在选定元素的内容后插入内容 */
		color: #93f879;
	}
	p::selection{
		background-color: #7ffff0;
	}
	p::first-letter{
		font-size: 50px;
		font-weight: 700;
	}
	textarea::first-line{
		color: #e10730;
	}
</style>
<div>文字</div>
<p>可能产生即从次你说说对决是的上的点击菜单扫判搜索</p>
<textarea rows="5" cols="10">可能产生即从次你说说能产生即从次你说说对决是的上的点击菜单搜索</textarea>

效果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的养老院管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Spring Cloud常见面试题

1.请说说你用过Spring Cloud哪些组件&#xff1f;这些组件分别有什么作用&#xff1f; 1、注册中心&#xff1a;Eureka、Nacos、Zookeeper、Consul&#xff1b;&#xff08;服务注册&#xff09; 2、负载均衡&#xff1a;Ribbon、LoadBalancer&#xff1b;&#xff08;客户端的…

文件误删危机应对:数据恢复全解析

文件误删&#xff1a;数字化时代的隐形挑战 在数字化的浪潮中&#xff0c;文件已成为我们工作、学习和生活中不可或缺的一部分。它们记录着我们的思想、成果与回忆&#xff0c;是连接现实与虚拟世界的桥梁。然而&#xff0c;这份便捷与高效背后&#xff0c;却隐藏着文件误删这…

集群聊天服务器项目【C++】(三)muduo库的简单介绍

在上一讲中介绍了Json库的相关知识&#xff0c;本次接着介绍muduo库的相关内容&#xff0c;这些知识在本项目中都会使用到。 1.muduo库简介 muduo库顶层就是epoll&#xff08;IO复用技术&#xff09; Linux的pthread多线程&#xff0c;所以只能安装在Linux系统中。此外它依赖…

Transformer学习(4):位置编码 Positional Encoding

为什么需要位置编码 在自注意力编码中&#xff0c;所有 a a a的计算都并行同时执行得到对应的 b b b&#xff0c;可以并行就代表着 a a a之间是不存在先后顺序关系的&#xff0c;这存在问题。 在不使用位置编码时&#xff0c;将 a 2 a_2 a2​与 a 3 a_3 a3​的顺序打乱&#…

java项目之疫情下图书馆管理系统源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的疫情下图书馆管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息。 项目简介&#xff1a; 疫情下图书馆管理系…

实景三维赋能低空经济:探索天空之城的未来图景

在数字化转型的大潮中&#xff0c;低空经济作为新兴业态正逐渐崭露头角&#xff0c;它不仅拓宽了航空业的边界&#xff0c;也为智慧城市、应急救援、物流配送、旅游观光等领域带来了前所未有的发展机遇。而实景三维技术&#xff0c;作为地理信息与遥感领域的前沿科技&#xff0…

java环境配置 | 基础铺垫

cmd命令 dir : 罗列目录下所有的文件展示出来cd xx : 进入xx文件夹cd … 返回上一级cls : 清除屏幕内容exit : 退出命令提示窗口环境变量 就是存储某个应用路径的变量,通过这个变量可以快速访问到某个应用exe 为什么要配置环境变量? 我们想要在任意的目录下都可以打开指…

小琳AI课堂:o1系列模型

大家好&#xff0c;这里是小琳AI课堂&#xff01;今天我们一起来探索OpenAI最新发布的o1系列模型&#xff0c;这可是AI领域的一大突破哦&#xff01; OpenAI o1系列模型技术大揭秘 o1系列模型是基于强化学习&#xff08;RL&#xff09;训练的&#xff0c;包括o1-preview和o1-…

彩漩科技亮相企业出海峰会,展示智能办公新力量

近日&#xff0c;在北京市海淀区商务局的指导下&#xff0c;由中关村东升科技园联合创新企业科普联盟共同举办的企业出海峰会于北京成功举办。本次峰会以“出海新征程&#xff0c;企业新高度”为核心议题&#xff0c;深入探讨全球化背景下科技企业出海面临的机遇与挑战。通过汇…

IntelliJ IDE 插件开发 | (十二)自定义项目脚手架(上)

系列文章 本系列文章已收录到专栏&#xff0c;交流群号&#xff1a;689220994&#xff0c;也可点击链接加入。 前言 在开发创建一个新项目的时候&#xff0c;我们一般都会使用平台自带的脚手架&#xff0c;如下图所示&#xff1a; 或者是使用网页版&#xff1a; 尽管平台已经…

GoogleDrive中上传文件,Java整合操作

GoogleDrive使用ServiceAccount的授权方式&#xff1a;&#xff08;科学上网&#xff09; 1.在Google Cloud中查看自己的项目&#xff1a;Dashboard – My First Project – Google Cloud console&#xff0c;没有的话新建项目。默认名称&#xff1a;My First Project 2. 创建…

基于 WeChatFerry 的 Python 机器人框架WeChatRobot

WeChatRobot 一个基于 WeChatFerry 的 Python 机器人框架。 微信机器人&#xff0c;接入Gemini、ChatGPT、ChatGLM、讯飞星火、Tigerbot&#xff1b;成语接龙、天气预报、新闻摘要、定时任务 克隆项目&#xff1a; git clone https://github.com/lich0821/WeChatRobot.git …

计算机毕业设计 沉浸式戏曲文化体验系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

百年病态集论的症结:3000年不识伪≌直线段

黄小宁 公元前1100年中国人商高同周公的一段对话谈到了勾股定理说明人类认识几何学的直线段起码已有3000多年。 直角三角形⊿的斜边c&#xff5e;水平直角边a&#xff0c;即c经旋转和均匀压缩变换可变为a&#xff5e;c。3000年不识伪≌直线段使数学认定a经刚体运动变为附着在c…

rk3399 的 HDMI 热插拔的问题

问题&#xff1a; 客户的3399 的板子上&#xff0c;烧写ubuntu 发现&#xff0c; 没有热插拔。 测试情况&#xff1a; 系统在第一次烧写完成之后&#xff0c;是有热插拔的&#xff0c;但是第二次启动就没有了。 还有一个情况&#xff0c;就是 &#xff0c;如果我一开始 上电的…

[论文精读]Polarized message-passing in graph neural networks

论文网址&#xff1a;Polarized message-passing in graph neural networks - ScienceDirect 论文代码&#xff1a;he-tiantian/PMP-GNNs&#xff1a;极化消息传递图神经网络的 Pytorch 实现&#xff0c;发表在 Artificial Intelligence&#xff0c;2024 年。 (github.com) 英…

红日靶场通关

初始准备 首先是网络配置&#xff0c;看教程来的&#xff0c;我配置完的效果如下 windows7&#xff1a;(内&#xff1a;192.168.52.143 / 外&#xff1a;192.168.154.136) windows2003&#xff1a;(内&#xff1a;192.168.52.141)windows2008:&#xff08;内&#xff1a;192.…

运算放大器选型的关键参数

上图中的顺序是从左上到右下进行选型&#xff0c;小信号看带宽&#xff0c;大信号看压摆率。一般选用电压反馈型的运放&#xff0c;但是涉及到高频特性的时候也会选择电流反馈型的运放。精密运放选用失调电压比较小的运放&#xff0c;一般失调电压在1mv左右。低功耗的情况下需要…

极越造车2.0:01销量回暖,07杀出血路,ASD抢跑FSD

‍‍‍作者 |张马也 编辑 |德新 9月13日&#xff0c;极越公布其第二款车型极越07上市48小时内&#xff0c;订单超过5000台。 对这家造车4年多的车企来说&#xff0c;这意味着新车取得了初步的成功。 懂车帝的数据显示&#xff0c;7月极越01销量1143台&#xff0c;8月销量则翻…