好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

html5教程-小tip: CSS后代选择器可能的错误认识

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

&nbs p;

一、关于类选择器的一个问题

假设有下面一个面试题, CSS 代码如下:

. red  { color: red; } .green { color: green; }

HTML 如下:

<div class=" red "><div class=" green "><p>1. 颜色是?</p></div></div> <div class=" green "><div class=" red "><p>2. 颜色是?</p></div></div>

问:第一行和第二行 文字颜色 分别是?

A. 绿 绿

B. 红 红

C. 绿 红

D. 红 绿

VAR radio Class Selector = document.getElementById("classSelector"). getelementsbytagname ("input");for(var index=0; index this .value === "0"){alert("哥,不会吧,你居然选错了!");}else{alert("没错,就是绿色和 红色 颜色!");}}}

这个例子很 简单 ,我估计基本上都能回答正确: DOM 越深的类名权重越高,因此, 第一行文字红色,第二行文字绿色 第一行文字绿色,第二行文字红色!因此,上一题答案为C.

您可以狠狠地点击这里:CSS类名选择器顺序和层级的权重

二、稍作修改: 类选择器 →后代选择器

再来一个题目,如果我们把上例的类选择器改成后代选择器会如何呢?

.red p { color: red; } .green p { color: green; }

HT ML 维持不变:

<div class=" red "><div class=" green "><p>1. 颜色是?</p></div></div> <div class=" green "><div class=" red "><p>2. 颜色是?</p></div></div>

问:第一行和第二行文字颜色分别是?

A. 绿 绿

B. 红 红

C. 绿 红

D. 红 绿

var radioDescSelector = document.getElementById("descSelector").getElementsByTagN am e("input");for(var descIndex=0; descIndex == ="0"){alert("哦呵呵,没想到自己会选错吧!");}else{alert("恩,不错,您选择了正确的答案!");}}}

经验会转化为具象化的认识以帮助我们记忆,然而,这又容易形成固定 思维 ,对一些类似情形造成错误认识。

如果我们按照一 开始 类选择器的例子来隐射这个类似的例子,您可能就会得到错误的答案——这个例子正确选项 不是C .

那正确的选项 应该 是?

您可以狠狠地点击这里:CSS后代选择器顺序和层级的权重demo

您可以在各个浏览器下看到,第一行和第二行的文字都是绿色的,如下截图所示:

也就是说正确选项应该 是A .

为何?

貌似这种后代选择器情形,祖先选择器对应DOM无论多深多浅都是同一级别的,而最终起作用的是选择器声明在CSS样式中的顺序,即优先显示后面的CSS声明。

本例中, .green p { color: green; } 在 .red p { color: red; } 的后面显示,因此,两行文字都是绿色的。要是我们改成下面:

.green p { color: green; }      /* 我在上,酱油命 */  .red p { color: red; }      /* 我在下,显示我 */ 

那么,两行文字就变身为红色了。

如果您目前手头上的是现代浏览器,可以点击这里,编辑下CSS代码顺序(FireFox下剪切粘贴有些问题,手动输入),会看到右侧文字果不其然红色了~~


三、再留个问题

改下CSS代码:

:not(.green)  p { color: red; } .green p { color: green; }

HTML代码维持不变:

<div class=" red "><div class=" green "><p>1. 颜色是?</p></div></div> <div class=" green "><div class=" red "><p>2. 颜色是?</p></div></div>

问:第一行和第二行文字颜色分别是?

您可以通过评论的形式写下您认为的答案~~

(本篇完)

觉得 可用,就经常来吧! 欢迎评论哦!  html5教程 ,巧夺天工,精雕玉琢。小宝典献丑了!

总结

以上是 为你收集整理的 html5教程-小tip: CSS后代选择器可能的错误认识 全部内容,希望文章能够帮你解决 html5教程-小tip: CSS后代选择器可能的错误认识 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于html5教程-小tip: CSS后代选择器可能的错误认识的详细内容...

  阅读:53次