大家好,我是若川。欢迎加我微信 ruochuan12,长期交流学习。今天的文章很有意思,讲一讲整块文本溢出省略打点的一些有意思的细节。点击下方卡片关注我,或者查看源码系列文章。

文本超长打点

我们都知道,到今天(2021/03/06),CSS 提供了两种方式便于我们进行文本超长的打点省略。

对于单行文本,使用单行省略:

{width: 200px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;
}

image

而对于多行文本的超长省略,使用 -webkit-line-clamp 相关属性,兼容性也已经非常好了:

{width: 200px;overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;
}

CodePen Demo -- inline-block 实现整块的溢出打点[1]

问题一:超长文本整块省略

基于上述的超长打点省略方案之下,会有一些变化的需求。譬如,我们有如下结构:

<p><a href="/" class="avatar"></a><div class="info"><p class="person-card__name">Sb Coco</p><p class="person-card__desc"><span>FE</span><span>UI</span><span>UX Designer</span><span>前端工程师</span></p></div>
</p>

对于上述超出的情况,我们希望对于超出文本长度的整一块 -- 前端工程师,整体被省略。

如果我们直接使用上述的方案,使用如下的 CSS,结果会是这样,并非我们期待的整块省略:

.person-card__desc {width: 200px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;
}

display: inline 改为 display: inline-block 实现整块省略

这里,如果我们需要实现一整块的省略,只需要将包裹整块标签元素的 spandisplayinline 改为 inline-block 即可。

.person-card__desc span {display: inline-block;
}

这样,就可以实现,基于整块的内容的溢出省略了。完整的 Demo,你可以戳这里:

CodePen Demo - 整块超长溢出打点省略[2]

问题二:iOS 不支持整块超长溢出打点省略

然而,上述方案并非完美的。经过实测,上述方案在 iOSSafari 下,没能生效,表现为这样:

查看规范 - CSS Basic User Interface Module Level 3 - text-overflow[3],究其原因,在于 text-overflow 只能对内联元素进行打点省略。(Chrome 对此可能做了一些优化,所以上述非 iOS 和 Safari 的场景是正常的)

所以猜测是因为经过了 display: inline-block 的转化后,已经不再是严格意义上的内联元素了。

解决方案,使用多行省略替代单行省略

当然,这里经过试验后,发现还是有解的,我们在开头还提到了一种多行省略的方案,我们将多行省略的代码替换单行省略,只是行数 -webkit-line-clamp: 2 改成一行即可 -webkit-line-clamp: 1

.person-card__desc {width: 200px;white-space: normal;overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 1;-webkit-box-orient: vertical;
}
.person-card__desc span {display: inline-block;
}

这样,在 iOS/Safari 下也能完美实现整块的超长打点省略:

CodePen Demo -- iOS 下的整块超长溢出打点省略方案[4]

值得注意的是,在使用 -webkit-line-clamp 的方案的时候,一定要配合 white-space: normal 允许换行,而不是不换行。这一点,非常重要。

这样,我们就实现了全兼容的整块的超长打点省略了。

当然,-webkit-line-clamp 本身也是存在一定的兼容性问题的,实际使用的时候还需要具体去取舍。

最后

好了,本文到此结束,一个简单的 CSS 小技巧,希望对你有帮助 :)

更多精彩 CSS 技术文章汇总在我的 Github -- iCSS[5] ,持续更新,欢迎点个 star 订阅收藏。

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

参考资料

[1]

CodePen Demo -- inline-block 实现整块的溢出打点: https://codepen.io/Chokcoco/pen/JjbBpdN

[2]

CodePen Demo - 整块超长溢出打点省略: https://codepen.io/Chokcoco/pen/XWNPdpK?editors=1100

[3]

CSS Basic User Interface Module Level 3 - text-overflow: https://drafts.csswg.org/css-ui-3/#text-overflow

[4]

CodePen Demo -- iOS 下的整块超长溢出打点省略方案: https://codepen.io/Chokcoco/pen/XWNPdpK?editors=1100

[5]

Github -- iCSS: https://github.com/chokcoco/iCSS


最近组建了一个江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你进群。


················· 若川出品 ·················

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

一个愿景是帮助5年内前端人走向前列的公众号

可加我个人微信 ruochuan12,长期交流学习

