整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS自动换行、强制不换行、强制断行、超出显示省略号

标签是默认是自动换行的,因此设置好宽度之后,能够较好的实现效果,但是最近的项目中发现,使用ajax加载数据之后,p标签内的内容没有换行,导致布局错乱,于是尝试着使用换行样式,虽然解决了问题,但是并没有发现本质原因,本质在于,我当时获取的数据是一长串的数字,浏览器应该是对数字和英文单词处理方式相近,不会截断。

先给出各种方式,再具体介绍每一个属性。

强制不换行

p { white-space:nowrap; }

自动换行

p { word-wrap:break-word; }

强制英文单词断行

p { word-break:break-all; }

*注意:设置强制将英文单词断行,需要将行内元素设置为块级元素。

超出显示省略号

p{text-overflow:ellipsis;overflow:hidden;}

white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;

white-space 属性设置如何处理元素内的空白

normal 默认。空白会被浏览器忽略。

pre 空白会被浏览器保留。其行为方式类似 HTML 中的 pre 标签。

nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止。

pre-wrap 保留空白符序列,但是正常地进行换行。

pre-line 合并空白符序列,但是保留换行符。

inherit 规定应该从父元素继承 white-space 属性的值。

word-wrap: normal|break-word;

word-wrap 属性用来标明是否允许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的自然断句点时产生溢出现象。

normal: 只在允许的断字点换行(浏览器保持默认处理)

break-word:在长单词或URL地址内部进行换行

word-break: normal|break-all|keep-all;

word-break 属性用来标明怎么样进行单词内的断句。

normal:使用浏览器默认的换行规则。

break-all:允许再单词内换行

keep-all:只能在半角空格或连字符处换行

举例看起区别:

<!doctype html>

<html lang="en">

<head>

<!--网站编码格式,UTF-8 国际编码,GBK或 gb2312 中文编码-->

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<meta name="Keywords" content="关键词一,关键词二">

<meta name="Description" content="网站描述内容">

<meta name="Author" content="Yvette Lau">

<title>Document</title>

<!--css js 文件的引入-->

<style>

