CSS选择器的声明
这是这样一个简单的问题,但我似乎无法找到任何地方一个确切的答案...CSS选择器的声明
简单地说,可我宣布在两个不同的地方选择属性,而不覆盖第一属性声明?
例如,假设我宣布加载到页面的CSS文件中的一个元素的属性:
.x {margin:2px;}
然后我要声明动态页面中的另一个属性:
.x {padding:2px;}
同时保持CSS文件的属性。
虽然我明白有很多其他的方式来做到这一点,这样做是正确的吗?
这很好。你可以把声明放在尽可能多的不同的地方,只要你喜欢。
你可以,是的。首先,将应用页面中包含的CSS文件中声明的样式,然后在页面上指定任何其他指定的样式。
这将工作。由于CSS级联,它会继承样式,并将它们添加到该类中。这就是为什么有些网站在页面加载时发生变化。
首先,要声明一个段落标记,你不会在它之前放一段时间。它应该是:
p {padding:2px;}
其次,CSS是层叠样式表,因此,你可以打开一个元素声明你想要但是很多次。其中的样式属性将采用最后陈述的对象。 IE:
p {padding:2px; border:1px solid #000;}
再后来
p {padding:5px;}
填充现在是5像素,但它保留了它的像素边框。
这是不好的做法!我会占用你创建的“开关”类,这将改变一些CSS属性,而不是dinamicaly稍后在页面上注入它。所以后来将它添加到元素中使用它或删除
<style>
.p { margin:2px; }
.addition { padding: 2px; }
</style>
<p class="p">.....</p>
切换到新的风格或者与一些Ajax调用,或者您需要什么都jQuery的。
<p class="p addition">....</p>
要关闭填充只是删除“添加”类或“p”类,如果你想关闭maring。
这不是一个可怕的做法。考虑在一张表中你想声明属性的情况,另一种你想声明与设计有关的属性(背景,颜色等)。 – bradenkeith 2011-03-04 13:25:52
虽然不完全相同。在你的例子中,在两个实例中都设置了填充,所以我必须创建.addition1和.addition2 - 每个填充都有不同的填充。在页内样式中动态切换效率肯定更高效? – Bob 2011-03-04 13:26:04
我并不可怕,但是不好的做法。创建例如styles_colors.css和styles_dim.css并不坏,但它可以非常方便,但我宁愿坚持一个文件:) – 2011-03-04 13:41:11
级联样式表将继承样式,从规范的角度来看,您所做的完全没错,但可能不被认为是最佳实践。 也请注意,如果您开始覆盖其他样式,则可能会应用CSS层次结构:外部>内部>内联。
更多信息,请参阅http://nzwhost.com/article/understanding-css-hierarchy
我认为这样做是逻辑独立的CSS声明..布局在一起,共同的颜色和具体的媒体(如屏幕,打印)在一起的最佳方式。
如果你想让它做动态,你可以做这样的事情:
注: 这是一个PHP的例子。
<?php $back = 'image.jpg';
**something else can be executed ie conditionals and
more variables can be added**)
?>
<html>
<head>
<style type="text/css">
btn{
margin:0;
padding:0;
background-image: <?php $back; ?>
height:100px;
width:200px;
display:block;
}
</style>
</head>
<body>
<div>
<div class="btn">Test text</div>
</div>
</body>
</html>
您可以使用PHP将预先声明的变量或变量组添加到CSS代码中。请注意,CSS需要包含在您正在使用的HTML/PHP文件中。假设你想随机产生背景颜色。 PHP数组(即'#CCC')>随机选择数组中的值>将变量添加到CSS代码中。 #
你的情况,你可以指定两个类,然后根据您的动态代码为迅速回复
由于病情选择之一。 – Bob 2011-03-04 13:17:35
Cheers〜'课程通常最好将相关的声明保存在一起,但在这种情况下,似乎有一些需要动态生成,还有一些需要修复。 (对吗?) – awm 2011-03-04 13:19:38
你肯定是对的。因为我只想改变一个特定的属性,所以我不想每次都打印一大堆。我想我可以使用多个类,直接添加样式等,但我只是挂在这个解决方案! – Bob 2011-03-04 13:21:59