时间:2021-05-08
CSS 实现的文本截断
考察如下代码实现文本超出自动截断的样式代码:
.truncate-text-4 { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;}使用如下的 HTML 片段进行测试:
<style> .my-div { width: 300px; margin: 10px auto; background: #ddd; }</style><div class="my-div truncate-text-4"> How Not To Shuffle - The Knuth Fisher-Yates Algorithm. Written by Mike James. Thursday, 16 February 2017. Sometimes simple algorithms are just wrong. In this case shuffling an .... In other words as the array is scanned the element under</div>运行效果:
通过 CSS ellipsis 实现的文本截断效果
padding 的问题
一切都很完美,直到给文本容器加上 padding 样式后。
.my-div { width: 300px; margin: 10px auto; background: #ddd;+ padding: 30px; }现在的效果现在的效果是这样的:
padding 破坏了文本截断
因为 padding 占了元素内部空间,但这部分区域却是在元素内部的,所以不会受 overflow: hidden 影响。
解决办法
line-height
当设置的 line-height 适当时,或足够大时,可以将 padding 的部分抵消掉以实现将多余部分挤出可见范围的目标。
.my-div { width: 300px; margin: 10px auto; background: #ddd; padding: 30px;+ line-height: 75px;}通过 line-height 修复
这种方式并不适用所有场景,因为不是所有地方都需要那么大的行高。
替换掉 padding
padding 无非是要给元素的内容与边框间添加间隔,或是与别的元素间添加间隔。这里可以考虑其实方式来替换。
比如 margin。但如果元素有背景,比如本例中,那 margin 的试就不适用了,因为元素 margin 部分是不带背景的。
还可用 border 代替。
.my-div { width: 300px; margin: 10px auto; background: #ddd;- padding: 30px;+ border: 30px solid transparent;}使用 border 替换 padding
毫不意外,它仍然有它的局限性。就是在元素本身有自己的 border 样式要求的时候,就会冲突了。
将边距与内容容器分开
比较普适的方法可能就是它了,即将内容与边距分开到两个元素上,一个元素专门用来实现边距,一个元素用来实现文本的截断。这个好理解,直接看代码:
<div className="my-div"> <div className="truncate-text-4"> How Not To Shuffle - The Knuth Fisher-Yates Algorithm. Written by Mike James. Thursday, 16 February 2017. Sometimes simple algorithms are just wrong. In this case shuffling an .... In other words as the array is scanned the element under </div></div>而我们的样式可以保持不动。
将边距与内容容器分开
相关资源
overflow:hidden ignoring bottom padding
How can I force overflow: hidden to not use up my padding-right space
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.运行环境Enviroment当MyBatis与不同的应用结合时,需要不同的事务管理机制。与Spring结合时,由Spring来管理事务;单独使用时需要自行管
CSS限制字数复制代码代码如下:overflow:hidden;white-space:nowrap;text-overflow:ellipsis;/*forI
文字与图形的排版。网页界面中常需要文字与图形的结合来组成一个控件或一个模块等,当文字与图形相结合时需要注意文字在图形内部时的居中、组件与组件之间对齐,相同组件之
有朋友提出一个问题,padding与line-height的区别。这是CSS基础知识,对盒模型知识与布局以及相关属性不是很了解的时候,是很容易混淆与分不清楚的。
样式表(CSS)格式整理与压缩html,body,form,fieldset,textarea{height:100%;margin:0;padding:0;b