【问题标题】:Some Css classes working, others are not一些 Css 类可以工作,而另一些则不能
【发布时间】:2018-01-27 07:19:58
【问题描述】:

我正在开发一个 ASP.Net 页面。我正在使用引导程序,并且工作正常。我还有一个自定义样式表,用于微调外观。在过去 2 天的某个时间点,我在自定义样式表中创建并尝试应用于我页面上的元素的任何新类都无法进行更改。例如,我在页面上有一个 div,我创建了一个基本 div 来解决此问题,即使这适用于页面上的任何元素,但我正在尝试更改其背景颜色。几天前,我创建了一个 CSS 类“.background-pink”,如果我将 div 设置为使用该类,则 div 会像预期的那样变成粉红色。但是,我在样式表中该类的正下方有另一个类,称为 .background-blue,它执行相同的操作,它甚至将背景设置为相同的颜色(它最初是蓝色,但在测试期间我将其更改为与background-pink 类来缩小问题的范围),如果我更改 div 类以引用 .background-blue 类,粉红色背景消失并且不应用样式。然后我可以将班级设置回粉红色的班级,它会变回粉红色就好了。这会在我的样式表中任何新创建的类中复制。

我尝试过清除浏览器缓存并尝试隐身模式,不同的浏览器具有相同的结果。我检查了我的 css 中的语法错误,但没有发现。 Visual Studio 中的智能提示可以很好地找到类名,这让我相信我已经正确地将它链接在头脑中。我已重命名样式表,但没有更改。我已经多次清理并重建了应用程序,但没有任何结果。如果我使用内联 css 将样式放在 div 中,它可以正常工作。

这对我来说毫无意义,任何建议将不胜感激。 谢谢!

.background-pink {
  background-color: #E33491;
}

.background-blue {
  background-color: blue;
}

.font-white {
  color: white;
}
<div class="background-blue">test</div>
<div class="background-pink">test</div>
<div style="background-color:blue">test</div>

下面是整个样式表

.negativetopmargin
{
margin-top:-5px;

}

.background-pink
{
background-color:#E33491;
}

.background-blue
{
background-color:#E33491;
}

.font-white
{
color:white;
}

.center-div
{
position:relative;
margin-left:auto;
margin-right:auto;
}

body
{
font-family: 'Palanquin', sans-serif;
background-color:red;
}


.padding-4
{
padding:4px;
}

注意 body 方法,整个页面的字体设置正确,但是我用来测试该方法的背景颜色也没有改变。

【问题讨论】:

  • 我建议您在反对票到来之前添加一两个代码 sn-p。
  • 不敢相信我忘了添加这些,谢谢!
  • 您能否编辑您的问题以创建可运行的代码 sn-p 以便我们可以看到您的原始代码?根据您提供的内容,简单的 sn-p 应该可以工作。除了在您提供的代码中,您提供的粉色和蓝色类都选择了相同的粉色阴影。
  • 我已经为你创建了一个可运行的代码sn-p,它证明你的代码是有效的。因此,您并没有真正提供MCVE
  • 是的,我创建了蓝色方法来验证 aspx 文件是否以某种方式引用了 css 文件。或者至少是其中的一部分。然后,当蓝色失败时,我将其更改为与我已知的工作代码相同的颜色,以查看是否是问题所在。我知道我的代码很好,这似乎是一个引用问题,比如 Visual Studio 忽略了新创建的类。它很奇怪。这是令人沮丧的部分,我似乎无法理解为什么某些方法有效而某些方法不在同一个外部 css 文件中

标签: html css asp.net twitter-bootstrap


【解决方案1】:

尝试将以下规则添加到您的 .background-blue!important

.background-blue
{
  background-color: blue !important; 
}

听起来好像在您的自定义样式表的某个地方,您正在用另一个类覆盖 .background-blue 类。

我还假设问题仅限于.background-blue 类,并且在其他类中找不到。 !important 规则将优先级放在此类上,以将背景呈现为蓝色。

附:在决定使用!important 规则的适当位置时,请注意this 文章。你不想经常使用它。


进一步的例子

.background-pink {
  background-color: #E33491;
}

.background-blue {
  background-color: blue !important;
}
<div class="background-blue ">test</div>
<div class="background-pink">test</div>
<div style="background-color:blue">test</div>

<!-- below div uses both background-blue and background-pink classes, 
as background-blue uses the !important rule 
it overrides the last class applied which is background-pink !-->
<div class="background-blue background-pink">test</div>

如 cmets 中所述,服务器也可能知道您更新的样式表,但正在向浏览器发送标头,指示浏览器使用较旧的缓存版本呈现您的网页。您可以通过使用 F12 打开开发人员工具并研究页面加载时出现的标题来检查这一点。

使用 ctrl + F5 硬刷新通常可以解决问题,但在极端情况下,您需要手动调整标题。有关详细信息,请参阅this 答案。

【讨论】:

  • 问题不仅限于 .background-blue 类。如果我要创建另一个类说 .font-blue 并尝试将其应用于元素内的文本,它也不会做任何改变。然而,任何方法都让我创建样式表的那一天工作得很好。
  • 正如我所说,您可能正在使用样式表中其他地方的其他内容覆盖背景。除非您提供来源,否则我们永远不会知道。
  • 我不能给出实际的 aspx 页面,但我可以包含整个样式表。它相对简单。我引用的唯一其他样式表是引导样式表。
  • 是的,请包含样式表以供参考。另请参阅我更新的答案以获取更新的示例。
  • @Rob - 是的,我过去从未遇到过这个问题。不过,我过去一直被缓存的样式表所困扰,这就是为什么我想消除这种可能性
猜你喜欢
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2021-10-28
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多