Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS-基本特异性_Css - Fatal编程技术网

CSS-基本特异性

CSS-基本特异性,css,Css,我有一个包含许多列的HTML表。我想在除一列之外的所有列上设置文本对齐:居中 我听说他们都在使用!重要和不必要的筑巢是不受欢迎的。实现这一目标的“最佳”方式是什么 使用!重要信息: 不必要的嵌套: 还是其他方法 我所说的“最佳”是指: *符合CSS最佳实践 *性能好就我个人而言,我使用!重要信息“覆盖”类。例如: .center {text-align:center !important} .right {text-align:right !important} 依此类推-如果我在元素上指定c

我有一个包含许多列的HTML表。我想在除一列之外的所有列上设置
文本对齐:居中

我听说他们都在使用!重要和不必要的筑巢是不受欢迎的。实现这一目标的“最佳”方式是什么

  • 使用
    !重要信息
  • 不必要的嵌套:
  • 还是其他方法

    我所说的“最佳”是指: *符合CSS最佳实践
    *性能好

    就我个人而言,我使用
    !重要信息
    “覆盖”类。例如:

    .center {text-align:center !important}
    .right {text-align:right !important}
    
    依此类推-如果我在元素上指定
    class=“right”
    ,那是因为我特别希望它右对齐并且
    !重要信息
    有助于反映这一点


    但是在更一般的情况下,您应该避免使用
    !重要的
    -主要是因为一旦您使用了
    !重要信息
    ,无法再覆盖它了

    你应该这样做:

    .tableAll td{
    padding: 5px;
    text-align: center;
    }
    
    你们只想居中,那个么为什么要定义类呢。在这种情况下,内联样式将起作用,并将覆盖
    .tableAll
    的匹配样式

    <table class="tableAll">
     <tr>
        <td style="text-align: center;"></td>
        <td >other all</td>
     </tr>
    </table>
    
    
    其他所有
    

    我不推荐使用
    !重要信息

    实际上,使用
    两种解决方案都很好!重要信息
    和嵌套

    您不应该使用
    !重要信息
    太频繁了,因为一旦它传播开来,并且您反复使用它,您将回到开始(难以指定特定于覆盖其他样式的元素,应用), 但是在这种特殊情况下,由于
    ,您就可以了!重要信息
    规则仅影响1个元素


    嵌套也可以很好地工作,只要您将其用于特殊情况,而不是每个元素,因为一旦您这样做,您的代码将无法读取,并且您将很难改进和重新分解。

    不要使用
    !重要信息
    ,除非您没有其他选择

    #my-table td {
        padding: 5px;
        text-align: center;
    }
    
    td#my-table-special-td {
        text-align: left;
    }
    
    你不必做任何嵌套。只需使用
    id
    istead of
    class
    并在前面添加标记名,正如您在上面的代码中所看到的那样

    这里有一个例子

    可以说,您不需要
    #my table
    选择器,正如您所说的,您希望将所有
    元素对齐到中心

    更可重用的方法是删除
    id
    ,只需:

    td { text-align:center; }
    td.left-align { text-align:left;}
    td.right-align {text-align:right;}
    

    然后,您可以将对齐应用于任何
    td
    位置,如果需要,也可以稍后通过向表中添加
    id
    进行覆盖

    对于性能,请对所有css使用内联样式。这是谷歌邮件(Gmail)中使用的技术,我认为雅虎!还有邮件。所以如果你想要的是速度。一切都使用内联样式。老实说,我不会走这条路,因为它不提供干净和可重用的代码

    所以我会选择最干净的解决方案,给元素一个类名,避免使用!重要的。这是绝对不赞成的,它不必被用来诚实。表将尊重表元素上的类名。这最终为所有浏览器提供了一个更干净的CSS。如果您通常覆盖类,这意味着您可能需要重新考虑CSS的体系结构。我不是说你做得不对,但我们在谈论做事情的最佳方式,不是吗?:)


    快乐编码

    我不建议使用
    !重要信息
    。在您的情况下,使用
    文本对齐:居中
    可以将文本居中,如果您希望任何列的文本都应该是
    左对齐
    ,您可以为该
    创建一个特定的类,或者更好地使用一些高级CSS3

    在本例中,我希望更改
    最后一行的
    最后一列
    ,并希望应用类

    我可以通过添加这种样式来实现这一点

    table tr:last-child td:nth-child(5) {background:red;}
    

    或者最好检查一下这个例子

    不必要的嵌套是什么意思?@user3117610也许你可以在这里了解一些不应该使用
    的想法!重要信息
    事实上,至少不是“出于设计”,您应该仅在所需更改太大时使用它来修复某些内容,而不使用它。“类”解决方案似乎是一个很好的解决方案(并且不是“不必要的嵌套”),但是如果您确实知道列的索引,您也可以使用
    nth child
    。是的,我可以添加类。通过不必要的嵌套,我的意思是“my table special td”之前的“my table”说明符是多余的。没有必要担心css文件中的冗余,您最好注意代码保持可读性,这对于嵌套元素来说不是那么容易)我认为这不可行。“.my table special td”没有“#my table td”规则那么具体,所以它仍然居中。我不喜欢混合内联CSS的想法,我认为这是一种非最佳做法。@user3117610内联样式很好,如果不太长,也不弄乱标记的话。如果是
    ,则class
    是最佳做法。在你的例子中,有一个表,而不是到处都写。因为我的站点上有不止一个表,所以我确实需要#我的表说明符。但是,由于其他表都没有my table专用td,因此将“#my table”与该td一起指定似乎是多余的。
    #my-table td {
        padding: 5px;
        text-align: center;
    }
    
    #my-table td.my-special-td {
        text-align:left;
    }
    
    td { text-align:center; }
    td.left-align { text-align:left;}
    td.right-align {text-align:right;}
    
    table tr:last-child td:nth-child(5) {background:red;}