首页 > 其他分享 >CSS - 选择器详解 - 子代、后代选择器详解 - 伪类选择器 - 测试

CSS - 选择器详解 - 子代、后代选择器详解 - 伪类选择器 - 测试

时间:2023-03-24 16:57:11浏览次数:47  
标签:style 伪类 标签 li ul 详解 id 选择器

@

目录

测试准备:

新建一个测试项目文件夹 test,然后在 test 文件夹内新建一个名为 css 的文件夹,创建一个名为 style.css的文件,最后在test文件夹下新建一个 test.html 文件。
test
| —— |
| ——css —— style.css
|
test.html

子代选择器 >

选择子节点
父节点 (父标签)
|
子节点 (子标签)

eg:

<ul>
  <li> </li>
  <li> </li>
  <li> </li>
</ul>

ul 是父标签,而 li 是子标签

既然是子代选择器,那么不可能会选择到孙子辈,对吧,如下所示:

<ul id="father">
  <li id="son"> 
	<ul id="grandson">
	</ul>
  </li>
  <li> </li>
  <li> </li>
</ul>

在 CSS 中,我们使用如下选择器示例

ul > li

那么就是在指定只有 idfatherul 下的,idsonli 标签,而不会去影响 idgrandson 的 ul 标签。

测试代码:

Html 文件代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Muxiu Test</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
</head>
<body>

<h2>JavaScript 对象</h2>
	
	<ul>
        <li id="demo1">
			<p id="demo2">muxiu1</p>

		</li>
		
		<li id="demo3">
			<p id="demo4">muxiu2</p>

		</li>

		<button onclick="myfunction(this)">点我后就变帅变靓</button>
        
	</ul>

	
</body>
</html>

css 文件代码:(先注释代码)

/* ul > li{

    list-style: none;
} */

初始图:
在这里插入图片描述
按钮不用管,只是随便加的。重点看列表,看到那个 黑点了吗?
每一个列表默认会存在这个黑点,代表它们是列表,所以接下来的操作,就是让它消失,用 CSS 样式,指定 ul>li 子代选择器样式

将 css 文件注释解除:如下所示

ul > li{

    list-style: none;
}

结果图:(重新打开 HTML文件) 发现黑点消失,list-style 是指定列表样式的属性,none 代表不要黑点。

在这里插入图片描述

指定id的子代选择器

ul#father > li#son

意思是 ul 标签 id 为 father 的 li 标签 id 为 son 的选择器

html 测试代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Muxiu Test</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
</head>
<body>

<h2>JavaScript 对象</h2>
	
	<ul id="demo">
        <li id="demo1">
			<p id="demo2">muxiu1</p>

		</li>
		
		<li id="demo3">
			<p id="demo4">muxiu2</p>

		</li>

		<button onclick="myfunction(this)">点我后就变帅变靓</button>
        
	</ul>

</body>
</html>

css 文件代码:

ul#demo > li#demo1{

    list-style: none;
}

结果图:
在这里插入图片描述
看来,是把iddemoul 标签内 iddemo1li 标签的 list-style 设置为 none 了。

还有这里就没弄 类选择器的测试了,把id 选择器改成 class 类选择器,不用多说了吧。

后代选择器 (以空格隔开)

指定第一个为祖宗节点,第二个的作为姓氏,那么每一个该姓氏的节点,都会被影响到。

祖宗节点 (祖宗标签)
|
子节点 (子标签)
|
孙子节点 (孙子标签)
|
曾孙子节点 (曾孙子标签)
|
曾曾孙子节点 (曾曾孙子标签)
|
。。。

特别特别注意:在这里每一个空格都是有其意义的,有空格和没空格,是两个不同的概念。

指定 id 的后代选择器

指定 class 类 的后代选择器

div.contain .blue{color:blue;}
以上规则的结果为:“所有class属性值为contain的div元素,其后代中class属性值为blue的任何元素显示为蓝色字体”。

div.contain.blue{color:blue;}
以上规则的不同之处在于,'.contain' 类选择器 与'.blue' 类选择器之间少了一个空格!少了空格,以上选择器就不是后代选择器了,而是另外一种选择器:“多类选择器”。

多类选择器:指的是 div 标签,定义了多个类,如下所示:

<div class="contain blue">

</div>

div 标签定义了多个类

通过这样讲解,可以类比上面的子代选择器,结合类 class 和 id 选择器,灵活运用这两种选择器。

多空格后代选择器详解 (特别重要)

有时候会看见某些 css 文件内有多个空格隔开的样式,那么如何理解其中道道?看测试。

Html 文件测试代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Muxiu Test</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
</head>
<body>

<h2>JavaScript 对象</h2>
	
	<ul id="demo">
        <li id="demo1">
			
			<p id="demo2">muxiu1</p>
			<ul>
				<li>
					<p id="demo2">muxiu1.1</p>
				</li>
			</ul>

		</li>
		
		<li id="demo3">
			<p id="demo4">muxiu2</p>

		</li>

		<button onclick="myfunction(this)">点我后就变帅变靓</button>
        
	</ul>

	
</body>
</html>

css 文件测试代码:

ul li {

    list-style: none;
    /* color: green; */
}