推荐阅读

我在阿里招前端,我该怎么帮你?(现在还能加我进模拟面试群)

如何拿下阿里巴巴 P6 的前端 Offer

小技巧!CSS 整块文本溢出省略特性探究相关推荐

  1. web前端培训:CSS中单行文本溢出显示省略号的方法

    CSS中单行文本溢出显示省略号的方法你知道吗?在web前端技术学习中,这个问题其实是属于老生常谈了,因为css单行文本的应用是非常频繁的,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没 ...

  2. 【用CSS让单行文本溢出显示省略号】

    如何用CSS让单行文本溢出显示省略号 <style> p { 1.设置宽高 width:160px; height:20px; font:size:16px; background-col ...

  3. Web实现:单行文本超出省略文本溢出省略

    /* text-overflow有两个有效值: clip:默认值,表示在内容区域的极限处截断文本: ellipsis:表示用一个省略号("-")来表示被截断的文本. 强制不换行 w ...

  4. css实现超出文本溢出用省略号代替

    一.单行 实现单行文本的溢出显示省略号使用text-overflow:ellipsis属性,但需要配合使用另外两个属性使用才能达到效果. 如下: overflow:hidden; text-overf ...

  5. word中光标选择一列文字_Office小技巧_Word快速选中文本大全

    Office_Word选择文本虽然一直都不是我们使用者关注的重点,单机鼠标左键拖动光标选中是我们最常使用的方法.今天小编和大家一起扩展学习一下各种花式选择文本的方法吧. 一.鼠标选择文本 1.选择单个 ...

  6. 单行文本溢出省略和多行文本溢出省略

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. CSS:overflow-wrap文本溢出换行

    1.概述 CSS 属性 overflow-wrap 是用来说明当一个不能被分开的字符串太长而不能填充其包裹盒时,为防止其溢出,浏览器是否允许这样的单词中断换行. 备注: 与word-break相比,o ...

  8. 小技巧,把Markdown文本发布到微信公众号文章

    估计很多人都是这样,平常工作在github,等到有成果要发布,又要写微信公众号. github用Markdown,微信公众号,至少截止今天,还是沿用富文本的方式.不是说富文本不好,但每次精心撰写的内容 ...

  9. CSS小技巧——CSS滚动条美化

    前: 后: 代码: /* 滚动槽 */ ::-webkit-scrollbar {width: 6px;height: 6px; } ::-webkit-scrollbar-track {border ...

最新文章

  1. iMeta:高颜值高被引绘图网站imageGP在线发表(视频简介+实操教程)
  2. uwsgi基础——最佳实践和问题
  3. 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值
  4. [itint5]棋盘漫步
  5. docker 进入容器 开启一个新的bash窗口
  6. WebLogic域的创建与发布
  7. 【算法】剑指 Offer 12. 矩阵中的路径
  8. 设计师社区网站-交流、学习、展示
  9. opencv和python是什么关系_使用OpenCV和Python检测眼睛
  10. tomcat访问manager报404;server.xml中配置了Context path
  11. PyCharm 中选中一个变量/函数后,所有用到这个变量/函数的地方高亮显示,改配色方案
  12. oracle安装错误10301,Oracle数据库案例整理-Oracle系统运行时故障-表空间所在的目录没有可用空间导致收集统计信息失败...
  13. HTML其他常用标签
  14. 苹果Mac全能视频播放器:Playr
  15. freemark 应用以及优势
  16. 2021年 最全面 软件测试工程师面试题及答案
  17. Win10安装.msi文件出现问题
  18. 图形库LVGL v8.2版本移植
  19. 《经营者养成笔记》读后感
  20. Android canvas

热门文章

  1. php的类装载的步骤,设计PHP自动类装载功能
  2. linux如何备份网站,linux怎么备份网站
  3. ES6 (总结篇二)
  4. 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树
  5. 解决在工具栏Chrome图标上点击右键会显示“常去网站”和“最后关闭网站”的问题...
  6. SDUT 3400 数据结构实验之排序三:bucket sort
  7. Delphi:ADOConnection连接SQLServer自动断网问题解决
  8. Library not loaded: @rpath/libswiftCore.dylib
  9. 页面返回顶部(方法比较)
  10. EXT.NET复杂布局(四)——系统首页设计(上)