

新闻资讯
技术学院本文旨在解决safari浏览器中`
在Web开发中,我们有时需要在表格行(
具体表现为,当一个
| Cut | Ctrl+X |
| Paste | Ctrl+Z |
| Copy | Ctrl+C |
CSS 样式示例 (存在Safari兼容性问题):
table.context-menu tr.spacer {
position: relative; /* 期望伪元素以此为基准定位 */
height: 8px;
}
table.context-menu tr.spacer:after {
content: "";
position: absolute;
top: 0;
bottom: 0;
margin: auto 0; /* 垂直居中 */
height: 1px;
width: 100%;
background-color: var(--item-disabled);
}问题核心在于,尽管tr.spacer被明确设置为position: relative,但Safari对表格元素(尤其是
由于
为了实现这一点,我们需要在tr.spacer行中至少包含一个
修改后的HTML结构:
| Cut | Ctrl+X |
| Copy | Ctrl+C |
| Paste | Ctrl+V |
修改后的CSS样式:
table.context-menu tr.spacer {
position: relative; /* 保持相对定位,但主要依靠td */
height: 8px;
}
table.context-menu tr.spacer td:after { /* 伪元素应用于td */
content: "";
position: absolute;
top: 0;
left: 0; /* 确保从td的左侧开始 */
bottom: 0;
margin: auto 0;
height: 1px;
width: 100%; /* 宽度相对于td */
background-color: var(--item-disabled);
}
/* 确保td本身具有相对定位,以便伪元素能正确依附 */
table.context-menu > tbody > tr.spacer > td {
position: relative; /* 关键:使td成为伪元素的包含块 */
padding: 0; /* 根据需要调整td的内边距 */
/* 可能需要设置td的宽度,确保伪元素覆盖整个分隔区域 */
}通过将伪元素附加到
如果你的“表格”实际上并非用于展示严格的表格数据(例如上下文菜单),那么使用
| 等元素在CSS布局模型中具有特殊的行为,它们默认的display属性(如table-row、table-cell)可能会影响position属性的行为。在某些情况下,直接在 |
| 元素的伪元素定位,还是采用更语义化的HTML结构,都可以有效解决Safari中 |