初始结果图:

在这里插入图片描述

可以看到,由于设置了 list-style:none 的样式配置,列表的黑点消失了。

如果把 list-style 样式取消了,即注释掉 css 文件内的所有 css 样式,结果如下:

/* ul li{

    list-style: none;
    color: green;
} */

在这里插入图片描述

好了,接下来重头戏来了。

Html 文件的代码不变,css 文件的代码修改如下:

ul li p{

    list-style: none;
    color: green;
}

color 是修改字体颜色的样式属性,list-style 是列表黑点是否表现的样式属性。

那么接下来,重新打开 Html 文件。结果如下所示:

在这里插入图片描述
可以看到,字体改变了颜色,但是列表的黑点却显示了,之前是已经测试过的,黑点是消失的,但是如今却显示出来了,所以列表的样式配置没了,只有 p 标签的样式存在。所以这个后代选择器的多个空格,我们可以推导出来,只有最后的才是真正的起作用的对象,这里是 p 标签,那么只对 p 标签,所拥有的样式属性才能生效,其他的不属于 p 标签的样式属性,则被忽略了。

这一段话,非常非常重要,经测试得出。

接下来还有。

Html 文件测试代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Muxiu Test</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
</head>
<body>

<h2>JavaScript 对象</h2>
	
	<ul id="demo">
        <li id="demo1">
			
			<p id="demo2">muxiu1</p>
			<ul>
				<li>
					<p id="demo2">muxiu1.1</p>
				</li>
			</ul>

		</li>
		
		<li id="demo3">
			<p id="demo4">muxiu2</p>

		</li>

		<button onclick="myfunction(this)">点我后就变帅变靓</button>
        
	</ul>
	<!-- 新增 -->
	<p>muxiu3</p>

	
</body>
</html>

css 文件测试代码:

ul li p{

    list-style: none;
    color: green;
}

运行结果:

在这里插入图片描述
可以看到iddemoul 标签外的 p 标签不受影响,所以这个 ul li p 样式,被限制在iddemoul 标签内

伪类选择器 :

一个或两个冒号后的都是伪类选择器,肯定没有三个冒号

参考链接:

浅谈CSS选择器中的空格 - 爱码网

总结30个css选择器

标签:style,伪类,标签,li,ul,详解,id,选择器
From: https://www.cnblogs.com/Loki-Severus/p/17252658.html

相关文章

  • Centos 7 - uWSGI服务器 虚拟环境配置详解及
    @目录1.系统环境2.uWSGI安装3.虚拟环境配置3.1创建虚拟环境3.2启动虚拟环境虚拟环境内安装uwsgi4.uwsgi.ini配置模板5.uWSGI服务器无法识别虚拟环境内的python解释......
  • 一文详解vue-cli2.0与vue-cli3.0之间的区别
    我们之所以介绍vue-cli2和vue-cli3的使用和区别,是因为VUE脚手架工具从vue-cli3版本开始,在项目结构等诸多方面开始与vue-cli2版本相比,有较大的优化与调整。因此,在学习和工......
  • Stream流使用详解
    一、流的定义流是从支持数据处理操作的源生成的元素序列,源可以是数组、文件、集合、函数。流不是集合元素,它不是数据结构并不保存数据,它的主要目的在于计算。二、生成流......
  • .md文件格式详解,即markdown文件语法。记笔利器
    Markdown是一种轻量级的标记语言。Markdown虽然功能不是很强大,但是非常简单好用1、标题(#)标题(h1~h6标签)格式:#一级标题##二级标题###三级标题2、段落(空行)段落......
  • docker-compose.yml 参数详解
    示例文件:docker-compose.ymlversion:'3.8'#DockerCompose文件版本号services:#定义应用程序中的服务,每个服务对应一个容器web:#定义一个名为web的服务......
  • CSS :first-child 伪类
    CSS:first-child伪类您可以使用:first-child伪类来选择父元素的第一个子元素。注意:在IE8的之前版本必须声明<!DOCTYPE> ,这样:first-child才能生效。匹配第一个<......
  • 伪类和CSS类
    伪类和CSS类伪类可以与CSS类配合使用:a.red:visited{color:#FF0000;}<aclass="red"href="css-syntax.html">CSS语法</a>如果在上面的例子的链接已被访问,它会......
  • CSS - :lang 伪类
    CSS-:lang伪类:lang伪类使你有能力为不同的语言定义特殊的规则注意:IE8必须声明<!DOCTYPE>才能支持;lang伪类。在下面的例子中,:lang类为属性值为no的q元素定义引......
  • css基础 CSS 组合选择符、CSS 伪类、CSS 伪元素
    阅读目录CSS组合选择符后代选择器子元素选择器相邻兄弟选择器后续兄弟选择器CSS伪类(Pseudo-classes)伪类和CSS类CSS:first-child伪类匹配第一个``元素匹配所有......
  • Linux GRUB加密方法详解(2种加密方式)
    转至:http://c.biancheng.net/view/1036.htmlLinux在启动时,在GRUB管理界面中是可以通过按"e"键进入编辑模式,修改启动选项的。图1GRUB界面如图1所示,每个启动选项......