【问题标题】::first-child and :last-child simultaneously:first-child 和 :last-child 同时
【发布时间】:2013-03-03 05:28:32
【问题描述】:

这可能很容易,因为我觉得我在这里遗漏了一个基本点。

情况:

.singleOrder:first-child {
    border-radius: 5px 0 0 0;
}

.singleOrder:last-child {
    border-radius: 0 5px 0 0;
}

在只有一个孩子之前工作得很好。在这种情况下,第二个声明将覆盖第一个声明,并且不会达到预期的效果。

解决这个问题的最简短和优雅的方法是什么?

【问题讨论】:

    标签: html css pseudo-class css-selectors


    【解决方案1】:

    拆分:

    .singleOrder:first-child {
        border-top-left-radius: 5px;
    }
    
    .singleOrder:last-child {
        border-bottom-left-radius: 5px;
    }
    

    或者写一个额外的规则:

    .singleOrder:first-child:last-child {
        border-radius: 5px 5px 0 0;
    }
    

    【讨论】:

    • 它们和您的原始代码一样有效。但是,您也应该包含前缀属性。见this tool
    • 谢谢。第二个工作正常。我会选择这个答案,因为它是第一位的。
    • 我认为添加额外规则的第二个选项使其更清晰易读
    【解决方案2】:

    使用:only-child:

    .singleOrder:only-child {
        border-radius: 5px 5px 0 0;
    }
    

    更新:Yogu 是对的。我忘了提。这应该在您的陈述之后。

    【讨论】:

    • 不确定这是否会覆盖:first-child:last-child 规则。因此,您应该确保这条规则出现在 现有两条之后。
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多