【问题标题】:Why does this chained :not selector not work? [duplicate]为什么这个链接的 :not 选择器不起作用? [复制]
【发布时间】:2015-03-26 00:00:52
【问题描述】:

我有一个受 .img 类影响的子 div。

虽然我为此 div 插入 :not 选择器

.main .content .index-exp .img:not(#view-image):not(.view-image){ /*rest*/ }

它仍然影响我的 div,这伤害了我的大脑。

如果我删除 :not(#view-image) 它会按预期工作,

但由于.img:not(#view-image):not(.view-image) 链接不工作。

我知道这种用法是正确的。

可能是什么问题。

这里是http://jsfiddle.net/x80vm7y8/6/ 地址。

我的结果

预期结果是

<div class="main">
    <div class="content">
    <div class="index-exp">
<div class="container">
<div class="viewers">
    <div class="product-exp">
        <div class="view-exp">      
            <div class="content">
                <div class="inquiry-form">
                    <form action="http://akasiayachting.com/wp-content/themes/active3/php/get_sendmail/get_sendmail.php" method="post" name="inquiry-form">
                        <div>
                            <span class="img"><img class="view-image" id="captcha" src="http://akasiayachting.com/wp-content/themes/active3/php/get_captcha/get_captcha.php" /></span>
                            <span class="img"><img class="view-image" id="code-refresh" src="http://akasiayachting.com/wp-content/themes/active3/views/active-71-detail/images/form-icon-refresh.png" /></span>
                            <input name="code-verification" type="text" class="code-verification" value="Security Code" />
                            <input name="submit" type="submit" value="Send Inquiry" />
                        </div>
                    </form><!-- #form -->
                </div><!-- #inquiry-form -->
            </div><!-- #content -->
        </div><!-- #view-exp -->
    </div><!-- #product-exp -->
    </div><!-- #viewers -->    
</div><!-- #container -->
</div>
</div>
</div>

【问题讨论】:

  • 看起来.view-image 仅在img 标记上,而不在.img 类上,甚至没有#view-image。如果您可以稍微简化一下这将有所帮助,即使小提琴中的 css 数量也很难通过
  • 一个简化的示例将更容易查看代码。
  • 1.#view-image 在哪里? 2. 将小提琴中的 CSS 大大减少到最低限度,以便我们更容易调试。 3. 拥有一个与 HTML 元素相同的类 (.img) 绝不是一个好主意,拥有相同的 ID 和类 .view-image/@987654337 也不是一个好习惯@。这不会引起问题,但会降低代码的可维护性。
  • @RocketHazmat 查看 css 侧链接 69
  • 这里 w3.org 用法w3.org/TR/selectors4/#negation

标签: html css css-selectors


【解决方案1】:

我认为问题出在 ID 上,当您给它一个 :not(#xxx) 时,它会赋予选择器更多的特异性,当这种情况发生时,它会覆盖之前定义中的样式,这就是您看到错误样式的原因。一旦你删除它,它就可以工作,因为之前定义的样式更具体。

您可以使用检查器看到这一点,它显示了带有和不带有 id 的样式(删除 id 部分并重新运行)

这是你想要的定义

.viewers .product-exp .view-exp .content .inquiry-form div span.img

但是当您添加 ID 时,第 69 行将应用并覆盖它。

最简单的做法是将一个类添加到#view-image 元素并将not 定位到该类,类似于

.main .content .index-exp .img:not(.new_class):not(.view-image){ /*rest*/ }

【讨论】:

  • 我将#view-image 更改为#test 但问题仍然存在。所以我不应该在上课前使用id 选择器?
  • 您是否有特定原因需要排除该 ID?
  • @DenizPorsuk 如果您使用任何 ID,它将覆盖其他样式。如果你需要排除一个 ID,你可以,但你需要确保定义的样式是你想要的,因为它会在给定当前代码的情况下覆盖你以前的样式。
  • @BoltClock 我在另一个地方使用它。但我可以更改它的名称。
  • @Huangism 我将#view-image id 选择器更改为另一个名称并尝试了。仍然背景适用于 .img 中的这个 div。我觉得不对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多