css控制自动换行,防止表格或div等被撑破

本文介绍如何使用CSS属性word-break与word-wrap控制文本换行,并提供了一种使用JavaScript解决Firefox浏览器中长文本换行问题的方法。

style="table-layout: fixed;WORD-BREAK: break-all; WORD-WRAP: break-word"

语法:
word-break : normal | break-all | keep-all

参数:
normal :  依照亚洲语言和非亚洲语言的文本规则,允许在字内换行
break-all :  该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
keep-all :  与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本

语法:
word-wrap : normal | break-word

参数:
normal :  允许内容顶开指定的容器边界
break-word :  内容将在边界内换行。如果需要,词内换行(word-break)也行发生

说明:
设置或检索当当前行超过指定容器的边界时是否断开转行。

语法:
table-layout : auto | fixed

参数:
auto :  默认的自动算法。布局将基于各单元格的内容。表格在每一单元格读取计算之后才会显示出来。速度很慢
fixed :  固定布局的算法。在这算法中,水平布局是仅仅基于表格的宽度,表格边框的宽度,单元格间距,列的宽度,而和表格内容无关

说明:
设置或检索表格的布局算法。
-------------------------------------------------
以上只能解决IE的问题,这里Firefox中我们使用JS插入的方法来解决

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
<!-- 
div {
  width:300px;
  word-wrap:break-word;
  border:1px solid red;
  }
-->
</style>


<div id="ff">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

<script type="text/javascript">
function toBreakWord(intLen){
var obj=document.getElementById("ff");
var strContent=obj.innerHTML;  
var strTemp="";
while(strContent.length>intLen){
strTemp+=strContent.substr(0,intLen)+"
";  
strContent=strContent.substr(intLen,strContent.length);  
}
strTemp+="
"+strContent;
obj.innerHTML=strTemp;
}
if(document.getElementById  &&  !document.all)  toBreakWord(37)
</script>

 

在 HTML 和 CSS 中,实现 `div` 元素的自动换行通常涉及对容器布局方式的设置以及对内部元素为的控制。以下是一些常见的方法和对应的 CSS 设置: ### 使用 Flexbox 实现每显示两个 `div` Flexbox 是一种强大的布局工具,可以轻松地控制子元素的排列方式。通过设置 `flex-wrap: wrap` 可以让子元素在空间足时自动换行。 ```css .center { display: flex; flex-wrap: wrap; gap: 10px; /* 可选:设置子元素之间的间距 */ } .center div { flex: 0 0 calc(50% - 5px); /* 每显示两个元素,并考虑 gap 的影响 */ box-sizing: border-box; } ``` 在这个例子中,`.center` 容器使用了 `flex-wrap: wrap` 来允许子元素在宽度足时自动换行。每个子 `div` 的宽度被设置为 `calc(50% - 5px)`,这样它们可以在一中并排显示两个,并且会根据容器的宽度自动换行[^2]。 --- ### 使用 Grid 布局实现每显示两个 `div` CSS Grid 提供了更加灵活的二维布局能力,可以通过 `grid-template-columns` 明确指定列的数量。 ```css .center { display: grid; grid-template-columns: repeat(auto-fill, minmax(48%, 1fr)); gap: 10px; } ``` 上面的代码使用了 `repeat(auto-fill, minmax(48%, 1fr))`,这意味着每一列的最小宽度为 48%,最大宽度为 1fr(即等分剩余空间)。当容器宽度足以容纳更多列时,子元素会自动换行[^2]。 --- ### 控制文字内容的自动换行 如果 `div` 内的文字内容过长导致无法正确换行,可以使用以下 CSS 属性进控制: - **强制换行**: ```css .center div { word-break: break-all; } ``` 此属性适用于处理长单词连续无空格的字符串(如 URL),确保其在任何位置都能换行[^3]。 - **保留空格但允许软换行**: ```css .center div { white-space: pre-wrap; } ``` 这个属性允许保留原始文本中的空格和换行符,同时允许在必要时进换行。 - **兼容性更好的换行策略**: ```css .center div { word-wrap: break-word; } ``` 在旧版浏览器中,这个属性比 `word-break` 更加可靠,尤其适合处理长英文单词数字串的换行需求[^4]。 --- ### 结合表格布局实现自动换行 如果你希望 `div` 为类似于表格单元格,并且希望在内容过长时隐藏换行,可以结合 `table-layout: fixed` 和 `word-break`: ```css .main { display: table; table-layout: fixed; width: 100%; } .block { display: table-cell; word-break: break-all; } ``` 这种方式特别适用于需要固定列宽并且内容必须适应的情况[^5]。 --- ### 示例代码 以下是一个完整的示例,展示了如何将多个 `div` 排列为每两个,并确保内容自动换行: ```html <div class="home"> <div class="top"> <h1>购物商城</h1> </div> <div class="center"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> </div> </div> ``` ```css .center { display: flex; flex-wrap: wrap; gap: 10px; } .center div { flex: 0 0 calc(50% - 5px); word-break: break-all; padding: 10px; border: 1px solid #ccc; box-sizing: border-box; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值