我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在css中实现多行省略

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在css中实现多行省略

本篇文章给大家分享的是有关怎么在css中实现多行省略,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

使用-webkit-line-clamp

对多行文本的容器应用如下样式

div {  display: -webkit-box;  -webkit-box-orient: vertical;  overflow: hidden;  -webkit-line-clamp: 2;}

除了 -webkit-line-clamp 其他属性固定不变,主要是将对象作为弹性伸缩盒子模型显示,并设置伸缩盒对象的子元素的排列方式。

-webkit-line-clamp 是用来控制多少行进行省略

优点:

  • 浏览器原生支持的省略行为,样式看起来很舒服

  • 简单方便使用

缺点:

看属性的前缀就知道,这是 webkit 内核的浏览器支持的,兼容性不是广泛。

 使用场景

如果你只针对webkit内核浏览器或者移动端(移动端浏览器多数是webkit内核),那么使用该方案是最好的了。

利用绝对定位

这个方案其实很好理解的,首先我们对于一个装内容的容器右边预留一个空间用来放省略号,用 padding-right: 1em; 来预留空间,为啥是1em呢,一个省略号差不多就是1em啦,用em单位是为了响应字体大小。

用绝对定位把省略号定位在这个预留的空间右下角。

html

<div class="wrap">内容</div>

css

.wrap3 {    position: relative;    padding-right: 1em;        max-height: 3.6em;    line-height: 1.2em;    text-align: justify;    overflow: hidden;}.wrap3:before {    position: absolute;    right: 0;    bottom: 0;    content: '...';}

效果(多内容时):

怎么在css中实现多行省略

这样的话,省略号永远都会存在的。所以要解决这个问题,我们用一个跟背景颜色一样的方块遮住省略号,那么关键点就是,怎么知道何时要遮住,何时不遮住呢?

思路: 用于挡住省略号的方块也是绝对定位,靠右定为, right: 0 ,但是 bottom 值就不要设置了,如果不设置的话,该方块会跟着文本内容的实际高度移动,而不是 max-height 的高度。这样的话,当不需要省略时(即不超过 max-height )时,就刚好是 bottom: 0 的情况,就会挡住省略号。当要进行省略时(即超过 max-height )就会挡不住省略号了,它自己也会被 overflow: hidden 给隐藏掉了。

所以最终方案是:

html

<div class="wrap">内容</div>

css

