how2j.cn


工具版本兼容问题
选择器主要分3种
元素选择器
id选择器
类选择器


示例 1 : 元素选择器   
示例 2 : id选择器   
示例 3 : 类选择器   
示例 4 : 更准确的选择   

元素选择器通过标签名选择元素
在实例中,所有的p都被设置成红色
运行效果
<style> p{ color:red; } </style> <p>p元素</p> <p>p元素</p> <p>p元素</p>
<style>
p{
  color:red;
}
</style>

<p>p元素</p>
<p>p元素</p>
<p>p元素</p>



源代码
1. 双击选中单词 2. 三击选中整行 3. CTRL+F 查找 4. F8 全屏编辑,再次点击恢复
渲染中 渲染完成
效果
通过id选择元素
注: 一个元素的id应该是唯一的。另一个元素不应该重复使用
运行效果
<style> p{ color:red; } #p1{ color:blue; } #p2{ color:green; } </style> <p>没有id的p</p> <p id="p1">id=p1的p</p> <p id="p2">id=p2的p</p>
<style>
p{
  color:red;
}
#p1{
  color:blue;
}
#p2{
  color:green;
}
</style>

<p>没有id的p</p>
<p id="p1">id=p1的p</p>
<p id="p2">id=p2的p</p>


源代码
1. 双击选中单词 2. 三击选中整行 3. CTRL+F 查找 4. F8 全屏编辑,再次点击恢复
渲染中 渲染完成
效果
当需要多个元素,都使用同样的css的时候,就会使用类选择器
运行效果
<style> .pre{ color:blue; } .after{ color:green; } </style> <p class="pre">前3个</p> <p class="pre">前3个</p> <p class="pre">前3个</p> <p class="after">后3个</p> <p class="after">后3个</p> <p class="after">后3个</p>
<style>
.pre{
  color:blue;
}
.after{
  color:green;
}
</style>

<p class="pre">前3个</p>
<p class="pre">前3个</p>
<p class="pre">前3个</p>

<p class="after">后3个</p>
<p class="after">后3个</p>
<p class="after">后3个</p>



源代码
1. 双击选中单词 2. 三击选中整行 3. CTRL+F 查找 4. F8 全屏编辑,再次点击恢复
渲染中 渲染完成
效果
示例 4 :

更准确的选择

edit
同时根据元素名和class来选择
p.blue
运行效果
<style> p.blue{ color:blue; } </style> <p class="blue">class=blue的p</p> <span class="blue">class=blue的span</span>
<style>

p.blue{
  color:blue;
}

</style>

<p class="blue">class=blue的p</p>

<span class="blue">class=blue的span</span>


源代码
1. 双击选中单词 2. 三击选中整行 3. CTRL+F 查找 4. F8 全屏编辑,再次点击恢复
渲染中 渲染完成
效果


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-07-20 p.blue{ color:blue; }
qwer123qw001

最后一个更准确的选择 到底是表达了个什么意思




2 个答案

