: last-child: before с количеством столбцов в Chrome и Firefox ведет себя по-разному

0

Ожидаемое поведение (Firefox)

Изображение 174551

Неожиданный (Chrome)

Изображение 174551

Демо JSFiddle

http://jsfiddle.net/bZaKK/ (попробуйте в Firefox и Chrome, чтобы увидеть разницу).

HTML

<ul>
  <li><a href="">List item 1</a></li>
  <li><a href="">List item 2</a></li>
  ...
  <li><a href="">List item 9</a></li>
</ul>

CSS

ul {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  -moz-column-count: 4;
  -webkit-column-count: 4;
  column-count: 4;
  }

li:last-child:before {
  position: absolute;
  content: " ";
  display: block;
  background-color: red;
  height: 1px;
  top: -1px;
  width: 100%;
  }

Вопрос

Почему это происходит и как я могу исправить это с помощью чистого CSS? Является ли это ошибкой firefox или хромной ошибкой?

Примечание. Я обнаружил эту явную ошибку при ответе на этот вопрос: Стилирование первого элемента в столбце css.

Теги:
browser
pseudo-element
pseudo-class

1 ответ

0

Chrome действительно дает правильное поведение. Неупорядоченный список присваивается position:relative, поэтому строка будет располагаться absolute, relative до ul.

Добавление left:0 в li:last-child:before даст такое же поведение в firefox

http://jsfiddle.net/bZaKK/2/

  • 1
    Да, но горизонтальное положение, если left оставить в auto , должно остаться там, где оно было, если оно не было позиционировано.
  • 0
    Разве это не должно быть по relative к li ? Я нахожу достаточно странным в этом jsfiddle, что если li имеет display: inline , last-child: before позиционируется абсолютно по отношению к ul, но если у него есть display: inline-block; , он ведет себя как относительно этого
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню