码迷,mamicode.com
首页 > 其他好文 > 详细

文本显示中的换行和省略号显示问题

时间:2016-08-01 21:05:34      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

在工作中经常会遇到文本显示的一些样式调整,今天就来说说文本显示的几个问题 。

一、强制换行的方法

1 word-break 是css3中的文本属性,规定非中日韩文本的换行规则,规定自动换行的处理方法,通过这个属性,可以让浏览器在特定的位置断行。w3c中有3个取值。

word-break: normal|break-all|keep-all;
normal是浏览器默认的自动换行的值。
break-all 允许在单词内换行。
keep-all 只能在半角空格或连字符处换行。
但如果想断行的话,一定要设置宽度;

举例如下
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<style>
    table {
        height:200px;
    }
    td {
        width:62px;
        word-break:break-all;
    }
</style>
</head>
<body>
<table>
    <thead>
        <tr>
            <th>测试</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1第一格sjgdasgfjasgjgf\gsakjahdfkjgsajfgjskjsahfkjsahfdjjhfjkashdkjfhdjhjsfsahsjjk</td>
            <td>1第二格</td>
        </tr>
        <tr>
            <td>2第一格</td>
            <td>2第二格</td>
        </tr>
    </tbody>
</table>
</body>
</html>

如果不设置宽度值,或者word-break的值设为normal,结果如下:

技术分享

如果设置width,并且word-break的值为break-all,则结果是:

技术分享

除此之外,这个属性对非中日韩外的换行也是可以的:以数字为例

<style>
    table {
        height:200px;
     border:1px solid blue;
} td {
    border:1px solid blue;  
width:62px; word-break:break-all; } </style> </head> <body> <table> <thead> <tr> <th>测试</th> </tr> </thead> <tbody> <tr> <td>1第一格 111111111111111111111111111111111 Life doesn‘t just happen to you; you receive everything in your life based on what you‘ve given.1111111111111111111</td> <td>1第二格</td> </tr> <tr> <td>2第一格</td> <td>2第二格</td> </tr> </tbody> </table> </body>

如果不设置这个属性值的话,结果为:

技术分享

如果设置的话,运行结果为:

技术分享

兼容性:所有主流浏览器都支持 word-break 属性,除了 Opera。可以通过csshack加前缀 -o- 解决。

2 word-wrap 属性

word-wrap :属性允许长单词或 URL 地址换行到下一行;

word-wrap: normal|break-word;
normal : 只在允许的断字点换行(浏览器保持默认处理)。
break-word : 在长单词或 URL 地址内部进行换行。
具体效果,大家可以自己试一下


兼容性:所有主流浏览器都支持。

二、强制不换行
white-space 主要属性设置如何处理元素内的空白。
取值:
normal : 默认。空白会被浏览器忽略。
pre : 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap : 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。
pre-wrap : 保留空白符序列,但是正常地进行换行。
pre-line : 合并空白符序列,但是保留换行符。
inherit : 规定应该从父元素继承 white-space 属性的值。
举例如下:设置td不换行:
<style>
    table {
        height:200px;
        border:1px solid blue;
    }
    td {
        border:1px solid blue;
        width:62px;
        white-space: nowrap

    }
</style>
</head>

<body>
<table>
    <thead>
        <tr>
            <th>测试</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1第一格 111111111111111111111111111111111 Life doesn‘t just happen to you; you receive everything in your life based on what you‘ve given.1111111111111111111</td>
            <td>1第二格</td>
        </tr>
        <tr>
            <td>2第一格</td>
            <td>2第二格</td>
        </tr>
    </tbody>
</table>


</body>

结果如下:

技术分享

三、文本过长时显示省略号...
首先需要先介绍一下text-overflow 属性规定当文本溢出包含元素时发生的事情。
text-overflow: clip|ellipsis|string;
取值:
clip 不显示省略标记(...),而是简单的裁切
ellipsis :  当对象内文本溢出时显示省略标记(...) 
但是要想达到最终效果,还需要配合
display:inline-block|block;(针对不是不是块级元素或者不是行内块的元素设置)
overflow : hidden;
text-overflow : ellipsis;
word-wrap : normal ;
还有记得宽度值的设置。

兼容性: 所有主流浏览器都支持。
如下代码:
<style>
    li{
        border:1px solid blue;
        width:200px;
        
    }
    a {
        display :inline-block;
        white-space: nowrap;
        text-overflow:ellipsis;
        overflow:hidden;
        width: 150px;
    }
</style>
</head>
<body>
<ul>
    <li><a>测试</a></li>
    <li><a>一切发生在你身上的都不是碰巧。你获得什么,在于你付出了什么。</a></li>
    <li><a>Life doesn‘t just happen to you; you receive everything in your life based on what you‘ve given.</a></li>
</ul>
</body>

感兴趣的可以自己测试下效果。








文本显示中的换行和省略号显示问题

标签:

原文地址:http://www.cnblogs.com/clearsky/p/5727154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!