单行截断和多行截断问题

单行截断:

span {
  display: inline-block; // 如果不是block元素,还需要设置这个。
  width: 150px; // 超出的宽度
  overflow: hidden; // 超出隐藏
  text-overflow: ellipsis; //超出用省略号
  white-space: nowrap; // 不换行
}

多行截断:

多行截断有好几种方法,

1: 最简单,使用-webkit-line-clamp , 当然了,只能用在webkit内核浏览器, 并且不支持自定义点击展开的样式。

p {
  width: 400px; // 超过这个宽度
  text-overflow: ellipsis; // 使用省略号
  display: -webkit-box; // 必须使用这个
  overflow: hidden;// 必须使用,超出隐藏
  -webkit-line-clamp: 4; // 必需设置,
  -webkit-box-orient: vertical; // 设置里面元素排列顺序
  text-align: justify; // 里面问题排列方式
}

2: 也是面试中回答的方式,使用伪类。。。这个由于要使用js判断是否超出,因此适用于,你已经知道是大段文字的情景。 但是面试官不是很满意这个方式,呜呜呜(? _ ?)

p{
   position: relative;
   height: 36px; // 面试官说这个是定死的,所以不灵活。。。感觉很奇怪啊,不是死的话,怎么知道什么情况溢出?
   overflow: hidden;
   line-height: 18px;
}
p::after{ // 这个是一直有省略号,所以需要js判断是否超出,如果超出的话,就加一个class。
     content: ‘...‘;
     position: absolute;
     bottom:0;
     right: 0;
}

3:使用float, 挺复杂的,不喜欢float......, 使用float时候,省略号是一个dom节点,因此可以添加事情和样式, 自定义程度高!

<div class="container">
        <div class="content">腾讯成立于1998年11月,是目前中国领先的互联网增值服务提供商之一。成立10多年来,腾讯一直秉承“一切以用户价值为依归”的经营理念,为亿级海量用户提供稳定优质的各类服务,始终处于稳健发展状态。2004年6月16日,腾讯控股有限公司在香港联交所主板公开上市(股票代号700)。</div>
        <div class="standard"></div>
        <div class="more">...更多</div>
    </div>

其中standard是一个标准,超过它的高度时候,就会显示省略号,container是个容器,超过他的最大高度,就hidden。 三个div都float:right,其中content的margin-left:-standard的宽度,把standard给让出来,让standard出现在左侧。

        .container{
            max-height: 54px; // 最大高度
            overflow: hidden; // 超出隐藏
            line-height: 18px; // 方便计算几行。。
            font-size:12px;
        }
        .container div{ // 三个元素都设置float
            float: right;
        }
        .content{
            margin-left: -50px; // 这是第一个元素,由于他宽度是100%,所以需要给standard位置。
            width:100%;
            position:relative;
            background: hsla(229, 100%, 75%, 0.5)
        }
        .standard{
            width: 50px; //宽度随意, 需要与上面margin-left一样
            height: 54px; // 超出这个高度会出现more元素
            position:relative;
            color:transparent;
            background: hsla(334, 100%, 75%, 0.5);
        }
        .more{
            width:50px; // 这个元素可自定义,宽度
            height:18px;
            position: relative;
            left: 100%; // 确定位置,
            transform: translate(-100%,-100%);// 确定位置
            background: linear-gradient(90deg, rgba(255, 255, 255, 0), #fff 20%, #fff); // 这是使用渐变,因为more元素会覆盖住content元素。
        }

总结: 可以直接使用float方法,方便自定义样式及监听事件,并且兼容性好,是暂时最完美的解决方案。就是略复杂,不过网上有可以直接拿来用哦~

最后一个挺复杂的,看了半天,感觉网上很多,可以直接拿来用, 不需要特别理解透彻,毕竟过不了几年,应该就会有内置属性了。。。

原文地址:https://www.cnblogs.com/yadiblogs/p/10729025.html

时间: 2024-10-14 15:32:07

单行截断和多行截断问题的相关文章

SQL单行函数和多行函数

单行函数和多行函数示意图: 单行函数分为五种类型:字符函数.数值函数.日期函数.转换函数.通用函数 单行函数: [sql] view plaincopy --大小写控制函数 select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual; --initcap: 首字母大写 select initcap('hello world') 首字符大写 from dual; --字符控制函数 -- concat: 字符连接函数, 等同

单行居中,多行居左。

单纯的CSS还能控制多行与单行?是不是很有意思,下面直接来干货! 左边单行                                 右边多行 CSS: 1 *{ 2 margin:0; 3 padding:0; 4 } 5 div{ 6 width:300px; 7 height:300px; 8 color:#fff; 9 background-color: red; 10 text-align: center; 11 margin:0 auto; 12 } 13 p{ 14 disp

文本超出---单行省略和多行省略

在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(-)显示,这样,按照习惯,人们都会知道这儿有文字被省略了.省略又分为单行省略和多行省略.我们常用的是单行省略代码如下: html代码: <div class="text1"> 这是一句话这是一句话这是一句话这是一句话这是一句话这是一句话这是一句话这是一句话这是一句话这是一句话 </div> <b

CSS特效(7)——单行居中,多行居左,超过两行用省略号

单行居中,多行居左,超过两行用省略号 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-C

CAD中如何创建单行文本和多行文本

相信很多朋友对于CAD编辑器,这个在CAD行业中比较常见的办公软件不陌生吧,CAD编辑器是CAD绘图中必不可少的一个工具,但是有的时候设计师们在编辑图纸内容的时候,有的地方需要输入一些文字来进行标注说明问题,在编辑器中有单行文本和多行文本都可以进行标注,那在CAD中如何创建单行文本和多行文本呢?下面我们就一起来看看具体操作步骤吧! 第一步:首先,打开电脑,在电脑桌面中看一下有没有CAD编辑器,没有的话任意打开一个浏览器,在浏览器中搜索迅捷CAD编辑器,进入官网,然后点击下载安装最新版本的CAD编

多行截断

display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;  //行数overflow: hidden; 只适用于webkit内核浏览器. 单行的话是: overflow:hidden; text-overflow:ellipsis; white-space:nowrap;

DQL---条件查询、单行函数、多行函数、分组函数、数据类型

一.DQL 1.基本规则: (1)对于日期型数据,做 *,/ 运算不合法,可以进行 +, - 运算.比如给日期加一天或减一个月,结果仍为一个日期.两个日期间只能为减法,返回两个日期相差的天数,两个日期间做加法没任何意义. (2)包含空值(null)的数学表达式计算结果均为空值. (3)给字段取别名时,别名使用 双引号 括起来(根据双引号里的内容显示),不加双引号时会转为大写.字段与别名间可以使用AS关键字,也可使用空格. (4)oracle中连接字符是 || (也可以使用单行函数concat()

文本单行溢出,多行溢出处理方案【...】

单行溢出: 单行文本中文字超过固定宽高后显示... CSS{ width:500px;height:30px;overflow:hide;text-overflow: ellipsis;white-space: nowrap;}   宽度和高度必须固定 多行溢出: 处理多行溢出,考虑兼容性问题,个人认为采用JS来解决最直接了当 HTML: <div class="word"> <p>这是一段将会多行溢出的文字这是一段将会多行溢出的文字这是一段将会多行溢出的文字这

js实现新闻滚动-单行滚动或者多行滚动

注明:都是转载. 先说单行滚动: --------直接复制以下代码即可试验 转载http://www.3lian.com/edu/2011/06-30/4986.html----------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xm