• 作者:老汪软件技巧
  • 发表时间:2024-10-01 04:01
  • 浏览量:

最近发了个文,荣幸进入掘金前端“榜一”!,感兴趣的朋友点这里☞链接,

同志们,我飘了!!!

瞬间,觉的作为一个“公众”的并且附带责任感的###前端佬###,是时候进行传道授业解惑(zhuang bi)了!

中心思想如下:

如何纯CSS解决文本溢出时,中间出现省略号...??

这要求,是在某一项目中做上传组件时碰到的,排版如图:

前端佬们都应该被UI郑重告知,以上这种排版,是不行的,这么弄整的话,就可能造成UI的宇宙失衡、内分泌失调。

行,改,作为一个专业的前端佬,只要在文本class上加这三行:

.text{
    overflow: hidden; 
    text-overflow: ellipsis; 
    white-space: nowrap;
}

完美,提交,效果如下:

但,又来一个硬茬。产品经理说,这后面点点的,上传的格式被藏住了,让用户无法一眼看出来是个啥,用户体验不好,需要优化。

行,改,不就是要看后面嘛,来个乾坤大罗移,加上这个:

.text{
    overflow: hidden; 
    text-overflow: ellipsis; 
    white-space: nowrap;
    direction: rtl;
}

效果杠杠的!!。

但,人生哪有一帆风顺的。产品经理+UI+测试,甚至后端佬都说,这效果真丑。

前端溢出文本隐藏__css文本溢出省略号

行,这也不行,那也不行,你们.@&#^#^@@@@^&@@^^&&!

内心一阵活动后,生活还得继续,现实还得面对,经过苦思冥想,行,这么搞,代码如下:

<div class="card-list">
  <div class="item">
     <div class="img-container"><img alt="前端大佬" />div>
     <div class="text" title="66666666666666666666666666666666牛.png">
         <span class="span">666666666666666666666666666666666牛.pngspan>
      div>
  div>
  <div class="item">
      <div class="img-container">.zip图标div>
      <div class="text" title="榜1牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛.zip"><span class="span">榜1牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛.zipspan>div>
   div>
   ...
div>

.text {
    display: flex;
    white-space: nowrap;
}
.text>.span {
    overflow: hidden;
}
.text::after {
    text-overflow: ellipsis;
    direction: rtl; // 改变文本方向
    overflow: hidden;
    content: attr(title); // 获取html中的title属性值
}

效果如下:

但效果上还是有点问题,不是被裁剪了一部分,一部分就是多了一些空格,而且,如果不需要省略的情况,那么这种效果就会造成重复文本。

尝试过很多方案,但始终没有好的方案,只能上JS了,才能解决上面的这一系列问题。还望看到这里的,如果有大佬纯CSS能解决这个问题,兄弟跪求解决思路。

以下为JS解决方案,将整个文本分为两个部分,是的HTML结构中文本如下:

<div class="card-list">
  <div class="item">
     <div class="img-container"><img alt="前端大佬" />div>
     <div class="text" data-title="66牛.png">
         <span class="span">6666666666666666666666666666666span>
      div>
  div>
  <div class="item">
       <div class="img-container">.zip图标div>
       <div class="text" data-title="牛牛牛.zip">
           <span class="span">榜1牛牛牛牛牛牛牛牛牛牛牛牛牛span>
       div>
  div>
   ...
div>

以下为CSS:

.text {
    display: flex;
    white-space: nowrap;
}
.text>.span {
    overflow: hidden;.
    text-overflow: ellipsis;
}
.text::after {
    content: attr(data-title); // 获取html中的title属性值
}

效果如下:

以往看过一个提案,是说能以指定第几个字符之前,出现省略号,后面好像没有啥信了。

撒花,经过各个同事观看后,都说还行,最后呢,产品经理说,项目改版,上传组件排版变更。以上能zhuang一bi的想法以及CSS代码,落入了shi山一角。

希望这些能帮助到用的到的前端佬~