【css】文字溢出,显示省略符号(...)/ 点点点

前言

  • CSS3
  • 文字溢出,显示省略符号需要区分情况进行处理:可分为单行和多行的情况。

单行文字溢出

假设有这样的需求,如图:
在这里插入图片描述
那么可以用如下代码实现:

<!DOCTYPE html>
<html>
<head>
<style> 
div.test
{
white-space:nowrap; 
width:12em; 
overflow:hidden; 
text-overflow:ellipsis;
border:1px solid #000000;
}
</style>

</head>

<body>

<p>div中完整的内容为 "文字溢出说三遍文字溢出说三遍文字溢出说三遍" :</p>

<div class="test">文字溢出说三遍文字溢出说三遍文字溢出说三遍</div>

</body>
</html>

实现功能的核心代码为:

div.test
{
white-space:nowrap; 
width:12em; 
overflow:hidden; 
text-overflow:ellipsis;
border:1px solid #000000;
}

说明:

  • white-space:nowrap; 含义为段落中的文本不进行换行
  • width:12em; 含义为div的宽度,目的是让文字显示不全(只能显示12个文字)
  • overflow:hidden; 含义为溢出的部分就不显示了
  • text-overflow:ellipsis;含义为显示省略符号来代表被修剪的文本。

这些组合到一起的含义为:当文字溢出时,显示省略号。

多行文字溢出

需求是防不胜防的,有可能会遇到这样的需求:文字只显示3行,溢出文字用省略号代表,如图:
在这里插入图片描述
那么可以用如下代码实现:

<!DOCTYPE html>
<html>
<head>
<style> 
div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
border:1px solid #000000;
}
</style>

</head>

<body>

<p>div中完整的内容为 "文字溢出说三遍文字溢出说三遍文字溢出说三遍" :</p>

<div class="test">文字溢出说三遍文字溢出说三遍文字溢出说三遍</div>

</body>
</html>

实现功能的核心代码为:

div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
border:1px solid #000000;
}

说明:

  • width:5em; 规定div的宽度,目的是让文字显示行数超过3行(一行只能显示5个文字)
  • overflow:hidden; 含义为溢出的部分就不显示了
  • display: -webkit-box;含义为将对象作为弹性伸缩盒子模型显示 。但,这是chrome/safari(-webkit)浏览器的私有属性。出了chrome/safari浏览器,可能会不好用,可能会不好用,可能会不好用。
  • -webkit-box-orient: vertical;含义为垂直排列,方向是从上向下。
  • -webkit-line-clamp: 3;含义为显示3文字。相当于变相的设置高度。

这些组合到一起的含义为:文字只显示3行,溢出文字用省略号代表。

处理英文时,需要加点料

如果用上面的方法处理英文时,当遇到长单词时会失效,比如这种:

<!DOCTYPE html>
<html>
<head>
<style> 
div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
border:1px solid #000000;
}
</style>

</head>

<body>

<p>div中完整的内容为 "wo shi henchanghenchangdedanci wo shi henchanghenchangdedanci wo shi henchanghenchangdedanci" :</p>

<div class="test">wo shi henchanghenchangdedanci wo shi henchanghenchangdedanci wo shi henchanghenchangdedanci</div>

</body>
</html>

在这里插入图片描述
这时需要添加上下面的代码:

word-wrap:break-word;
word-break:break-all;

说明:

  • word-wrap:break-word; 含义为不得以时,将长单词(也可以是URL)从内部进行换行
  • word-break:break-all; 含义为不讲条件的将长单词(也可以是URL)从内部进行换行

word-break:break-all;

div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
word-break:break-all;
border:1px solid #000000;
}

在这里插入图片描述

word-wrap:break-word;

div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
word-wrap:break-word;
border:1px solid #000000;
}

在这里插入图片描述

使用clamp.js也可以处理文字溢出

略。

再说一下多行文字溢出

不加overflow: hidden;

在这里插入图片描述

指定高度

div.test
{
width:5em; 
height:10em;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
border:1px solid #000000;
}

在这里插入图片描述

推荐的写法

div.test
{
width:5em; 
overflow: hidden;
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
-webkit-line-clamp: 3;
-moz-line-clamp: 3;
line-clamp: 3;
word-wrap:break-word;
word-break:break-all;
}

说明:

  • -moz代表firefox浏览器私有属性,-ms代表IE浏览器私有属性,-webkit代表chrome/safari私有属性,-o代表opera私有属性私有属
  • display: -webkit-box; display: -moz-box; display: box; 含义为支持firefox、chrome/safari、CSS3标准(万一浏览器都支持CSS3了呢,所以放上display: box;吧)。
  • line-clamp: 3;网上说这个属性CSS3中未定义。万一CSS4中有呢,还是先写上吧。

全文完。

参考

html在线运行https://www.runoob.com/runcode
https://www.w3school.com.cn/cssref/pr_text-overflow.asp
https://www.w3school.com.cn/cssref/pr_text_white-space.asp
https://www.cnblogs.com/linsimei/p/7273353.html
https://blog.csdn.net/u010651696/article/details/99291677
https://www.cnblogs.com/ldlx-mars/p/6972734.html
https://blog.csdn.net/chensonghuiyuan/article/details/49204747
https://blog.csdn.net/qq_26983555/article/details/80175428

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值