html - 为什么 ::after 伪元素出现在复选框输入而不是 Chrome 中的文本输入?
问题描述
我有以下片段。如果输入的 CSS 类“已更改”,我想在单元格的左上角渲染一个小红色三角形。
它适用于复选框,但不适用于文本输入。当我在 Chrome 中检查元素时,复选框的伪元素的尺寸是0 x 0
,对于文本输入,它的尺寸auto x auto
显然是浏览器处理这些的方式存在一些差异,但我无法弄清楚。
我该如何更改它以使其对两者都有效?造成这种差异的机制是什么?一个或另一个是否有一些我可以覆盖的隐含属性?我对是否应该使用它不感兴趣(我已经阅读了这个答案)。
我正在使用 Chrome v75.0.3770.100。
td {
position: relative;
border: 1px solid black;
}
td input {
margin-left: 10px;
}
td .changed::after {
content: '';
position: absolute;
top: 0;
left: 0;
border-color: transparent;
border-style: solid;
border-width: 3px;
border-left-color: #c00000;
border-top-color: #c00000;
}
<table>
<tr>
<td><input type="checkbox" class="changed"/></td>
<td><input type="text" class="changed"/></td>
</tr>
</table>
解决方案
推荐阅读
- nlp - NLP - 语言一致性分析
- c++ - 无法在 C++ 中返回结构值
- angular - 是否可以在选择列表素数中一次选择一个元素
- python - 重用 matplotlib 子图的无花果和轴
- c - Is it possible to pack a local variable with particular alignment?
- apache-kafka - 突然 Kafka Streams (scala) 应用程序陷入重新加入过程(没有明显原因)并且从未完成它
- javascript - 从 Redux 传递 props
- sql - 如何将一个表的每一组与另一个表中的列进行比较?
- python - 如何将系列添加到现有数据框?
- angular - 日期选择器中的日期未显示在更新表单中,我在角度使用补丁值,而其他数据正在显示