以下标记和CSS会在Chrome中导致奇怪的行为:
#parent {
background: yellow;
height: 120px;
margin-bottom: 20px;
width: 100px;
word-wrap: break-word;
}
#box {
background: red;
float: left;
height: 100px;
width: 100%;
}
<div id="parent">
<div id="box"></div>
<div>OIL</div>
</div>
<div id="parent">
<div id="box"></div>
<div>OWL</div>
</div>
上面的示例(包含单词OIL)会导致单词中断,即使右侧没有空间。较低者没有。我假设它与字符宽度有关。在其他浏览器中,单词始终显示在框下方,如预期的那样。
是否有人知道导致此行为的原因或是否有解决方法?但是,size,float和自动换行属性必须保留。
编辑:哦,顺便说一句,写这样的标记似乎可以修复它,但它不是我可以控制的东西(想象用户通过tinyMCE输入):
<div id="parent">
<div id="box"></div>
<div>
OIL
</div>
</div>
答案 0 :(得分:2)
我想这个bug会及时修复,但与此同时你可以使用letter-spacing
来增加字母占用的空间并强制预期的行为。
.parent {
background: yellow;
height: 120px;
margin-bottom: 20px;
width: 100px;
word-wrap: break-word;
}
.box {
background: red;
float: left;
height: 100px;
width: 100%;
}
.word {
letter-spacing: 1.8px;
}
&#13;
<div class="parent">
<div class="box"></div>
<div class="word">OIL</div>
</div>
<div class="parent">
<div class="box"></div>
<div class="word">OWL</div>
</div>
&#13;
答案 1 :(得分:0)
css中的浮动元素会导致这样的错误。在以前版本的Internet Explorer中,我们曾经一直看到这样的问题。
如果我浮动一个元素,并希望其他元素保持完整,我通常会使用&#34; clear:both&#34;在下一个元素上,以便该元素和之后的元素不会受到影响。
答案 2 :(得分:0)
在OIL或任何牢不可破的单词后面给出一个空格字符。这可能会修复错误。由于自动换行符打破了单词中的所有字母。
#parent {
background: yellow;
height: 120px;
margin-bottom: 20px;
width: 100px;
word-wrap: break-word;
}
#box {
background: red;
float: left;
height: 100px;
width: 100%;
}
&#13;
<div id="parent">
<div id="box"></div>
<div>OIL </div>
</div>
<div id="parent">
<div id="box"></div>
<div>OWL</div>
</div>
&#13;
答案 3 :(得分:0)
#parent {
background: yellow;
height: 120px;
margin-bottom: 20px;
width: 100px;
word-wrap: break-word;
}
#box {
background: red;
height: 100px;
float:left;
width: 100%;
}
.box-2 {
clear:both;
}
<div id="parent">
<div id="box"></div>
<div class="box-2">OIL</div>
</div>
<div id="parent">
<div id="box"></div>
<div>
OIL
</div>
</div>
答案 4 :(得分:0)
浮动元素不在流,因此它们会重叠以下块,除非它们建立块格式化上下文。这不应该是一个问题,因为线框减少了,所以文本应该在全宽线框中被推到浮动下方。
但是,出于某种原因,这种布局会让Chrome感到困惑。要解决此问题,您可以使用display: inline-block
建立块格式化上下文。
#parent {
background: yellow;
height: 120px;
margin-bottom: 20px;
width: 100px;
word-wrap: break-word;
}
#box {
background: red;
float: left;
height: 100px;
width: 100%;
}
#box + div {
display: inline-block;
}
&#13;
<div id="parent">
<div id="box"></div>
<div>OIL</div>
</div>
<div id="parent">
<div id="box"></div>
<div>OWL</div>
</div>
&#13;