使用inline-block解决文字过长自动换行的问题

做聊天的对话框的时候,经过测试发现一个bug,发送文字过长会导致 <span>标签内容溢出,出来的效果会产生 <span>标签重叠在一起。

而使用 <div>可以在内容过长时自动换行,而且不会堆叠在一起,即把 <div>容器撑大。

但是又产生了一个问题:内容过短时 <div>的宽度还是按最大的百分比来的,这样会造成文字很少,但是对话框背景框却顶到最宽了。

要实现的效果是对话框根据文字长度自动变长变短,并且有一个最大宽度,即 max-width属性保证不变的过宽而不好看了。

后来尝试了 <label>,居然完美的实现了效果。既有随着文字自动撑大容器宽度,又能实现达到一定宽度换行,完美的实现了想要的效果。

网上查了下, <label>是用于表单绑定 <input>标签的,即通过 for属性来绑定对应 <input>id,点击label会触发相应的 <input>标签点击事件。

所以想了想,应该跟 <label>这个标签的功能属性无关,因为它不是设计用来承载文本内容的,不像 <p><span>

最后果断想到, <label>既有 <div>的自动换行的效果,又有 <span>自动撑大容器的效果,那应该是内联块元素,即 display:inline-block。很可能是这个属性在起作用。

所以果断把 <span>加上display:inline-block,成功实现了想要的效果。
但又有一个问题,纯连续字母和数字不会换行,最后加上word-wrap: break-word强制自动换行搞定。

word-break: break-all会当文本达到宽度就强制换行,而不管单词有没有完整显示,不推荐使用。比如consulate只显示cons就截断了。而word-wrap: break-word会把consulate直接换到下一行显示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,801评论 1 92
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,321评论 1 41
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,803评论 0 2
  • 缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。 清明前后,春花开遍屋后的山野。“清明时节雨纷纷”,郊区始终弥...
    岑飞君阅读 555评论 0 7
  • 一次偶然的机会,能够有机会一睹中国汉城的美景,兴奋的拿出随身携带的手机记录下眼前的画面 夜幕降临,淅淅沥沥下起了小...
    水泉印阅读 326评论 2 2