庄胜文
答案时间:2020-01-18
div中class和id有什么区别? 1. class是设置标签的类, class属性用于指定元素属于何种样式的类。 如样式表可以加入.content1 { color: red; background: #ff80c0 } 使用方法:class="content1" . id是设置标签的标识。id属性用于定义一个元素的独特的样式。如一个CSS规则#content2 { font-size: larger } 使用方法为:id="content2" 概念上说不一样(下面的两句话还是比较精辟的): class是一个样式,先定义好, 然后可以套给多个结构/内容, 便于复用。也就是说class名称可以相同。 id是一个标签,用于区分不同的结构和内容,就象你的名字, 如果一个屋子有2个人同名,就会出现混淆;id是先找到结构/内容,再给它定义样式; 2.属性的优先级问题 id的优先级要高于class, 可以自己写个例子看看。部分代码如下(是我写的, 不是原作者写的哈): <html> <head> <style type="text/css"> #aa { color:red } .aa { color:blue } </style> </head> <body> <div id="aa" class="aa">I love you.</div> </body> </html> 3. 关于js 如果在页面中要对某个对象进行脚本操作(js),那么可以给他定义一个id,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个id来得简单.

Lmy199612
答案时间:2019-07-20
类似 元素:类名 可以用来区分不同元素但是类名相同的,比如你的tr和input,里面都有pro类,单单用 .pro 是无法进行区分的,此时就需要用到 tr.pro 或者 table.pro 这种类型的选择器了。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-08-05 关于优先级的问题。
神乐




我在代码中分别把上面提到的四个情况都试了一遍。 然后发现元素选择器(设置p元素的文字为红色)并不能影响别的p元素中其他选择器的正常使用。 是不是可以说明元素选择器优先级较低。还是说它们的优先级一样但是要根据实际元素中选择 使用的选择器来决定显示的文字颜色
<html>
<meta charset="utf-8" />
<style>
p{
	color:#ff0000;
}
#demo1{
	color:#00ff00;
}
.demo2{
	color:#0000ff;
}
p.demo3{
	color:#0FF;
}
</style>
<body>
<p>使用元素选择器的p</p>
<p id="demo1">使用id选择器的p</p>
<p class="demo2">使用类别选择器的p</p>
<p class="demo3">使用了demo3类别的p元素才会受到该类别选择器影响</p>
</body>
</html>

							


1 个答案

庄胜文
答案时间:2020-01-18
ol:ordered lists(有序列表) ul:unordered lists(无序列表) li:list item 列表项目 严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。而在标签内写入style=""的方式,应该是CSS的一种引入方式,而不是选择器,因为根本就没有用到选择器。而一般人们将上面这几种方式结合在一起,所以就有了5种或6种选择器了。 css选择器 最基本的选择器是元素选择器(比如div),ID选择器(比如#header)还有类选择器(比如.tweet)。 一些的不常见的选择器包括伪类选择器(:hover),很多复杂的CSS3和正则选择器,比如:first-child,class ^= “grid-”。CSS选择器具有高效的继承性,引用Steve Souders的话, CSS选择器效率从高到低的排序如下: 1.id选择器(#myid) 2.类选择器(.myclassname) 3.标签选择器(div,h1,p) 4.相邻选择器(h1+p) 5.子选择器(ul > li) 6.后代选择器(li a) 7.通配符选择器(*) 8.属性选择器(a[rel="external"]) 9.伪类选择器(a:hover, li:nth-child) 选择器的优先级是怎么规定的呢? 一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。通常我们用1表示标签名选择器的优先级,用10表示类选择器的优先级,用100标示ID选择器的优先级。比如上例当中 .polaris span {color:red;}的选择器优先级是 10 + 1 也就是11;而 .polaris 的优先级是10;浏览器自然会显示红色的字。理解了这个道理之后下面的优先级计算自是易如反掌: div.test1 .span var 优先级 1+10 +10 +1 span#xxx .songs li 优先级1+100 + 10 + 1 #xxx li 优先级 100 + 1 对于什么情况下使用什么选择器,用不同选择器的原则是: 1、准确的选到要控制的标签; 2、使用最合理优先级的选择器; 3、HTML和CSS代码尽量简洁美观。通常: ①最常用的选择器是类选择器。 ②li、td、dd等经常大量连续出现,并且样式相同或者相类似的标签,我们采用类选择器跟标签名选择器结合的后代选择器 .xx li/td/dd {} 的方式选择。 ③极少的情况下会用ID选择器,当然很多前端开发人员喜欢header,footer,banner,conntent设置成ID选择器的,因为相同的样式在一个页面里不可能有第二次。 在这里不得不提使用在标签内引入CSS的方式来写CSS,即: <div style="color:red">polaris</div> 这时候的优先级是最高的。我们给它的优先级是1000,这种写法不推荐使用,特别是对新手来说。这也完全违背了内容和显示分离的思想。DIV+CSS的优点也不能再有任何体现。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-12-01 建议添加个选择器优先级
2017-09-22 元素的id重复
2017-05-27 发现id不能为数字?
2017-05-27 好像也可以用p#p1来选择p标签id=p1的元素
2016-06-14 一段只能使用一个选择器




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 前端部分-CSS-选择器 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图