CSS 背景属性 - 简写与长格式

Posted

技术标签:

【中文标题】CSS 背景属性 - 简写与长格式【英文标题】:CSS Background Property - Shorthand vs Long form 【发布时间】:2011-03-26 18:56:22 【问题描述】:

据我了解,当您使用速记属性background 时,浏览器首先将所有背景属性设置为其默认值,然后输入您声明的值。那么使用background-color:white会更好吗?而不是background:white?当您输入更多值(例如背景位置或背景图像)时,这会改变吗?还是最好单独声明属性?

我认为一定存在某种临界点,其中字节的节省平衡了通过单独指定属性获得的处理时间。但是,我可能完全错了——这就是我在这里问的原因。

【问题讨论】:

【参考方案1】:

我听说过最佳做法,但如前所述,处理甚至加载时间的差异可以忽略不计。除了在您的样式表中有意义之外,没有关于何时使用这些规则的最佳实践。真正的区别在于它们对继承属性的影响不同。设置background-color: white; 只会覆盖background-color 规则(无论它最初是用background 还是background-color 设置的)但background 将覆盖任何/所有background 规则集,因此可能会杀死背景图像以及相关联的background-repeat等。下面是一个例子:

.box 
    background: url(star.png); // set with just background instead of background-image
    width: 100px;
    height: 100px;
    float: left;
    margin: 10px;

.box1 
    background-color: blue;

.box2 
    background: green;

html 一样:

<div class="box1 box"></div>
<div class="box2 box"></div>

.box1 将显示 star.png 图像(如果图像是透明的,则具有蓝色背景),而 .box2 将仅显示绿色背景,没有图像。这两条规则的最佳实践课程是评估 CSS 创作和继承,而不是渲染性能。请记住,通常最好将 background 应用于元素的最通用/抽象规则,然后使用类或 ID 覆盖更具体实例的属性,例如 background-colorbackground-image 等。

【讨论】:

那你对孤单元素有什么建议呢?假设您只有一个框元素,并且希望背景颜色为蓝色? 我会说background-color。这使它更清晰,更“面向未来”。 (即,如果后来有人创建了一个规则,该规则间接添加了一个 background-image 到你的元素,你的 background-color 规则不会干扰。通常,速记的重点就是:A以更短/更快的格式一起编写多个规则的方法。【参考方案2】:

CSS 的处理时间应该可以忽略不计。如果你只是因为这个而限制使用它们,那么,不要再限制自己了。

当只使用一种颜色时,background: colorbackground-color: color 应该给出相同的结果。

最后归结为您是否更喜欢简写而不是单独的声明。通常,速记会使用合理的默认值,所以没关系。我通常不记得它们的正确顺序(尤其是 font 速记),但除此之外,我认为它们还不错。

无论如何,您使用的速记属性可能比您预期的要多得多。例如,marginpadding 是它们的-top-right-bottom-left 组件的简写,borderborder-widthborder-color 和@9733 的简写@,它们都是 border-[direction]-[attribute] 属性的简写。通过使用 border 而不是所有非速记属性,您可以节省大约 11 行代码。

【讨论】:

我知道这绝对可以忽略不计,但我对最佳实践非常感兴趣,即使它没有任何影响 - 知道你做对了仍然很酷。 问题出现是因为我正在重构我的一个网站,我开始用背景替换所有单独的背景颜色、背景位置属性,然后我问自己,这对吗?或者更确切地说,这是最好的方法吗? @Radu:是的,是的。 CSS 足够简单,我不知道它是否有任何“受支持”的不良做法(语言允许但不应该这样做的东西)。 好点的边框、边距和内边距属性,没想到。

以上是关于CSS 背景属性 - 简写与长格式的主要内容,如果未能解决你的问题,请参考以下文章

css中background简写属性

css常用的简写技巧_css background简写css border 简写css font属性简写等

css常用的简写技巧_css background简写css border 简写css font属性简写等

html 如何让背景图片充满全图,就是拉伸

css 背景background属性的简写我看不懂意思?

一部分简单的Linux命令