iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >怎么用CSS实现多行文本的省略号显示
  • 490
分享到

怎么用CSS实现多行文本的省略号显示

2024-04-02 19:04:59 490人浏览 独家记忆
摘要

这篇文章主要介绍怎么用CSS实现多行文本的省略号显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 合理的截断多行文本是件不容易的事情,我们通常采用几种方法解决:overf

这篇文章主要介绍怎么用CSS实现多行文本的省略号显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

 合理的截断多行文本是件不容易的事情,我们通常采用几种方法解决:

  • overflow: hidden直接隐藏多余的文本

  • text-overflow: ellipsis只适用于单行文本的处理

  • 各种比较脆弱的javascript实现。之所以说这种实现比较脆弱是由于需要文本长度的变化时刻得到回流(relayout)后的布局信息,如宽度

英文原文写作时间是2012.9.18号,比较有意义的一天。不过作者忽略了WEBKit提供的一个扩展属性-webkit-line-clamp,它并不是CSS规范中的属性。利用该属性实现多行文本的省略号显示需要配合其他三个属性:display:  -webkit-box、-webkit-box-orient、text-overflow:  ellipsis;。其中,-webkit-line-clamp设置块元素包含的文本行数;display:  -webkit-box设置块元素的布局为伸缩布局;-webkit-box-orient设置伸缩项的布局方向;text-overflow:  ellipsis;则表示超出盒子的部分使用省略号表示。

不过本文将要介绍的方法是采用CSS规范中的属性,并结合特殊的实现技巧完成的。这意味着在实现CSS2.1规范的浏览器中都是可以兼容的,不将仅仅是纯粹的移动端领域,在传统的PC浏览器(你们懂得我指的是哪些浏览器)中仍是可行的。好吧,让我们一起见识下。

CSS实现多行文本溢出的省略号显示

我们把实现的细节划分为7个步骤,在这个实现过程中最简单的就是截断文本,而最难的部分则是让一个元素处在其父包含块溢出时的右下方,并且当父元素未溢出时该元素消失不可见。为了去难避易,我们先从比较简单的地方开始–当父包含框比较小时,将子元素布局到父包含框的右下角。

1st 引子

其实这个实现完全利用了元素浮动的基本规则。在这里不详细讲解CSS2.1规范中的几种情形,不明白的读者自行查阅。这段代码实现很简单,就是三个子元素和包含块的高度及浮动设置:

<div class="wrap">

<div class="prop">1.prop<br>float:left</div>

<div class="main">2.main<br>float:right<br>Fairly short text</div>

<div class="end">3.end<br>float:right</div>

</div>

.wrap {

width: 400px; height: 200px;

margin: 20px 20px 50px;

border: 5px solid #AAA;

line-height: 25px;

}

