Ошибка Microsoft Edge с использованием переносов и flexbox
Этот код показывает два контейнера div. На div с идентификатором a
является display: flex;
задавать. На обоих у нас есть переносы, активированные с помощью -ms-hyphens: auto;
, Но в IE или Edge перенос работает только на div без подключенной flexbox. Как и ожидалось, он хорошо работает в Chrome и Firefox.
div {
max-width: 100px;
background: red;
-ms-hyphens: auto;
hyphens: auto;
margin-bottom: 10px;
}
#a {
display: flex;
}
<article>
<div id="a" lang="en">
Incomprehensibilities
</div>
<div id="b" lang="en">
Incomprehensibilities
</div>
</article>
https://codepen.io/anon/pen/jmGxJZ
У кого-нибудь есть решение?
1 ответ
Я наконец нашел ответ.
Согласно https://css-tricks.com/almanac/properties/h/hyphenate/
Свойство дефисов управляет переносом текста в элементах уровня блока.
Они говорят прямо block level elements
, Поэтому я решил не использовать flexbox, потому что на самом деле это не элемент блочного уровня, спасибо @LGSon.
Поэтому для центрирования и переноса текста я использовал подход https://css-tricks.com/centering-css-complete-guide/ для вертикального центрирования элемента уровня блока. Кроме того, согласно http://caniuse.com/, Chrome в Windows в любом случае не поддерживает переносы. Так что я использовал word-break: break-all;
только для Chrome с помощью взлома медиа-запроса отсюда /questions/26040953/kak-primenit-opredelennyie-pravila-css-tolko-k-chrome/26040963#26040963. Наконец, это работает для Chrome, FF и Safari на MAC OSX. Также для Edge и IE11 в Windows.
Вы можете увидеть мой результат на https://codepen.io/bierik/pen/mmBjqQ