当前位置: 首页 > 面试题库 >

如何判断jQuery是否继承了特定的CSS属性?

郜俊晤
2023-03-14
问题内容

这是一个非常简单的问题,因此我将对其进行简短介绍:

如何判断特定DOM元素的CSS属性是否被继承?

我问的原因是因为使用jQuerycss方法,它将返回计算的样式,该样式继承了父对象的CSS属性。有没有办法检索在对象本身上设置的属性?

一个例子可以解释我的进步:

CSS:

div#container {
  color:#fff;
}

HTML:

<div id="container">
  Something that should be interesting
  <div class="black">
    Some other thing that should be interesting
  </div>
</div>

因此,在div.black继承的实例中,color如何判断它是否被继承了?

$('div.black:eq(0)').css('color')显然会给我#fff,但我想检索元素 本身 的样式,而不是其父元素。


问题答案:

要实际确定css样式是继承还是设置在元素本身上,您必须实现浏览器应用的确切规则,以确定元素上特定样式的使用值。

您将必须实现此规范,该规范指定如何计算计算值和使用值。

CSS选择器可能并不总是遵循父子关系,这可能简化了事情。考虑一下这个CSS。

body {
    color: red;
}

div + div {
    color: red;
}

以及以下HTML:

<body>
    <div>first</div>
    <div>second</div>
</body>

无论firstsecond西港岛线显示为红色,然而,第一个div是红色的,因为它继承父它。第二个div是红色的,因为div + divCSS规则适用于它,这更 具体 。看一下父级,我们会看到它具有相同的颜色,但这不是第二个div从中获取它的地方。

浏览器除了getComputedStyle界面之外,不公开任何内部计算。

一个简单但 有缺陷的 解决方案是遍历样式表中的每个选择器,并检查给定元素是否满足选择器。如果是,则 假定
样式直接应用于元素。假设您想浏览第一个样式表中的每个样式,

var myElement = $('..');
var rules = document.styleSheets[0].cssRules;
for(var i = 0; i < rules.length; i++) {
    if (myElement.is(rules[i].selectorText)) {
        console.log('style was directly applied to the element');
    }
}


 类似资料:
  • 问题内容: 我注意到有些属性是在CSS中继承的,而有些则不是。例如,text-size属性是继承的,但是padding和margin不被子块继承。那么如何确定哪些属性是继承的,哪些不是? 问题答案: 这是所有可继承属性的列表。我正在使用W3C的信息,所以我认为它 应该 是正确的。但是了解网络浏览器(特别是IE)后,其中一些可能并非所有浏览器都可以继承:

  • 我下载了封装在zip文件中的proGuard,并将其解压缩到我的硬盘上。我没有以任何方式安装它(因为我不知道如何安装)。然后,我将添加到我的project.properties文件中。然后我做了一个“导出Android应用程序”,完全期待eclipse抱怨它不知道我的proGuard安装在哪里,但没有抱怨。事实上,一个新的apk文件出现在我的keystore中,一组文件(dump.txt等)出现在

  • 我有一台电脑,我故意安装了JDK。我有另一台带有JRE的计算机,除其他外,用于测试。然而,当我在这台计算机上使用一个java应用程序,然后在另一台计算机上试用时,它抱怨说需要JDK。如何检查系统上是否安装了JDK?注意:有问题的计算机是Mac。

  • 问题内容: 从字体的color属性继承边框颜色是否正常?我很惊讶地发现: 给我一个带红色边框的div。通常不指定颜色将默认为黑色。这个奇怪的继承是什么? 问题答案: 根据相关背景和边框模块规范的第4.1节,初始值为:border-colorcurrentColor 根据相关背景和边框模块规范的第4.1节,初始值为: CSS颜色模块-4.4。颜色关键字 CSS1和CSS2将属性的初始值定义为属性的值

  • 问题内容: 我已经读过1000多个位置,这些位置不继承静态变量。但是,这段代码如何正常工作? Parent.java Child.java 此代码显示“父母”。 还阅读了一些隐藏数据的概念。 Parent.java Child.java 现在输出为“ Child”。 那么这是否意味着 静态变量被继承,但是它们遵循数据隐藏的概念 ? 问题答案: 请查看oracle的文档:http : //docs.

  • 本文向大家介绍JS对象是否拥有某属性如何判断,包括了JS对象是否拥有某属性如何判断的使用技巧和注意事项,需要的朋友参考一下 JS对象是否拥有某属性 两种方式,但稍有区别 1,in 运算符 可看到无论是name,还是原形链上的toString,都能检测到返回true。  2,hasOwnProperty 方法 原型链上继承过来的属性无法通过hasOwnProperty检测到,返回false。 需注意