2012-08-07 37 views
4

我见过一些人在CSS编写类似在CSS中重复样式的目的是什么?

.together 
{ 
display:inline; 
display:inline-block; 
} 

不仅限于展示风采,但说的背景,大小或背景图片为例

这个又是什么目的?我的意思是第二个将会覆盖第一个,所以为什么要麻烦?

回答

5

有可能它是为了浏览器兼容性而编写的。他们可能希望该元素的display值为inline-block,但并非所有浏览器都支持所有元素。 Sitepoint对于display property的兼容性有很好的参考。

background属性是所有背景相关属性的缩写,所以通常在一个选择器上设置background,然后在其他选择器上稍后覆盖特定的背景属性。再次,您可能有多个后台声明以实现浏览器兼容性。

+0

如果浏览器同时使用这两个值?这意味着订单也很重要? – user1233587 2012-08-07 04:59:55

+3

是的,订单很重要。应用的最后一个有效值是使用的值。 – 2012-08-07 05:02:10

+0

是的,理解这两者的浏览器将使用最后一个。它的行为应该与两个属性声明在顺序选择器组中的行为相同。 – HaleFx 2012-08-07 05:04:08

7

通常这种类型的行为表明浏览器黑客兼容性。当浏览器检测到他们不知道的属性或值时,他们会忽略它。因此,如果您首先放置最广泛接受的属性,那么浏览器将“回退”到该行为,如果后者的属性都不兼容。

-2

让我们看看下面的例子。

<html> 
<head>  
<style> 
.carlist 
{ 
    background-color: red; 
    height: 30px; 
    margin: 10px; 
    margin: 20px; 
} 
</style> 
</head> 

<body onload="loadCars()"> 

Check div style. 
<div id="mydiv" class="carlist"></div> 

</body> 
</html> 

在上面的例子中,我们有2个边界声明。我检查并发现第二次声明被浏览器(FF,IE,Chrome)所接受。所以我想如果我们使用这个浏览器兼容性,那么浏览器特定的风格应该最后声明。但还有其他方法可以定义浏览器特定的样式。所以最好定义单个属性。

+1

'margin'属性都是一样的;这个例子对浏览器兼容性没有帮助。 – 2012-08-07 05:03:48

+0

我的重点不在于浏览器的兼容性。我的意图是告诉浏览器在重复声明存在时接受最新的声明。 – Narendra 2012-08-07 05:05:43

+0

好的。在我第一次通读这个答案时,我不清楚这一点。 – 2012-08-07 05:14:47