显示:阻止在 Chrome 或 Safari 中不起作用

Posted

技术标签:

【中文标题】显示:阻止在 Chrome 或 Safari 中不起作用【英文标题】:Display:Block not working in Chrome or Safari 【发布时间】:2012-05-20 08:13:09 【问题描述】:

我需要垂直显示表格行的单元格。这在 FF 中工作得很好,但在 Ipad 上的 Chrome 或 Safari 中却不行。

下面的示例在 FF 中按预期呈现,每个行单元格在彼此下方,但在 Chrome 中,它似乎完全忽略了 display:block。

有什么问题 - 或者有更好的方法来做到这一点。

(想要这个的原因是我在 CSS 中使用 @media 来为小屏幕呈现不同的表格)

更直观的例子:

一张普通的桌子可能是

DATA1 | DATA2 | DATA3

但使用 display:block,它应该是

DATA1
DATA2
DATA3

非常感谢

<html>
<head>
<style>
    table,
    thead,
    tr,
    td
    
        display:block;
    
    table,tr
    
        border : 1px dotted red;
    
    td
    
        border:1px dashed blue;
    
    thead
    
        display:none;
    
</style>
</head>
<body>

<table>
<thead>
<tr>
    <td>Heading 1</td>
    <td>Heading 2</td>
    <td>Heading 3</td>
</tr>
</thead>
<tbody>
<tr>
    <td>Data 1</td>
    <td>Data 2</td>
    <td>Data 3</td>
</tr>
<tr>
    <td>Data 1</td>
    <td>Data 2</td>
    <td>Data 3</td>
</tr>
<tr>
    <td>Data 1</td>
    <td>Data 2</td>
    <td>Data 3</td>
</tr>

</tbody>
</table>

</body>
</html>

【问题讨论】:

你为什么要制作比它们更复杂的表格?如果要显示单列表,则只需制作单列表;无需使用display: block; 定义它们。 【参考方案1】:

编辑 2:

我想我已经解决了你的问题。当您的 html 没有声明 &lt;!DOCTYPE&gt; 时,Webkit 会覆盖 display: block; 并将其计算为 td 中的 display: table-cell;

要解决此问题,我建议您在 html 顶部设置 &lt;!DOCTYPE html&gt; 之前的 &lt;html&gt;

jsfiddle 可以工作的原因是该站点已经声明了&lt;!DOCTYPE&gt;

试试这个,如果它可以解决您的问题,请告诉我。如果没有,我会尝试找到另一个答案。

【讨论】:

不,不是我的意思。我在正文中添加了我的意思的文本示例。让我知道这仍然不清楚。谢谢 我在 FF 和 Chrome 中添加了我的结果的屏幕截图。您在哪个版本的 Chrome 中进行测试? 是的,这就是我所期望的——但在没有运行 mac 的情况下——在 windows 上。有趣的是,我编写代码的开发人员(现在正在度假)似乎认为它有效并且他在 Mac 上 - 所以 Mac 和 PC 上的 Chrome 之间存在差异 - 尽管它也不适用于 Ipad 上的 Safari Chrome 版本为:18.0.1025.168 m 有趣的是,您的 jsFiddle 代码(没有“float”)在 Chrome 中运行良好!不仅在 jsFiddle 中运行时。【参考方案2】:

我用 th 代替 td 做了一个技巧。 并且 css hack 仅适用于 safari(不是 webkit 通用)。

HTML:

<table>
    <tr>
        <th>Cell 1</th> 
        <th>Cell 2</th>
    </tr>
</table>

CSS:

table 
    width: 100%;
    text-align: left;


/* Safari 7.1+ */
_::-webkit-full-page-media, _:future, :root .safari_only 
    .safari-fix table tr 
        display: block;
        width: 100%;
    

/* Safari 10.1+ */
@media not all and (min-resolution:.001dpcm)  
    @media 
        .safari-fix table tr 
            display: block;
            width: 100%;
        
    


table th 
    width: 100%;
    display: block;

这是我的jsfiddle

【讨论】:

【参考方案3】:

Chrome 或 Safari 中的表格损坏

很多情况发生在表中。

display:block;  
display:"";

display:block;
display:table-row; 
*display:block;

【讨论】:

以上是关于显示:阻止在 Chrome 或 Safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Div 在 Firefox、Safari、Chrome 等中显示,但在 Internet Explorer 中不显示

Tablesorter Pager 在 Safari 或 Chrome 中不起作用

jQuery .hover 在 Safari 或 Chrome 中不起作用

单选按钮更改事件在 chrome 或 safari 中不起作用

前端应用 Graphql 请求被 Safari、Firefox 阻止,但 Heroku 上的 Chrome 没有阻止

在没有屏幕刷新的情况下,使用 jQuery 更改不透明度在 Chrome 或 Safari 中不起作用