我正在尝试在移动设备上创建页面显示。它的布局如下:
/---------\ some text around
| | the image. some
| image | text around the
| | image. some text
\---------/ around the image.
some word around the image.
some word around the image.
我使用浮动样式来实现:
<div style="word-wrap: break-word; word-break: break-all;">
<img src="someimg.jpg" style="float: left;"/>
some text around the image. some text around the image. ...
</div>
但是,如果单词长度超过右侧区域最大长度但比整个div短,则不会中断,而只是将其移动到图像下方。
/---------\ some text around
| | the image.
| image |
| |
\---------/
a-word-longer-than-right will
not be break and just display
below the image while a-word-
longer-than-the-whole-area-wi
ll-be-break-into-next-line
如何将这个词打破比右侧更长的时间并将空白区域填满?
答案 0 :(得分:3)
在长词中插入­
个软分解符。有各种各样的PHP库可以根据字典为您做到这一点。
答案 1 :(得分:1)
可以使用PHP来准备文本块,缩短长字,例如......
$words = explode(' ',$str);
foreach ($words as $word) {
if (strlen($word) > 20) {
$part1 = substr($word,0,20);
$part2 = substr($word,21);
$newwords[] = $part1 .' '. $part2;
} else {
$newwords[] = $word;
}
}
$newstr = implode(' ',$newwords);
答案 2 :(得分:0)
您可以在长字中撒上<wbr>
个标签。浏览器将在需要时使用它们来中断。如果不需要,它不会在那里打破。这是你的jsfiddle示例修复:http://jsfiddle.net/vAdPy/
请注意,<wbr>
标记越接近彼此,您获得的效果就越好,因为浏览器有更多选项可以找到合适的地方来打破长字。
这是一个将<wbr>
标记洒入文本的PHP脚本。
<?php
$word = 'thisisaverylongword';
$wbr_word = preg_replace('/(..)/', '\\1<wbr>', $word);
// $wbr_word is now "th<wbr>is<wbr>is<wbr>av<wbr>er<wbr>yl<wbr>on<wbr>gw<wbr>or<wbr>d"
?>
这会在长文本的每两个字符(请注意正则表达式中的两个点)之后插入<wbr>
标记。您可以更改正则表达式中的点数,以控制两个连续<wbr>
标记之间的距离。
答案 3 :(得分:0)
对我来说,这个解决方案是最好的(使用长词和浮点元素):
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
http://blog.kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/
Chrome中只有问题。