2011-05-02 71 views
22

我很久没有使用SASS了,想知道是否存在一些伪元素问题,如:first-child:last-childsass:第一个孩子不工作

+0

有什么问题? – sandeep 2011-05-02 10:41:04

+0

在** scss **我不得不这样做:'div {> div:nth-​​child(1){styles}}' – protoEvangelion 2017-06-08 22:58:56

回答

40

尽管@Andre是正确的,伪元素及其支持方面存在问题,尤其是在旧版(IE)浏览器中,该支持一直在不断改进。

至于你的问题,是否有任何问题,我会说我没有真正见过任何,尽管伪元素的语法可能有点棘手,尤其是当第一个问题出现时。所以:

div#top-level 
    declarations: ... 
    div.inside 
    declarations: ... 
    &:first-child 
     declarations: ... 

其编译为人们所期望的:

div#top-level{ 
    declarations... } 
div#top-level div.inside { 
    declarations... } 
div#top-level div.inside:first-child { 
    declarations... } 

我还没有看到任何的这种任何文件,保存为“青菜能做到的一切,CSS可以做声明。 “与Haml和SASS一样,缩进就是一切。

+3

非常有帮助 - 如上所述,不要忘记把**和**放在**:第一个孩子**的前面,如**&:first -child ** – 2012-11-28 16:55:25

+1

在你的例子中,你不应该期望它能编译到div#top-level:first-child吗? &:first-child不在div.inside块中,为什么它会应用于div.inside? – Danny 2013-04-25 01:32:12

+0

@Danny:绝对正确 - 我更新了示例以反映。 – nomadkbro 2013-04-25 22:26:28

0

首先,仍然有浏览器不支持那些伪元素(即:first-child,:last-child),所以你必须'处理'这个问题。

有一个很好的例子,如何使这项工作,而无需使用伪元素:

http://www.darowski.com/tracesofinspiration/2010/01/11/this-newbies-first-impressions-of-haml-and-sass/

              - 见分频器管的例子。

我希望这很有用。

+1

在附注中,很高兴知道:自从CSS2开始,第一个孩子和我们在一起,因此得到广泛支持,而最后一个孩子只能在CSS3中添加。 – Ronny 2011-05-08 22:21:24

+0

我同意你@Ronny,但人们仍旧需要面对老版本浏览器的一些问题 虽然:first_child出现在CSS2中,但旧版浏览器会出现buggy。 参考:http://reference.sitepoint.com/css/pseudoclass-firstchild – sfat 2011-05-08 22:31:33

+0

是的,但是当处理最常见的情况 - 删除第一个/最后一个边框等,没有理由使用even-less-支持选择器。除此之外,我都是积极的退化;-) – Ronny 2011-05-08 23:00:07

10

我认为使用::first-of-type:nth-of-type(),:last-of-type更好(我的expirience)。它可以做一些细微的规则改变,但我可以做得比惠普*-of-type,比*-child选择器多得多。