【问题标题】:Peculiar Reverse Cascading in CSSCSS中的特殊反向级联
【发布时间】:2011-02-10 02:56:42
【问题描述】:

我的 CSS 应用的样式不适用于正在设置样式的对象。这是我的 site.css 文件中的确切代码...

.rules aside {  
    width: 270px;  
    right: 0px; 
    top: 0px; 
    float: left;
}

.rules aside h3 { 
    border-bottom-width: 2px; 
    border-bottom-style: solid; 
    border-bottom-color: #2A2A2A; 

    padding-bottom: 6px; 
    padding-top: 11px; 

    margin-bottom: 0px; 

    color: #F0E29A; 
    font-size: 14px; 
    letter-spacing: -0.5px; 
    text-transform: uppercase; 
}

现在这里有一些利用它的 HTML...

<article class="content rules">
   <section>
   // ...
   </section>
   <aside>
     Some Content
   </aside>
</article>

这是 Chrome 的 Inspector 为 &lt;aside&gt; 元素显示的 CSS 标记。

.rules aside {
border-bottom-width: 2px;
border-bottom-style: solid;
border-bottom-color: #2A2A2A;
padding-bottom: 6px;
padding-top: 11px;
margin-bottom: 0px;
color: #F0E29A;
font-size: 14px;
letter-spacing: -0.5px;
text-transform: uppercase;
width: 270px;
right: 0px;
top: 0px;
float: left;
}

这没有任何意义。只有&lt;h3&gt; 元素的样式应该来自.rules aside h3 选择器。然而它正在向下级联到根&lt;aside&gt; 元素。我也有其他这种情况发生。这发生在 Google Chrome(最新版本)中

包括用于证明的屏幕截图。


三十点编辑:

jsfiddle.net/2hnLx - 运行这个 来自 .html 文件的完全相同的代码 我的机器产生问题结果, 但从 jsFiddle 运行它会产生 预期的结果。 - 斯泰西

来自 jsFiddle 的代码:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>jsFiddle Example</title> 
    <style type="text/css"> 
        article, section, aside, header, nav { display: block; }

        #container { 
            margin: 0px auto; 
            width: 960px; 
            position: relative;
        }
        section { 
            float: left;
            width: 685px; 
            left: 0px; 

            background-color: #ccc;
        }
        section h2 {
            padding: 10px;
        }
        section h3 { 
            font-size: 32px; 
            color: #ffcc00; 
            font-weight: bold; 
            padding: 10px; 
            border-bottom-width: 2px; 
            border-bottom-style: solid; 
            border-bottom-color: #2A2A2A; 
            margin-bottom: 18px; 
            margin-left: 10px;
            margin-right: 10px;
        }

        .rules aside {  
            width: 270px;  
            right: 0px; 
            top: 0px; 
            float: left;

            background-color: #000;
        }

        aside h3 { 
            border-bottom-width: 2px; 
            border-bottom-style: solid; 
            border-bottom-color: #2A2A2A; 

            padding-bottom: 6px; 
            padding-top: 11px; 

            margin-bottom: 0px; 

            color: #F0E29A; 
            font-size: 14px; 
            letter-spacing: -0.5px; 
            text-transform: uppercase; 

            background-color: #fff;
        }
    </style> 
</head> 
<body> 
    <div id="container"> 
        <article> 
            <section> 
                <p>Section Text</p> 
            </section> 
            <aside> 
                <p>Aside Text</p> 
            </aside> 
        </article> 
    </div> 
</body> 
</html> 

【问题讨论】:

  • 看起来很奇怪。唯一想到的是一些疯狂的隐形控制字符弄乱了第一个块的关闭},从而融合了块。
  • 只是预感:您是否将您的aside 设置为display: block?我觉得这可能与使用 HTML5 元素和浏览器将其视为内联元素有关。
  • 也许浏览器正在接受rules aside 字面意思? :)
  • @Stacey:你能在 jsfiddle.net 上重新创建这个并给我们发送一个链接,以便我们可以使用它吗?
  • 如果样式本身没有被应用,那么问题是谷歌浏览器的错误(或者它是开发工具)。我会向 Google Chrome 团队提交错误报告。

标签: html css google-chrome


【解决方案1】:

解决了。
这是 BOM。尝试将 site.css 文件保存为不带 BOM 的 UTF-8,它会起作用。

更新
这是固有的:UTF-8 HTML and CSS files with BOM (and how to remove the BOM with Python)

【讨论】:

  • 有没有办法告诉 Visual Studio 默认使用这种 UTF-8 编码的文件?
  • 谢谢。你是对的,这就是问题所在。这可以通过转到File->Advanced Save Options 并选择UTF-8 (without signature) 作为编码来解决。尽管如此,我不知道谁更沮丧,微软,因为它在 Visual Studio 中设置为默认值,并且无法为每个文档类型或 Chrome 设置新的默认值,因为无法处理 FireFox、IE 、Safari 和 Opera 都可以。我想既然 Chrome 是免费的,我可能应该在提醒 Google 为“问题”之前提醒微软,但这是一个非常烦人的问题。
  • 我非常感谢您的所有帮助,也非常感谢您实际上 尝试 解决问题,而不是用疯狂的“嘿,检查你的 CSS,你可能只是做错了'。我不得不说,来到一个社区,提出问题,并就原因进行真正的辩论,而不是简单地用手指指着我说'你做了一个错误'。在我看来,StackOverflow 是世界上最好的网站的另一个原因,应该比 facebook 还要高! =)
【解决方案2】:

我已在 Chrome 9 中尝试过此操作。我无法重现该错误。 这是我的代码(你可以试试):http://dl.dropbox.com/u/20195191/StackOverflow/so_4945633.html

这是来自 Chrome 的屏幕截图。

【讨论】:

  • Nothing :) 我在 jsfiddle 中创建了一个页面,但它更改了源代码。然后,我看到原来的帖子只有一个指向 jsfiddle 的链接。现在我改变了答案。
  • I am by no 表示 HTML 或 CSS 方面的专家,但我非常精通,知道这里发生了 something 奇怪的事情。我将继续尝试在我的项目之外准确重现这个错误,也许这会让我追查我自己项目中的原因。
  • 如果你能复现,请在 DropBox 或类似的地方发一个页面,我们可以试试。
  • 我已经复制了这个问题......有点。我的样式很好,只有当我在 .css 文件中使用 @import url('url'); 代码链接样式时才会出现。导入的文件有什么似乎并不重要。
  • 我已经确认了这个问题,并在上​​面发布了它。
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 2013-07-07
  • 2020-10-30
  • 2012-09-21
  • 1970-01-01
  • 2012-07-31
  • 2017-11-11
相关资源
最近更新 更多