【发布时间】:2019-12-30 06:47:10
【问题描述】:
我发现 Safari (OS X) 存在问题: https://codepen.io/alexlouden/pen/jONyZKb
document
.querySelectorAll('.parent')
.forEach(el => {
el.addEventListener("mouseover", event => {
event.target.style.color = 'blue';
})
})
* {
box-sizing: border-box;
}
.parent {
display: flex;
align-items: center;
justify-content: center;
width: 280px;
padding: 32px;
background-color: #e99;
margin: 32px;
text-align: center;
}
.child {
flex: 1;
max-width: 100%;
background-color: #99e;
}
.grandchild {
overflow-wrap: break-word;
border: 1px dotted black;
}
<div>
In Safari, when you hover on the red area the XXXs will stop wrapping. <br/>
Hover over the blue area and it will fix and re-wrap.
</div>
<div class="parent">
<div class="child">
<div class="grandchild">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</div>
</div>
</div>
<div class="parent">
<div class="child">
<div class="grandchild">
Centered
</div>
</div>
</div>
grandchild 似乎不遵守 child 的最大宽度约束,但仅在修改父项样式时 - 而不是在第一次加载时。
我想知道是什么导致了这种行为,以及这是否已经是 Safari 的一个已知问题,或者我是否应该报告这个错误?
【问题讨论】:
-
您没有尝试将孩子设置为
flex: 1; max-width: 100%,而是尝试了完整的 flex 等效项?删除这两行并尝试flex: 0 1 100%。 -
@Michael_B 感谢您的想法!我刚刚尝试了
flex: 0 1 100%、flex: 1 0 100%(还有flex-basis: auto只是为了很好的衡量),但它们都不会导致文本换行:imgur.com/a/0R23FpR。似乎让文本完全换行的唯一方法是添加min-width、width或max-width,但它们似乎都容易受到上述错误的影响! -
您在
.child上尝试过min-width: 0? -
@Michael_B 是的,恐怕是 - 不走运!抱歉延迟回复!
标签: css safari flexbox word-wrap