Css <;李>&书信电报;th>;文本对齐不一致

Css <;李>&书信电报;th>;文本对齐不一致,css,html,cross-browser,Css,Html,Cross Browser,在IE、Edge和Safari中,一个的后代是中心对齐的 在Chrome、Firefox和Opera中,它是左对齐的 根据建议(斜体字): 用户代理应在其用户代理样式表中具有规则 匹配具有父节点且其计算值为 “text align”属性的初始值,其声明 块只包含一个设置“文本对齐”的声明 属性设置为值“center” 斜体部分指出,如果父元素的文本对齐属性未更改,则元素应居中 Chrome、Firefox和Opera中的后代的情况并非如此。我认为他们忽略了W3C的建议,对吗 (通过使用th{te

在IE、Edge和Safari中,一个
  • 的后代是中心对齐的

    在Chrome、Firefox和Opera中,它是左对齐的

    根据建议(斜体字):

    用户代理应在其用户代理样式表中具有规则 匹配具有父节点且其计算值为 “text align”属性的初始值,其声明 块只包含一个设置“文本对齐”的声明 属性设置为值“center”

    斜体部分指出,如果父元素的
    文本对齐
    属性未更改,则
    元素应居中

    Chrome、Firefox和Opera中
  • 的后代的情况并非如此。我认为他们忽略了W3C的建议,对吗

    (通过使用
    th{text align:center;}
    ,这个问题很容易解决,所以我不需要解决方案。)

    编辑 我收到了一些关于这种行为的很好的解释,但答案并不令人满意——这并不是海报的错

    我认为W3C的意图是
    元素应该居中,除非它们包含或继承了不同的显式
    文本对齐
    样式。由于隐式样式的复杂级联继承,
    元素应该左对齐是没有意义的

    这似乎取决于W3C在引用中所说的“它的初始值”是什么意思。
  • 文本对齐
    属性的“初始值”是
    匹配父项
    ,这显然不同于
    文本对齐:初始

    希望W3C将来能澄清这一点。同时,
    th{text align:center;}
    解决了这个问题


    示例:

    th,td{
    边框:1px实心#ddd;
    }
    
    
  • 这是一个Lorem Ipsum
    测试 另一个标题 ABCDEFG HIJKLMNOP QRSTUV WXYZ 更多

  • 不,他们没有忽略W3C。根据你问题中的引述

    “文本对齐”属性的计算值为其初始值的父节点

    但事实并非如此。
    文本对齐
    的初始值为
    开始
    ,计算为
    开始
    。但是
  • 元素的样式为
    文本对齐:匹配父级
    ,由于
    具有
    方向:ltr
    ,因此计算到
    左侧
    。尽管
    start
    的行为类似于
    left
    ,因为
  • 也有
    方向:ltr
    ,但它们是不同的值。这就是为什么
    th
    不居中的原因

    注意
    start
    match parent
    都是最近添加的。可能
    th
    会集中在不支持它们的浏览器上

    如果使用
    li{text align:initial;}
    则th
    th
    居中

    th,td{
    边框:1px实心#ddd;
    }
    李{
    文本对齐:首字母;
    }
    
    
  • 这是一个Lorem Ipsum
    测试 另一个标题 ABCDEFG HIJKLMNOP QRSTUV WXYZ 更多

  • 您的问题是
    li
    默认为
    text align:match parent
    (至少在Firefox上是这样),这意味着
    li
    是(如果方向为
    ltr
    则为
    text align:right
    )因此,如果您将
    li
    更改为
    text align:initial
    th
    将按预期工作

    匹配父项

    与“继承”类似,但“开始”和“结束”值是根据父对象的方向计算的,并替换为 适当的左或右值

    th,
    运输署{
    边框:1px实心#ddd;
    }
    李{
    文本对齐:首字母
    }
    
    
  • 这是一本关于同侧的书
    试验 另一个标题 ABCDEFG HIJKLMNOP QRSTUV WXYZ 更多

  • 那么,在W3C的建议中,这是否意味着“父节点”真的意味着“祖先节点”?@RickHitchcock The
    li
    具有
    text align:left
    而不是
    initial
    ,而
    tbody
    tr
    继承了这一点。
    th
    的父项是
    tr
    。啊,这是有道理的。但是
    div
    元素是否默认为
    text align:left
    ?它们的
    th
    子体不是左对齐的。否,默认为
    text align:start
    start
    的行为类似于
    left
    方向:ltr
    ,但它是一个不同的值。这是否意味着IE、Edge和Safari是错误的?或者这是否意味着W3C的建议不明确?我认为
    match parent
    与方向(左/右)有关,而不是与居中(?)有关。确切地说,值从左开始(
    text align:left)
    如果
    ltr
    或从右侧开始如果
    rtl
    我认为
    initial
    用于恢复默认属性,该属性可能已被CSS覆盖。为什么
    li
    元素的
    text align:initial
    与其默认值
    text align:match parent
    不同?我创建了一个新的示例,以便您能够理解差异谢谢,我看到了差异,但我想我对
    initial
    的解释是错误的。请参阅我的编辑。