2012-05-27 28 views
1

enter image description hereSubstitue对CSS通用选择(*)

正如你可以安装在图像看,我有一个包装里面div我有section
现在,我想这里面section所有内容应该有空间在各方面(即我想在里面section所有内容填充。我不能这样做,

section { 
    padding:20px; 
} 

,因为它会增加section到1020宽度+里面section 20(左填充)+ 20(右填充)= 1060px。

因为,直接孩子并不总是DIV(有asidep太),我不能做

section div{ 
margin:20px; 
} 

目前,我做

section > *{ 
    margin:20px; 
} 

让每一个元件采用20像素的利润率从一节。 这适用于我但我听说我们不应该使用通用选择器(*),它是一个性能瓶颈。此外,这是甚至跨浏览器?

我也想创建一个包装div将采取它里面的所有的所有元素都段里,这样我可以做

section > div{ 
    margin:20px; 
} 

但是,这是值得改变的标记。通用选择器会很慢吗?

+2

*“我听说过,我们不应该使用通用选择器(*),其性能瓶颈” * - “听说糖不利于你的健康,所以我试图完全避免它。“ – Tomalak

+0

我感觉不好幽默感,所以我想要得到一些认真的评论:) – Jashwant

+1

好吧,我指出了对一般性陈述过度反应的问题,这些陈述本身并不是假的* - 没有评估你所处的情况。即使有些事情是缓慢的,你也应该测量它是否会对你产生负面影响。优化甚至不是问题的东西只会增加复杂性。 – Tomalak

回答

1

你可以用逗号分隔的选择,这样

section > div, section > aside, section > p { 
    margin:20px; 
} 

或者,当然了,给所有需要的利润一类的东西,使用该类作为选择器。只要你不使用“hasmargins”的类名...

但我不知道你为什么认为通过给包装div内的部分填充,你会增加总宽度的包装div。我错过了什么吗?

+0

之前的“盒子大小:边框”。是的,这是我的首选列表。如果没有顺利的话,我会执行这个。但是我的问题是,即使我将它选为直接的孩子,它会(*)缓慢吗? – Jashwant

+2

@Jashwant你的意思是如果'div *'比'div> *'更快?不确定;你应该测试一下。但我不认为这值得失眠,除非你有很多这个选择器可以应用的元素。在大多数情况下,造成站点变慢的原因是图形加载时间,Flash动画等;不是这个。 –

+0

接受点。在给出答案之前,我会等待更多的时间提供其他建议。你和托马拉克让我意识到我只是在反应。 – Jashwant

2

因为它会增加部分的宽度到1020 + 20(左填充)+ 20(右填充)= 1060px。

尝试建立

section{ 
    width: 980; 
    padding: 20px; 
} 

所以你设置secion减去填充的两倍大小的宽度,所以finnally你的部分将是1020,因为你需要。

这里是working example

+0

我无法做到这一点,我需要一个1020px的'节'宽度。对不起,如果我不清楚这一点。 – Jashwant

+0

您将有最终的1020px宽度的部分,填充后* 2 +宽度将被处理! – DaneSoul

1

我相信你没有做的断面宽度任何东西。如果父元素具有固定的宽度,则子元素永远不会超过父元素的宽度。

这里是演示 - http://jsfiddle.net/HNVg9/

+0

看[this](http://jsfiddle.net/HNVg9/2/)小提琴。 [Box模型](http://www.quirksmode.org/css/box.html/) – Jashwant

+1

Dipak Suryavanshi是对的。如果父母的宽度是固定的,那么孩子的填充/边距不会影响父母所占用的空间。内容可能会溢出或隐藏,具体取决于父级的溢出值,但不会放大父级所占用的空间。只有在设置宽度的父*上的填充/边框*才会这样做(并且只有在没有框大小的情况下:边框在边框上)。 – Ana

+0

@Jashwant你没有把宽度定义到“section,section> div”这里宽度是从“.wrapper”继承的。 – Dipak