css超出隐藏关键属性。

overflow:hidden; //超出的文本隐藏

text-overflow:ellipsis; //溢出用省略号显示

white-space:nowrap; //溢出不换行

这三个是css的基础属性,需要记得。

但是第三条属性,只能显示一行,不能用在这里,那么如果显示多行呢?

css3解决了这个问题,解决方法如下:

display:-webkit-box; //将对象作为弹性伸缩盒子模型显示。

-webkit-box-orient:vertical; //从上到下垂直排列子元素(设置伸缩盒子的子元素排列方式)

-webkit-line-clamp:2; //这个属性不是css的规范属性,需要组合上面两个属性,表示显示的行数。

注 : 以上有兼容问题

//多行文本超出隐藏(兼容各个浏览器)

//通过用伪类覆盖最后几个字的形式
p{
position:relative;
line-height:1.4em;
height:4.2em;/* 3 倍line-height  多少倍就是多少行*/
overflow:hidden;
}
.p::after {
content:"...";
font-weight:bold;
position:absolute;
bottom:0;
right:0;
padding:0 20px 1px 45px;

/* 加过渡效果*/
background: -webkit-linear-gradient(left, transparent, #fff 55%);
background: -o-linear-gradient(right, transparent, #fff 55%);
background: -moz-linear-gradient(right, transparent, #fff 55%);
background: linear-gradient(to right, transparent, #fff 55%);
}

适合场景:文字内容较多,确定文字内容一定会超过容器的,那么选择这种方式不错。

float 特性实现多行文本截断

回到一开始我要做的内容是多行标题文字截取效果,显然是无法控制标题的长度的,显然是无法使用上述的方式。回到事情的本质来看:我们希望 CSS 能够有一种属性,能够在文字溢出的情况下显示省略号,不溢出时不显示省略号(两种形式,两种效果)。

正当我以为 CSS 已经无能为力,只能通过 JS 去实现的时候,后来看到了一个方法非常巧妙,而且能够满足上述提到的所有准则,下面我就介绍如何通过 float 特性实现多行文本截断效果。

基本原理:

有个三个盒子 div,粉色盒子左浮动,浅蓝色盒子和黄色盒子右浮动:

  1. 当浅蓝色盒子的高度低于粉色盒子,黄色盒子仍会处于浅蓝色盒子右下方。

  2. 如果浅蓝色盒子文本过多,高度超过了粉色盒子,则黄色盒子不会停留在右下方,而是掉到了粉色盒子下。

好了,这样两种状态的两种展示形式已经区分开了,那么我们可以将黄色盒子进行相对定位,将内容溢出的黄色盒子移动到文本内容右下角,而未溢出的则会被移到外太空去了,只要我们使用 overflow:hidden就可以隐藏掉。

基本原理就是这样,我们可以将浅蓝色区域想象成标题,黄色区域想象为省略号效果。那么你可能会觉得粉色盒子占了空间,那岂不是标题会整体延后了吗,这里可以通过 margin 的负值来出来,设置浅蓝色盒子的 margin-left 的负值与粉色盒子的宽度相同,标题也能正常显示。

那么我们将前面的 DOM 结构简化下,变成下面这样:

  1. <div class="wrap">

  2.  <div class="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos labore sit vel itaque delectus atque quos magnam assumenda quod architecto perspiciatis animi.</div>

  3. </div>

刚才的粉色盒子和黄色盒子都可以用伪元素来代替。

  1. .wrap {

  2.  height: 40px;

  3.  line-height: 20px;

  4.  overflow: hidden;

  5. }

  6. .wrap .text {

  7.  float: right;

  8.  margin-left: -5px;

  9.  width: 100%;

  10.  word-break: break-all;

  11. }

  12. .wrap::before {

  13.  float: left;

  14.  width: 5px;

  15.  content: '';

  16.  height: 40px;

  17. }

  18. .wrap::after {

  19.  float: right;

  20.  content: "...";

  21.  height: 20px;

  22.  line-height: 20px;

  23.  /* 为三个省略号的宽度 */

  24.  width: 3em;

  25.  /* 使盒子不占位置 */

  26.  margin-left: -3em;

  27.  /* 移动省略号位置 */

  28.  position: relative;

  29.  left: 100%;

  30.  top: -20px;

  31.  padding-right: 5px;

  32. }

实现效果:

这里我目前看到最巧妙的方式了。只需要支持 CSS 2.1 的特性就可以了,它的优点有:

  1. 兼容性好,对各大主流浏览器有好的支持。

  2. 响应式截断,根据不同宽度做出调整。

  3. 文本超出范围才显示省略号,否则不显示省略号。

至于缺点,因为我们是模拟省略号,所以显示位置有时候没办法刚刚好,所以可以考虑:

  1. 加一个渐变效果,贴合文字,就像上述 demo 效果一样。

  2. 添加 word-break:break-all; 使一个单词能够在换行时进行拆分,这样文字和省略号贴合效果更佳。

史上最全css超出隐藏文章单行多行兼容相关推荐

  1. 硬核!史上最全的工厂模式文章,从零到一全面讲解!

    文章首发于「陈树义」公众号及个人博客 shuyi.tech,欢迎访问更多有趣有价值的文章. 工厂模式是编程中用得最多的设计模式.本文由一个简单的生活例子触发,从工厂方法模式到简单工厂模式,再到多工厂模 ...

  2. 史上最全CSS命名规范

    CSS样式命名 说明 命名规则说明: 所有的命名最好都小写,不可以用纯数字命名,不可以用数字或"_"开头命名 属性的值一定要用双引号("")括起来,且一定要有值 ...

  3. 【必备】史上最全的浏览器 CSS JS Hack 手册

    浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本("杰出代表"是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方 ...

  4. 史上最全的CSS hack方式一览

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

  5. [转]史上最全的CSS hack方式一览

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

  6. 史上最全的CSS hack方式一览(鉴)

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

  7. 一文带你学会linux系统 史上最全linux命令大全

    一文带你学会linux系统 史上最全linux命令大全 文章目录 linux系统简介 linux命令 1.启动网络命令 2.pwd命令 2.ls命令 3.cd命令 4.mkdir命令 5.rmdir命 ...

  8. 深度干货:史上最全的市场推广渠道大全(附攻略和技巧)

    我相信,这或许是史上最全的推广渠道文章.如果你的企业正需要扩张,不妨看一看,或能有所帮助. 在开始推广之前,有一件重要的事要做,那就是市场定位,因为在后面的推广策略,渠道选择,营销诉求等都要围绕这个来 ...

  9. 史上最全的推广渠道(值得收藏)

    我相信,这或许是史上最全的推广渠道文章.如果你的企业正需要扩张,不妨看一看,或能有所帮助. 在开始推广之前,有一件事要做,那就是市场定位,因为在后面的推广策略,渠道选择,营销诉求等都要围绕这个来,通过 ...

最新文章

  1. OneFlow系统设计
  2. 二分搜索 POJ 2456 Aggressive cows
  3. 200多个js技巧代码(4)
  4. Sql server管理工具SQLManagementStudio2008的安装
  5. python中map函数字典映射_python Chainmap函数(19)
  6. scp拷贝文件夹到另一个服务器目录中
  7. 使用Qt Creator 2.60编写C/C++程序
  8. 踩准时钟节拍、玩转时间转换,鸿蒙轻内核时间管理有妙招
  9. 生产环境实施 VMware 虚拟化基础架构,千万不要犯 4 个错误
  10. 获得密钥_《哪吒》公映密钥延期一个月?关于“密钥延期”的全揭秘来了
  11. SSH Secure Shell Client安装和使用
  12. adobe creative cloud的开机自启如何阻止
  13. 简单使用Jconsole
  14. python3 [入门基础实战] 爬虫入门之刷博客浏览量
  15. 认证计费系统是什么?不妨看看这篇文章
  16. uni-app中view和text组件和动画的使用
  17. 一分钟教你如何批量处理图片
  18. 【COGS2652】秘术「天文密葬法」(长链剖分,分数规划)
  19. SAP中输出质检Q状态库存清单处理实例
  20. TensorFlow js. 官方教程

热门文章

  1. 积分商城可设置的四种兑换商品类型
  2. Kindle剩余空间变少
  3. Java基础篇——类与子类
  4. (转)能根据文字生成图片的 GAN,深度学习领域的又一新星
  5. 【xinfanqie】win7电脑如何升级win8系统
  6. WIN7/WIN8/WIN10 配置 VUE2
  7. 【BIT2021程设】14.水晶球
  8. 总投资95.6亿元|盛泽镇今年将实施82个重点项目
  9. Linux笔记(1)暂时与永久更改命令别名
  10. 【VTK+增材CAM】3D打印模型切片