问题陈述是,我有2-3个网页;我希望在这个页面上有不同的颜色,但保持类名称对“myBody”是唯一的。
我找了很多博客和作者,但没有找到任何合适的答案来实现传统的CSS方法。
请建议是否可以让一个CSS类接受来自网页的参数,该网页将决定使用具有不同参数的相同CSS应用哪种颜色“
.myBody(@color)
{
background-color: @color;
font-size: 11px;
color: Black;
border: 1px solid;
}
对于一些人来说,答案可能很棘手,但我真的想看看我是否只能使用CSS实现这一点。
答案 0 :(得分:5)
你应该把它们分成不同的类。
.myBody
{
font-size: 11px;
color: Black;
border: 1px solid;
}
.background_red
{
background: red;
}
.background_green
{
background: green;
}
然后像这样使用它们
<div class="mybody background_red"></div>
<div class="mybody background_green"></div>
您还可以像这样覆盖css:
.myBody
{
background:red;
}
.overwrite_background
{
background:green;
}
<div class="myBody"></div>
<div class="myBody overwrite_background"></div>
第一个div的背景为红色,第二个div的背景为绿色。
这是你应该看的另一篇文章。这引用了一些您必须处理这种情况的选项。 How to pass parameters to css classes
另一种选择是使用Sass。 Sass允许您使用编程语言来创建CSS。这对于在飞行中改变物体非常有用。如果您在多个位置使用相同的颜色,或者如果您希望为每个站点使用不同的配置,并且仍然使用相同的css只是不同的颜色。
答案 1 :(得分:0)
不,你不能用一个类定义来做这件事。 CSS中没有参数和函数调用的概念。
另一方面,你可以用最少的代码重复来做到这一点,但这可能是一个坏主意。您说您想假设class
属性中只有一个类名。这非常愚蠢,因为它完全误解了class
属性的用途,但无论如何我们都会使用它。
我们首先使用背景颜色定义我们的类:
.mybody-red {
background-color: red;
}
.mybody-blue {
background-color: blue;
}
.mybody-green {
background-color: green;
}
然后我们将使用属性starts-with selector来为所有mybody-*
类定义代码:
div[class^="mybody-"] {
font-size: 11px;
color: Black;
border: 1px solid;
}
然而,这是一个愚蠢的想法,尤其是因为它意味着你没有将标记与样式分开,并且出于其他原因。
答案 2 :(得分:0)
也许你可以在每个页面中给出一个唯一的id并保持同一个类。我的意思是
file1.html
<html>
<body id="file1">
<div class"myBody"></div>
</body>
</html>
file2.html
<html>
<body id="file2">
<div class"myBody"></div>
</body>
</html>
file3.html
<html>
<body id="file3">
<div class"myBody"></div>
</body>
</html>
你有3个不同的文件。每个文件都有一个带有唯一ID的body标签和一个带有你想要的类的div标签 现在css部分:
.myBody
{
font-size: 11px;
color: Black;
border: 1px solid;
}/*common class for all files*/
#file1 .myBody{
background:green;
}
#file2 .myBody{
background:red;
}
#file3 .myBody{
background:grey;
}
如果您有2-3页,这样可以正常工作。如果您有更多内容,那将是一个难以维护的代码
答案 3 :(得分:0)
作为替代选项,由于您打算通过页面传递颜色,为什么不使用PHP将样式设置为内联属性?虽然将大多数css放在一个单独的文件中会更好,但有时沿着可接受的CSS放置层次结构前进是有意义的。
我不确定你从哪里获得特定的颜色,但设置内联样式没有任何问题,如果这是最有效的方式。< / p>
示例:
<?php $bodyColor = $_POST['bodyColor']; ?>
<div class="myBody" style="background-color:<?php echo $bodyColor; ?>">
YOUR TEXT
</div>