.wrap {    position: relative;        line-height: 1.2em;    max-height: 3.6em;                padding-right: 1em;    text-align: justify;    overflow: hidden;}.wrap:before {    position: absolute;    right: 0;    bottom: 0;    content: '...';}.wrap:after {    position: absolute;    right: 0;        width: 1em;        height: 1.2em;    content: '';        background-color: #fff;}

效果:

怎么在css中实现多行省略 

优点

  • 兼容性好,各大浏览器支持

  • 自适应高度,不用写死高度,设定超过多少行才需要进行省略显示

  • 自适应宽度

  • 自适应字体大小,字体大小不会影响到原本的需求,即要求多少行省略就多少行才省略

缺点

  • 文字右边会故意留空一些位置给省略号放置

  • 需要考虑所在的背景颜色,因为after伪类要用背景颜色来遮挡住省略号

 利用float布局

这个方案对于基础知识不扎实的童鞋们,可能不太好理解,如果仅是想找个解决方案不想知道原理的话,可以直接去里看

在说该方案之前,要先理解这么一个现象:

有这么一段html

<div class="wrap">    <div class="left">左浮动</div>    <div class="right1">右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1右浮动1</div>    <div class="right2">右浮动2</div></div>

应用这么一段样式

.wrap {height: 100px;}.left {float: left;width: 60px;height: 100%;background: pink;}.right1 {float: right;width: calc(100% - 60px);background: #95d9f8;}.right2 {float: right;background: yellow;}

正常情况下会显示成这样,这也是大家一般所能想象的预期情况:

怎么在css中实现多行省略

出现这个正常现象的条件是:

  • .right1 的高度不超过 .left 的高度(即内容少)

  • .right2 的宽度少于 .right1 的宽度

好了,这个情况大家理解了吧。那么接下来,我们对 .right1 的内容增多至超出左浮动的高度,会发生接下来的一幕

怎么在css中实现多行省略

右浮动2卡在左下角了。

要问我为什么会这样?额...看来你对float的基础知识不扎实呀,建议夯实一下基础知识,其实我也解释不了,我只知道这是float的一个正常表现。

出现这个现象的条件是:

  • .right1 的高度超过 .left 的高度(即内容多)

  • .right2 的宽度少于或等于 .left 的宽度

 知识转化成需求实现

在理解了上述两个情景后,我们应该怎么利用这些知识来匹配对应的需求呢?

假设右浮动1的文本内容就是我们要进行多行省略的内容,右浮动2的内容就是省略号(...)。这样当内容少时,省略号就是上述的第一个情况,内容多的时候就是第二个情况。

这种动态变化,是不是像“文本少时不省略,文本多时进行省略”这种需求变化呢。在这个基础上,我们要解决的是 在第一种情况右浮动2隐藏掉,第二种情况下右浮动2出现在 .wrap 的右下角,超出高度的内容隐藏掉。

要解决上述问题,只要使用 position: relative; 进行相对定位即可。 .wrap 父容器应用 overflow: hidden; 。 第一种情况下,定位到父容器外部,就隐藏掉了。而第二种情况,就定位到父容器右下角。

好了,现在该解决方案的焦点,就放在如何准确定位的问题上了(下一小节)。在处理定位问题前,先把目前掌握的情况转化为实际的需求代码:

<!--把左浮动和右浮动2采用伪类元素替换掉实际标签--><div class="wrap">    <div class="text">右浮动1</div></div>
.wrap {    height: 100px;        line-height: 20px;    overflow: hidden;}.wrap:before {    float: left;        width: 1.5em;    height: 100%;    content: '';}.text {    float: right;            margin-left: -1.5em;        width: 100%;}.wrap:after {    float: right;        width: 1em;    content: '...';}

如果你这时候好奇,为什么 .text 都设置了 width: 100%; 了,内容多时 :after 还是会卡在 :before 底下呢?是因为即使 .text 设置了 margin-left: -1.5em; ,但是实际上并不会影响到原本的文档流情况,原本该是怎样的就是怎样,设置了负值的margin,影响的只是 .text 自身的呈现样式。

如何定位

解决定位问题是基于上小节的代码基础上。目前暴露的问题有:

  1. 内容少即不需要做省略时,省略号显示出来了

  2. 内容多即需要省略时,省略号隐藏了

先解决第二个问题

怎么在css中实现多行省略

思路:要把这个 :after 向右移动到 .wrap 右边,向上移动到最后一行的位置。

position: relative; 来控制的话, top 值好取,取 .wrapline-height 实际值一样,取负值就好了。关键是left值,怎么取才能刚好在右下角呈现出来。

如果你能明确知道 .text 的宽度的话(如100px),其实设置 left: 100px; 即可,但是这样的话只能针对固定宽的情况,不能自适应宽度。要想实现自适应,left的值取百分比就行了,那么到底是百分之多少呢?这是纠结的。索性就取100%吧,会发现会移出到父容器外。

怎么在css中实现多行省略

那要刚好出现在右下角的话,省略号的初始位置就必须要在 .wrap 的左侧,紧挨着 .wrap ,才能 left: 100% 后出现在右下角。

现在问题就变成如何让 :after 刚好出现在 .wrap 的左侧了。 以下代码对于基础不扎实的人,可能有些难理解了(新增部分在注释处):

.wrap:after {    float: right;        width: 1em;    content: '...';                margin-left: -1em;        padding-right: 1.5em;            position: relative;    left: 100%;        top: -20px;}

关于设置margin和padding值那里,如果你能理解就最好了,不能理解的话,我尽量解释一下,其实这也真不好说。

首先是应用 margin-left: 1em; 的时候,由于 :after 的宽度比 :before 的要小,所以按照原本的float布局的话,在一行里

怎么在css中实现多行省略

粉红色为左浮动,蓝色红色为右浮动,如果红色的宽度不断增大至除粉红色剩余空间,由于一行的空间不够,蓝色会被挤到换行右浮动了。但是如果设置蓝色的margin-left为本身宽度的负值,那么这时候一行的空间还是有位置给它的,就变成了如下这样了

怎么在css中实现多行省略

按照上述原理,设置了 margin-left: 1em; 后, :after 就变回到父容器的第一行上了,紧挨着父容器左侧。但是我们不能让它回到第一行上呀,所以设置 padding-right: 1.5em; 让它实际占的空间变大到第一行容不下它,就变回到原本的卡在 :before 下的位置,只是padding值让它移动到左侧了

怎么在css中实现多行省略

好了我解释完了,能不能看懂,只能看你的造化了哈哈。

值得留意的是,上面代码里关于width的注释写着“因为下面设置了margin,所以这里的宽度值大小没有要求”,之前都要求小于等于 :before 宽度,但是现在由于采用margin-left负值抵消了本身的宽度,所以这个要求转化对 padding-right 了,这时是等于

小结

到目前位置,所有问题都解决了。针对上述所有讨论的问题,总结为以下代码(具体优化有注释说明):

css样式

.wrap {        height: 100px;            line-height: 25px;        text-align: justify;    overflow: hidden;}.wrap:before {    float: left;        width: 1em;    height: 100%;    content: '';}.wrap:after {    float: right;            width: 2.5em;        height: 25px;        margin-left: -2.5em;        padding-right: 1em;    content: '...';    text-align: right;        position: relative;        top: -25px;    left: 100%;        background: #fff;    background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white));    background: -moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);    background: -o-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);    background: -ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);    background: linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);}.wrap .text {    float: right;        margin-left: -1em;    width: 100%;}

html文件:

<div class="wrap">    <span class="text">        示例2: 散发设解决看手机啦开发交    </span></div>

效果:

怎么在css中实现多行省略

优点

  • 兼容性好,满足不是webkit内核的浏览器都能支持

  • 自适应宽度

缺点

  • 固定高度,不能自适应高度,因此显示多少行还要受字体大小限制

  • 需要为文字包裹一个标签用以设置样式

  • 从读样式代码上来看,理解起来不是很好理解

  • 如果省略号所在元素不用渐变色背景,偶尔会截断得突兀,如果要用渐变色背景,要注意与文字所在的背景下的颜色搭配

以上就是怎么在css中实现多行省略,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在css中实现多行省略

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在css中实现多行省略

本篇文章给大家分享的是有关怎么在css中实现多行省略,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用-webkit-line-clamp对多行文本的容器应用如下样式div {
2023-06-08

css实现多行省略号的方法

这篇文章主要为大家展示了css实现多行省略号的方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css实现多行省略号的方法”这篇文章吧。css是什么意思css是一种用来表现HTML或XML等文件样
2023-06-06

CSS怎么实现单行、多行文本溢出显示省略号

小编给大家分享一下CSS怎么实现单行、多行文本溢出显示省略号,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单行溢出1,单行溢出,超出部分显示...或者截取。前
2023-06-08

css实现文本多行省略号的方法

这篇文章给大家分享的是有关css实现文本多行省略号的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css实现文本多行省略号的方法:1、使用【text-overflow:ellipsis】属性实现单行文本省略;
2023-06-08

css多行文本溢出时出现省略号的实现

这篇文章将为大家详细讲解有关css多行文本溢出时出现省略号的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. csstip:只兼容chrome内核的浏览器。ff不支持。.box {
2023-06-08

使用css怎么实现超出两行显示省略

本篇文章为大家展示了使用css怎么实现超出两行显示省略,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。css实现超出两行显示省略的方法:首先创建一个HTML示例文件;然后在body中定义好文字内容;最
2023-06-14

css怎么将多行超出部分显示为省略号

CSS中出现多行文本时,经常会出现超出部分无法正常显示的问题。这时候我们可以采用省略号的方式来解决这个问题。具体操作方法如下:1. 首先,需要为文本设置一个限制宽度的容器,例如:```<div class="text-container"> 这是一段需要进行多行省略号处理的文本内容</div>```2. 接着,在CSS中设置文本容器的样式,包括宽度、字号、行高等属性:```.
2023-05-14

怎么用css实现超出显示省略号效果

CSS中的超出省略是指当一个元素内的文本超出了其容器的宽度或高度时,通过CSS的属性设置来以省略号的形式来显示该文本内容的一种方式。一般情况下,文本溢出时浏览器会自动将文本换到下一行进行显示。但是在某些情况下,特别是在移动端或者响应式设计中,我们希望将文本内容显示在一行内,并在文本超出容器宽度时以省略号的形式进行显示。而CSS中的超出省略属性就可以帮我们实现这一效果。这里介绍一
2023-05-14

CSS怎么实现超出隐藏显示省略号效果

CSS超出隐藏显示省略号在网页排版中,我们经常需要限制某些元素的宽度或高度,当宽度或高度超过限制时,如何展示文本内容是一件很重要的事。通常,我们可以使用CSS中的超出隐藏(overflow:hidden)属性来限制元素内容的显示。但是,在内容被隐藏的情况下,可能会有一些重要信息被省略掉,这对于用户来说是不友好的。所以,我们需要使用CSS的省略号选项,来让用户知道文本内容被省略了
2023-05-14

css怎么实现超出部分显示省略号效果

在网页设计中,经常会遇到文字超出容器的情况。如果不处理,这不仅会破坏页面的美感,还会影响网页的可读性。那么,如何处理文字超出容器的情况呢?一种解决方法是使用CSS的文字超出部分显示省略号的属性。一、CSS中的“text-overflow”属性在CSS中,有一个名为“text-overflow”的属性可以实现文字超出部分显示省略号的效果。它可以应用于块级元素或行内块级元素,用于控
2023-05-14

怎么在css中实现不换行

这篇文章给大家介绍怎么在css中实现不换行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。word-break 属性规定自动换行的处理方法。通过使用 word-break 属性,可以让浏览器实现在任意位置的换行。语法:w
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录