.prop {

float: left;

width: 100px; height: 200px;

background: #FAF; }

.main {

float: right;

width: 300px;

background: #AFF; }

.end {

float: right;

width: 100px;

background: #FFA; }

2nd 模拟场景

我们通过创建一个子元素来替代将要显示的省略号,当文本溢出的情形下该元素显示在正确的位置上。在接下来的实现中,我们创建了一个realend元素,并利用上一节end元素浮动后的位置来实现realend元素的定位。

<div class="wrap">

<div class="prop">

1.prop<br>

float:right</div>

<div class="main">

2.main<br>

float:left<br>

Fairly short text</div>

<div class="end">

<div class="realend">

4.realend<br>

position:absolute</div>

3.end<br>float:right

</div>

</div>

.end {

float: right; position: relative;

width: 100px;

background: #FFA; }

.realend {

position: absolute;

width: 100%;

top: -50px;

left: 300px;

background: #FAA; font-size: 13px; }

这一步中,我们主要关心的是realend元素的定位,基于浮动后的end元素设置偏移量,当end元素浮动到第一节第二章图的位置时(即在prop元素的下方),此时realend元素正好处在end元素的上方50px,右侧300px-100px=200px处,而该位置正是父包含框wrap元素的右下角,此时正是我们期待的结果:

怎么用CSS实现多行文本的省略号显示

若父元素并没有溢出,那么realend元素会出现在其右侧

怎么用CSS实现多行文本的省略号显示

这种情况解决很简单,请看下文之第七节,此处仅作实例说明。

3rd 优化定位模型

在第二节中,我们针对end元素设置了相对定位,对realend元素设置绝对定位。但是我们可以采用更为简单的代码来实现,即只使用相对定位。熟悉定位模型的同学应该知道,相对定位的元素仍然占据文本流,同时仍可针对元素设置偏移。这样,就可以去掉end元素,仅针对realend元素设置相对定位。

<div class="wrap">

<div class="prop">1.prop<br>float:right</div>

<div class="main">2.main<br>float:left<br>Fairly short text</div>

<div class="realend">

3.realend<br>position:relative</div>

</div>

.realend {

float: right;

position: relative;

width: 100px;

top: -50px; left: 300px;

background: #FAA; font-size: 14px; }

其他的属性并不改变,效果一样。

4th 削窄prop元素

目前,最左侧的prop元素的作用在于让realend元素在文本溢出时处在其正下方,在前几节的示例代码中为了直观的演示,设置prop元素的宽度为100px,那么现在为了更好的模拟实际的效果,我们缩小逐渐缩小prop元素的宽度。

<div class="wrap">

<div class="prop">1.prop<br>float:right</div>

<div class="main">2.main<br>float:left<br>Fairly short text</div>

<div class="realend">

3.realend<br>position:relative</div>

</div>

.prop {

float: left;

width: 5px;

height: 200px;

background: #F0F; }

.main {

float: right;

width: 300px;

margin-left: -5px;

background: #AFF; }

.realend {

float: right;

position: relative;

top: -50px;

left: 300px;

width: 100px;

margin-left: -100px;

padding-right: 5px;

background: #FAA; font-size: 14px; }

针对prop元素,缩小宽度为5px,其余属性不变;

针对main元素,设置margin-left:5px,让main元素左移5px,这样main元素在宽度上就完全占满了父元素;

对于realend元素,top、left和width的值不变。而设置margin-left: -100px、padding-right: 5px则是为了让realend元素的盒模型的最终宽度计算为5px。

BoxWidth  = ChildMarginLeft + ChildBorderLeftWidth + ChildPaddingLeft +  ChildWidth + ChildPaddingLeft +ChildBorderRightWidth +  ChildMarginRightWidth;

具体可参考我之前的文章负margin的原理以及应用一文。

由于CSS规范规定padding的值不可以为负数,因此只有设置margind-left为负值,且等于其宽度。这样做的最终目的就是保证realend元素处在prop元素的下方,保证在文本溢出的情况下定位准确性:

怎么用CSS实现多行文本的省略号显示

5th 继续优化:流式布局+伪元素

目前,realend元素的相关属性仍采用px度量,为了更好的扩展性,可以改用%替代。

同时,prop元素和realend元素可以采用伪元素来实现,减少额外标签的使用。

<div class="ellipsis">

<div>2.main<br>float:left<br>Fairly short text

</div>

</div>

.ellipsis:before {

content: "";

float: left;

width: 5px; height: 200px;

background: #F0F; }

.ellipsis > *:first-child {

float: right;

width: 100%;

margin-left: -5px;

background: #AFF; }

.ellipsis:after {

content: "realend";

float: right; position: relative;

top: -25px; left: 100%;

width: 100px; margin-left: -100px;

padding-right: 5px;

background: #FAA; font-size: 14px; }

效果图和上节一样。

6th 隐藏

之前的实现中在文本未溢出的情况下,realend元素会出现在父元素的右侧,正如。

解决此问题很简单,急需要设置:

.ellipsis{

overflow:hidden;

}

即可解决问题。

7th 大功告成

现在我们离完结就差一步了,即去掉各元素的背景色,并且用“&hellip;”替换文本。最后为了优化体验,采用渐变来隐藏“&hellip;”覆盖的文本,并设置了一些兼容性的属性。

到了此处,相信现在关心的只是CSS的代码了:

.ellipsis {

overflow: hidden;

height: 200px;

line-height: 25px;

margin: 20px;

border: 5px solid #AAA; }

.ellipsis:before {

content:"";

float: left;

width: 5px; height: 200px; }

.ellipsis > *:first-child {

float: right;

width: 100%;

margin-left: -5px; }

.ellipsis:after {

content: "26";

box-sizing: content-box;

-webkit-box-sizing: content-box;

-moz-box-sizing: content-box;

float: right; position: relative;

top: -25px; left: 100%;

width: 3em; margin-left: -3em;

padding-right: 5px;

text-align: right;

background-size: 100% 100%;

background-image:url(data:image/png;base64,iVBORw0KGGoAAAANSUhEUgAAAgAAAAABCAMAAACfZeZEAAAABGdBTUEAALGPC/xhBQAAAwBQtFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wDWRdwAAAP90Uk5TgsRjMZXhS30YrvDUP3Emow1YibnM9+ggOZxrBtpRRo94gxItwLOoX/vsHdA2yGgL8+TdKUK8VFufmHSGgAQWJNc9tk+rb5KMCA8aM0iwpWV6dwP9+fXuFerm3yMs0jDOysY8wr5FTldeoWKabgEJ8RATG+IeIdsn2NUqLjQ3OgBDumC3SbRMsVKsValZplydZpZpbJOQco2KdYeEe36BDAL8/vgHBfr2CvTyDu8R7esU6RcZ5ecc4+Af3iLcjsjZ1ivT0S/PMs3LNck4x8U7wz7Bv0G9RLtHuEq1TbJQr1OtVqqnWqRdoqBhnmSbZ5mXapRtcJGOc4t2eYiFfH9AS7qYlgAAARlJREFUKM9jqK9fEGS7VNrDI2+F/nyB1Z4Fa5UKN4TbbeLY7FW0Tatkp3jp7mj7vXzl+4yrDsYoVx+JYz7mXXNSp/a0RN25JMcLPP8umzRcTZW77tNyk63tdprzXdmO+2ZdD9MFe56Y9z3LUG96mcX02n/CW71JH6Qmf8px/cw77ZvVzB+BCj8D5vxhn/vXZh7D4uzf1rN+Cc347j79q/zUL25TPrJMfG/5LvuNZP8rixeZz/mf+vU+Vut+5NL5gPOeb/sd1dZbTs03hBuvmV5JuaRyMfk849nEM7qnEk6IHI8/qn049hB35QGHiv0yZXuMdkXtYC3ebrglcqvYxoj1muvC1nDlrzJYGbpcdHHIMo2FwYv+j3QAAOBSfkZYITwUAAAAAElFTkSuQmCC);

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);

}

以上是“怎么用CSS实现多行文本的省略号显示”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: 怎么用CSS实现多行文本的省略号显示

本文链接: https://www.lsjlt.com/news/89210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 怎么用CSS实现多行文本的省略号显示
    这篇文章主要介绍怎么用CSS实现多行文本的省略号显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 合理的截断多行文本是件不容易的事情,我们通常采用几种方法解决:overf...
    99+
    2024-04-02
  • CSS怎么实现单行、多行文本溢出显示省略号
    小编给大家分享一下CSS怎么实现单行、多行文本溢出显示省略号,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单行溢出1,单行溢出,超出部分显示...或者截取。前...
    99+
    2023-06-08
  • 怎么用css实现文本溢出显示省略号
    这篇文章给大家分享的是有关怎么用css实现文本溢出显示省略号的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:<!DOCTYPE html><html l...
    99+
    2024-04-02
  • css怎么实现文本溢出显示省略号
    这篇文章主要介绍“css怎么实现文本溢出显示省略号”,在日常操作中,相信很多人在css怎么实现文本溢出显示省略号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css怎么实现文...
    99+
    2024-04-02
  • css实现文本多行省略号的方法
    这篇文章给大家分享的是有关css实现文本多行省略号的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css实现文本多行省略号的方法:1、使用【text-overflow:ellipsis】属性实现单行文本省略;...
    99+
    2023-06-08
  • css怎么实现单行、多行文本超出显示省略效果
    小编给大家分享一下css怎么实现单行、多行文本超出显示省略效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   .ellip...
    99+
    2024-04-02
  • css多行文本溢出时出现省略号的实现
    这篇文章将为大家详细讲解有关css多行文本溢出时出现省略号的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. csstip:只兼容chrome内核的浏览器。ff不支持。.box&nbs...
    99+
    2023-06-08
  • css怎么实现单行文本超出省略号
    这篇文章主要介绍“css怎么实现单行文本超出省略号”,在日常操作中,相信很多人在css怎么实现单行文本超出省略号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css怎么实现单...
    99+
    2024-04-02
  • CSS如何实现文本溢出显示省略号效果
    本文小编为大家详细介绍“CSS如何实现文本溢出显示省略号效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS如何实现文本溢出显示省略号效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。text-overfl...
    99+
    2023-07-04
  • css实现多行省略号的方法
    这篇文章主要为大家展示了css实现多行省略号的方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css实现多行省略号的方法”这篇文章吧。css是什么意思css是一种用来表现HTML或XML等文件样...
    99+
    2023-06-06
  • css怎么将多行超出部分显示为省略号
    CSS中出现多行文本时,经常会出现超出部分无法正常显示的问题。这时候我们可以采用省略号的方式来解决这个问题。具体操作方法如下:首先,需要为文本设置一个限制宽度的容器,例如:<div class="text-container...
    99+
    2023-05-14
  • 怎么用css实现超出显示省略号效果
    CSS中的超出省略是指当一个元素内的文本超出了其容器的宽度或高度时,通过CSS的属性设置来以省略号的形式来显示该文本内容的一种方式。一般情况下,文本溢出时浏览器会自动将文本换到下一行进行显示。但是在某些情况下,特别是在移动端或者响应式设计中...
    99+
    2023-05-14
  • css如何设置多行超出显示省略号
    这篇文章主要介绍css如何设置多行超出显示省略号,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 设置方法:1、用“overflow:hidden;”把超出...
    99+
    2024-04-02
  • 使用css怎么实现超出两行显示省略
    本篇文章为大家展示了使用css怎么实现超出两行显示省略,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。css实现超出两行显示省略的方法:首先创建一个HTML示例文件;然后在body中定义好文字内容;最...
    99+
    2023-06-14
  • 如何使用css实现文字过长显示省略号
    这篇文章主要为大家展示了如何使用css实现文字过长显示省略号,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“如何使用css实现文字过长显示省略号”这篇文章吧。  &...
    99+
    2024-04-02
  • CSS怎么实现标题文字过长部分显示省略号
    这篇文章主要为大家展示了“CSS怎么实现标题文字过长部分显示省略号”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS怎么实现标题文字过长部分显示省略号”这篇文...
    99+
    2024-04-02
  • CSS如何控制文本的长度超过一行显示省略号
    这篇文章主要为大家展示了“CSS如何控制文本的长度超过一行显示省略号”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS如何控制文本的长度超过一行显示省略号”这...
    99+
    2024-04-02
  • CSS怎么实现超出隐藏显示省略号效果
    在网页排版中,我们经常需要限制某些元素的宽度或高度,当宽度或高度超过限制时,如何展示文本内容是一件很重要的事。通常,我们可以使用CSS中的超出隐藏(overflow:hidden)属性来限制元素内容的显示。但是,在内容被隐藏的情况下,可能会...
    99+
    2023-05-14
  • css怎么实现超出部分显示省略号效果
    在网页设计中,经常会遇到文字超出容器的情况。如果不处理,这不仅会破坏页面的美感,还会影响网页的可读性。那么,如何处理文字超出容器的情况呢?一种解决方法是使用CSS的文字超出部分显示省略号的属性。一、CSS中的“text-overflow”属...
    99+
    2023-05-14
  • css如何将多行超出部分显示为省略号
    今天小编给大家分享一下css如何将多行超出部分显示为省略号的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。CSS中出现多行文本...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作