http://jsfiddle.net/bZaKK/ (попробуйте в Firefox и Chrome, чтобы увидеть разницу).
<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>
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.
Chrome действительно дает правильное поведение. Неупорядоченный список присваивается position:relative
, поэтому строка будет располагаться absolute
, relative
до ul.
Добавление left:0
в li:last-child:before
даст такое же поведение в firefox
left
оставить вauto
, должно остаться там, где оно было, если оно не было позиционировано.relative
кli
? Я нахожу достаточно странным в этом jsfiddle, что еслиli
имеетdisplay: inline
, last-child: before позиционируется абсолютно по отношению к ul, но если у него естьdisplay: inline-block;
, он ведет себя как относительно этого