.word{background:#E4FFE9;width:250px;margin:50px auto;padding:20px;font-family:"microsoft yahei";}

/* 强制不换行 */

.nowrap{white-space:nowrap;}

/* 允许单词内断句,首先会尝试挪到下一行,看看下一行的宽度够不够,

不够的话就进行单词内的断句 */

.breakword{word-wrap: break-word;}

/* 断句时,不会把长单词挪到下一行,而是直接进行单词内的断句 */

.breakAll{word-break:break-all;}

/* 超出部分显示省略号 */

.ellipsis{text-overflow:ellipsis;overflow:hidden;}

</style>

</head>

<body>

<div class = "word">

<p class = "nowrap">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfs</p>

<p class = "breakword">wordwrap:break-word;absavhsafhuafdfbjhfvsalguvfaihui</p>

<p class = "breakAll">wordwrap:break-word;absavhsafhuafdfbjhfvsalguvfaihuivf</p>

<p class = "normal">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfsa</p>

<p class = "ellipsis">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfsab</p>

</div>

</body>

</html>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

效果如下:

5代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        p{
            width: 200px;
            background-color: #aaa;
        }
        .p1{
            white-space: nowrap;
        }
        .p2{
            word-wrap: break-word;
        }
        .p3{
            word-break: break-all;
        }
        .p4{
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    </style>
</head>
<body>
<p class="p1">comrem dfgdsgfd sdffafsdafa dsfaf sdfsaf thgwer awdafqew</p>
<p class="p2">ljj ljljoi hsgfa tgregv dsgrewg ygvsg werfwgr rweg vcdgss</p>
<p class="p3">comrem dfgdsgfd sdffafsdafa dsfaf sdfsaf thgwer awdafqew</p>
<p class="p4">comrem dfgdsgfd sdffafsdafa dsfaf sdfsaf thgwer awdafqew dgadsfs</p>
</body>
</html>


  1. 强制不换行:white-space 属性是用来设置如何处理元素中的空白;

属性:

  • normal 默认。空白会被浏览器忽略。
  • pre 空白会被浏览器保留。其行为方式类似 HTML 中的 pre 标签。
  • nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止。
  • pre-wrap 保留空白符序列,但是正常地进行换行。
  • pre-line 合并空白符序列,但是保留换行符。
  • inherit 规定应该从父元素继承 white-space 属性的值。
p{  white-space: nowrap;}


2、自动换行:word-wrap属性用来标明是否允许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的自然断句点时产生溢出现象;

属性:

  • normal: 只在允许的断字点换行(浏览器保持默认处理)
  • break-word:在长单词或URL地址内部进行换行
p{  word-wrap: break-word;}


3、强制断行:word-break 属性用来标明怎么样进行单词内的断句;

属性:

  • normal:使用浏览器默认的换行规则。
  • break-all:允许在单词内换行
  • keep-all:只能在半角空格或连字符处换行
p{  word-break: break-all;}


4、溢出显示省略号:ext-overflow CSS 属性确定如何向用户发出未显示的溢出内容信号。它可以被剪切,显示一个省略号(’…’,U + 2026 HORIZONTAL ELLIPSIS)或显示一个自定义字符串;

  • 属性:clip这个关键字的意思是"在内容区域的极限处截断文本",因此在字符的中间可能会发生截断。为了能在两个字符过渡处截断,你必须使用一个空字符串值 (’’)(To truncate at the transition between two characters, the empty string value (’’) must be used.)。此为默认值。
  • ellipsis这个关键字的意思是“用一个省略号 (’…’, U+2026 HORIZONTAL ELLIPSIS)来表示被截断的文本”。这个省略号被添加在内容区域中,因此会减少显示的文本。如果空间太小到连省略号都容纳不下,那么这个省略号也会被截断。
  • string用来表示被截断的文本。字符串内容将被添加在内容区域中,所以会减少显示出的文本。如果空间太小到连省略号都容纳不下,那么这个字符串也会被截断。
p{ overflow: hidden; text-overflow: ellipsis;}

绍得比较粗略,大家只要有个印象就可以,后边我们会在详细的在具体的前段开发项目中来讲解.

一 css3伪类

css3中的伪类允许我们在不适用于JavaScript等脚本的情况下去设置web页面中某些特定的元素的属性.

伪类通常以":"(冒号)开头. :first-child和:last-child是较为常用的伪类.

:first-child将会匹配该元素中的第一个子元素.

html代码:

<div id="parent">

<p>又见雪飘过</p>

<p>飘于伤心记忆中</p>

<p>让我再想你</p>

<p>却掀起我的痛</p>

</div>

css代码:

#parent p:first-child{color:green; text-decoration:underline; }

执行结果如下:

:last-child则是选取最后一个元素.

二 伪元素

伪元素用于选取元素的特定部分.

在css中有五个伪元素,每个都以一个双冒号(::)开头

::first-line 选择器中文本的第一行

::first-letter 选择器中文本的第一个字母

::selection 选择用户选择的元素部分

::before 在元素之前插入一些内容

::after 在元素之后插入一些内容

在下面的例子中,::first-line伪元素用于为文本的第一行设置样式.

html代码:

<div id="parent1">

<p>早经分了手

<br>为何热爱尚情重

<br>独过追忆岁月

<br>或许此生不会懂</p>

</div>

css代码:

#parent1 p::first-line{color:#AE4141;}

效果如下:

::selection伪元素用于对选定的文本进行设置样式.

css代码:

#parent1 p::-webkit-selection{background:#AE4141; color:#fff;}

#parent1 p::selection{background:#AE4141; color:#fff;}

效果如下:

使用了浏览器前缀-webkit-.有的浏览器会不支持::seleciton伪元素

使用::before和::after伪元素允许我们向页面添加各种各样的内容.

在下面的例子中,::before伪元素用于在段落之前添加图像.

html代码:

<div class="parent">

<p>又再想起你</p>

<p>抱拥飘飘白雪中</p>

<p>让你心中暖</p>

<p>去驱走我冰冻</p>

</div>

css代码:

div.parent p::before{ content:url("before.jpg");}

效果如下:

请注意样式中使用的content关键字

::after则会在末尾增加样式.

三 css3自动换行

word-wrap属性允许对长单词进行自动换行处理.它有两个属性值:normal和break-word.

html代码:

<p id="word-wrap">冷风催我醒,原来共你是场梦,像那飘飘雪泪下,弄湿冷清的晚空.原来是那么深爱你.</p>

css代码:

#word-wrap{width:100px; height:100px; border:2px solid #000000; word-wrap:normal; }

效果如下:

由于是段落内容是中文,所以word-wrap:normal; 和word-wrap:break-word; 效果是一样的都会自动换行.

四 @font-face

@font-face允许将自定义字体加载到网页中.借助于此规则,设计不再局限于安装在用户计算机上的字体

在IE8和更低版本中,url必须指向Embedded OpenType(eot)文件,而firefox,chrome等支持True Type(ttf)字体和OpenType(otf)字体.

定义一个名为"text"的新字体

@font-face{font-family:"text"; src:url("text.otf"); }

然后这个新的字体可以使用了如p{font-family:text;}