Когда для элемента установлено значение display: inline-flex
и установлено overflow
, Firefox добавляет около 6 пикселей пробела (аналогично пробелу 3 пикселя обычных встроенных элементов).
Fire Fox
Хром/Сафари/Эдж
Хотите знать, является ли это ошибкой Firefox или всех других браузеров?
Код: https://codepen.io/cloakedninjas/pen/XQMjvq
.wrapper {
border: 1px red solid;
}
ul {
margin: 0;
display: inline-flex;
list-style-type: none;
overflow-x: auto; /* comment out to remove whitespace */
}
li {
flex: 0 1 100px;
margin-right: 10px;
background: #eee;
}
<div class = "wrapper">
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</div>
Действительно так - спасибо!
Сброс vertical-align
свойства исправления this. Я предполагаю, что проблема (разница в поведении с Firefox и другими браузерами) — это строка в спецификации1:
The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge.
Взгляните на приведенную ниже демонстрацию в Firefox и Chrome — Firefox обрабатывает inline-flex
так же, как и inline-block
, используя нижнее поле в качестве базовой линии.2:
.wrapper {
border: 1px red solid;
}
ul {
margin: 0;
display: inline-flex;
list-style-type: none;
overflow: auto;
height: 50px;
}
li {
flex: 0 1 100px;
margin-right: 10px;
background: #eee;
}
<div class = "wrapper">
inline
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</div>
Хром:
Fire Fox:
Еще одна интересная темка:
Почему базовая линия элемента `inline-block` с `overflow:hidden` устанавливается на его нижнее поле?
1Вертикальное выравнивание: Спецификация вертикального выравнивания
2Черновики редактора рабочей группы CSS: Спецификация не говорит, вызывает ли «переполнение: [невидимый]» в контейнере flex/grid другую базовую линию (как это происходит для встроенного блока)
vertical-align: top;
исправит это (базовая проблема, не уверен, почему это происходит только в Firefox)