Почему свойство box-shadow применяется не к <tr>, а напрямую к <td>элементам в Edge? - PullRequest
3 голосов
/ 18 апреля 2019

При добавлении box-shadow к <tr> Firefox и Chrome отображают его по всей строке, а Edge непосредственно применяет его к каждому <td>, который в итоге выглядит как сетка, а не как непрерывная строка.

Вот демонстрация поведения:

table tr {
  box-shadow: 0 0 0 1px red inset;
}
<table>
  <tr>
    <td>hello</td>
    <td>world</td>
  </tr>
</table>

А вот и скриншоты:

  1. Как это выглядит в Firefox

How it looks in Firefox

  1. Как это выглядит в Chrome

How it looks in Chrome

  1. Как это выглядит в Edge

How it looks in Edge

Похоже, что Edge непосредственно применяет данный стиль к элементам <td> в <tr>, как будто я установил следующее:

table td {
  box-shadow: 0 0 0 1px red inset;
}
<table>
  <tr>
    <td>hello</td>
    <td>world</td>
  </tr>
</table>

Экспериментируя, кажется, что display: block, кажется, исправляет это и заставляет все браузеры отображать тень (почти) одинаково

table tr {
  box-shadow: 0 0 0 1px red inset;
  display: block;
}
<table>
  <tr>
    <td>hello</td>
    <td>world</td>
  </tr>
</table>
  1. Как display: block выглядит в Firefox

imagedisplay: block looks in Firefox">

  1. Как display: block выглядит в Chrome

imagedisplay: block looks in Chrome">

  1. Как display: block выглядит в Edge

imagedisplay: block looks in Edge">

Edge отображает box-shadow на <tr>, а Firefox и Chrome имеют одинаковые пробелы слева и справа.

В соответствии с box-shadow проектом спецификаций предполагается, что он применим ко всем элементам. Меня интересует, почему Edge делает то, что делает: почему он пропускает <tr> и применяет CSS непосредственно к <td> элементам? Это кажется совершенно не интуитивным - другие свойства, такие как border, не ведут себя таким образом - если вы примените это к родителю, все дети тоже не получат border.

1 Ответ

0 голосов
/ 18 апреля 2019

Ограниченные свойства CSS, применяемые к элементам (и другим элементам с «display: table-row»), были такими, какими они были с тех пор, как CSS впервые стал доступен.Другие свойства CSS3 перечислены в спецификациях как относящиеся ко «всем элементам», но, очевидно, Edge применяет их к ячейкам вместо самой строки.

...