css之自动换行

CSS文本换行技巧

  自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,

  挺让人头疼,下面介绍的是CSS如何实现换行的方法

  对于div,p等块级元素

  正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义

  的宽度之后自动换行

  html:

 
<div id="wrap">正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义</div>

  css:

 
#wrap{white-space:normal; width:200px; }

  1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word-wrap : break-

word ;或者word-break:break-all;实现强制断行

 
#wrap{word-break:break-all; width:200px;}

  或者

 
#wrap{word-wrap:break-word; width:200px;}

  

 
<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

  效果:可以实现换行

2.(Firefox浏览器)连续的英文字符和阿拉伯数字的断行,Firefox的所有版本的

没有解决这个问题,我们只有让超出边界的字符隐藏或者,给容器添加滚动条

 
#wrap{word-break:break-all; width:200px; overflow:auto;}

  

 
<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

  效果:容器正常,内容隐藏

对于table

1. (IE浏览器)使用 table-layout:fixed;强制table的宽度,多余内容隐藏

 
<table style="table-layout:fixed" width="200">
<tr>
<td>abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss
</td>
</tr>
</table>

  效果:隐藏多余内容

2.(IE浏览器)使用 table-layout:fixed;强制table的宽度,内层td,th采用word-

break : break-all;或者word-wrap : break-word ;换行

 
<table width="200" style="table-layout:fixed;">
<tr>
<td width="25%" style="word-break : break-all; ">abcdefghigklmnopqrstuvwxyz 1234567890
</td>
<td style="word-wrap : break-word ;">abcdefghigklmnopqrstuvwxyz 1234567890
</td>
</tr>
</table>

  效果:可以换行

3. (IE浏览器)在td,th中嵌套div,p等采用上面提到的div,p的换行方法

4.(Firefox浏览器)使用 table-layout:fixed;强制table的宽度,内层td,th采用

word-break : break-all;或者word-wrap : break-word ;换行,使用

overflow:hidden;隐藏超出内容,这里overflow:auto;无法起作用

<table style="table-layout:fixed" width="200">
<tr>
<td width="25%"  style="word-break : break-all; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
<td width="75%" style="word-wrap : break-word; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
</tr>
</table>

  效果:隐藏多于内容

5.(Firefox浏览器) 在td,th中嵌套div,p等采用上面提到的对付Firefox的方法

最后,这种现象出现的几率很小,但是不能排除网友的恶搞。

下面是提到的例子的效果

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>字符换行</title>
<style type="text/css">
table,td,th,div { border:1px green solid;}
code { font-family:"Courier New", Courier, monospace;}
</style>
</head>
<body>
<h1><code>div</code></h1>
<h1><code>All white-space:normal;</code></h1>
<div style="white-space:normal; width:200px;">Wordwrap still occurs in a td element that has its WIDTH attribute set to a value smaller than the unwrapped content of the cell, even if the noWrap property is set to true. Therefore, the WIDTH attribute takes precedence over the noWrap property in this scenario</div>
<h1><code>IE \ word-wrap : break-word ;</code></h1>
<div style="word-wrap : break-word ; width:200px;">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>
<h1><code>IE \ word-break:break-all;</code></h1>
<div style="word-break:break-all;width:200px;">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>
<h1><code>Firefox/ word-break:break-all; overflow:auto;</code></h1>
<div style="word-break:break-all; width:200px; overflow:auto;">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>
<h1><code>table</code></h1>
<h1><code>table-layout:fixed;</code></h1>
<table style="table-layout:fixed" width="200">
<tr>
<td>abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss</td>
</tr>
</table>
<h1><code>table-layout:fixed; word-break : break-all; word-wrap : break-word ;</code></h1>
<table width="200" style="table-layout:fixed;">
<tr>
<td width="25%" style="word-break : break-all; ">abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss</td>
<td style="word-wrap : break-word ;">abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss</td>
</tr>
</table>
<h1><code>FF \ table-layout:fixed; overflow:hidden;</code></h1>
<table style="table-layout:fixed" width="200">
<tr>
<td width="25%"  style="word-break : break-all; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
<td width="75%" style="word-wrap : break-word; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
</tr>
</table>
</body>
</html>

  

转载于:https://www.cnblogs.com/xupeiyu/p/3625946.html

CSS 中实现 `display` 元素的自动换行效果,主要涉及对容器的布局方式和元素显示行为的控制。以下是几种常见方法: ### 3. 使用 Flex 布局实现自动换行 Flex 布局是实现响应式布局的重要工具,通过设置容器的 `flex-wrap` 属性,可以轻松实现元素的自动换行。 #### 3.1 Flex 容器属性设置 ```css .container { display: flex; flex-wrap: wrap; /* 允许子元素换行 */ } ``` 上述代码中,`flex-wrap: wrap;` 表示子元素在容器空间不足时会自动换行,保持整体布局的灵活性[^1]。 #### 3.2 控制子元素宽度 为了确保子元素在特定条件下换行,可以为子元素设置宽度,例如: ```css .item { flex: 0 0 30%; /* 每个子元素占据容器宽度的30% */ margin: 1%; /* 添加一些间距 */ } ``` 通过调整 `flex` 属性中的宽度值,可以控制每行显示的元素数量,从而实现更精确的自动换行效果。 --- ### 4. 使用 Grid 布局实现自动换行 CSS Grid 布局提供了更强大的二维布局能力,适合实现复杂的自动换行布局。 #### 4.1 设置 Grid 容器 ```css .container { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; /* 子元素之间的间距 */ } ``` 上述代码中,`repeat(auto-fill, minmax(200px, 1fr))` 表示容器会根据可用空间自动调整列数,每个子元素最小宽度为 `200px`,最大为 `1fr`(即等分剩余空间)。 --- ### 5. 使用 `inline-block` 实现自动换行 对于简单的文本或块级元素的自动换行,可以使用 `display: inline-block`。 #### 5.1 示例代码 ```css .desc { display: inline-block; } .tel { width: 400px; word-break: break-word; } ``` 该方法适用于多个 `.desc` 元素在同一行显示,当内容超出容器宽度时会自动换行[^3]。 --- ### 6. 控制文本内容的自动换行 如果需要控制文本内容的换行行为,可以使用 `white-space` 和 `word-break` 属性。 #### 6.1 示例代码 ```css pre { white-space: pre-wrap; /* 保留空格和换行符,允许自动换行 */ white-space: -moz-pre-wrap; /* Firefox 专用 */ } ``` 此方法适用于 `<pre>` 标签内的文本自动换行,确保长文本在容器内自动换行[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值