CSS: 文字省略Flex及其他实现方式

350 阅读3分钟

div内显示超出省略

div内显示一行,超出部分用省略号显示

white-space: nowrap;
overflow: hidden;  
text-overflow: ellipsis;

 

div内显示两行或三行,超出部分用省略号显示

overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;(行数)
-webkit-box-orient: vertical;

// example
.title {
    font-weight: bold;
    font-size: 28rpx;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    word-wrap: break-word;
    word-break: break-all;
}

概述

-webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的WebKit属性。常见结合属性:

  • display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。

  • -webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。

  • text-overflow,可以用来多行文本的情况下,用省略号“...”隐藏超出范围的文本 。

兼容性

应用案例全局

.line-3 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  display: -moz-box;
  -moz-line-clamp: 3;
  -moz-box-orient: vertical;
  word-wrap: break-word;
  word-break: break-all;
  white-space: normal;    
}

.line-2 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  display: -moz-box;
  -moz-line-clamp: 2;
  -moz-box-orient: vertical;
  word-wrap: break-word;
  word-break: break-all;
  white-space: normal;    
}

.line-1 {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
  word-break: break-all;
}

Flex布局实现响应式省略号

如下图

样式如下:flex:这三个元素一定要在同层

想要实现一个左侧文字可以根据文字长短自动调整宽度,当一行显示不下时,在不不挤压右侧内容空间的同时,左侧文字溢出省略。同理当右侧内容变长的时候,右侧内容部全显示,左侧文字被挤压后溢出,出现省略号的显示效果。光用文字表达,可能难以想象所要表达的效果,让我们看看效果图吧。

  1. 右侧文字是多少就是多宽,左侧默认占据剩余的所有空间。

ellipsis

  1. 右侧内容是多少就是多宽,和1一样。左侧文字很长很长溢出省略。

ellipsis

  1. 左侧文字和2一样,右侧内容给他加了两个right。

ellipsis

代码如下:

代码中多加了max-width、min-width和叫right-ellipsis的div。是为了达到右侧内容超过所所设置的max-width值时,内容可以溢出省略的效果。效果如下图:

ellipsis

大家根据需要可以实现不同需求的效果了。设计需求总结:需求一:左侧宽度自动增长,右侧宽度自动增长并且不可溢出省略。需求二:当左侧文字长度超出的时候,左侧文字溢出省略

含图文设置省略号

image.png

  &-value {
    flex: 1;
    font-size: 14px;
    font-family: Microsoft YaHei, Microsoft YaHei-Regular;
    font-weight: 400;
    color: #13161b;
    // display: flex;
    // align-items: center;

    display: flex;
  }

使用 w-200" style="flex: 1"

  <span class="label-value inlineFlex">
   <ToolAvatar
        v-show="
          projectDetailData.leader_avatar ||
            projectDetailData.leader_name
        "
        data-id="isclick"
        :image-url="projectDetailData.leader_avatar"
        avatar-size="24px"
        style="
          margin-right: 3px;
          line-height: 24px;
          font-size: 14px !important;
        "
        :user-name="projectDetailData.leader_name"
      />
    <span class="line-1 w-200 inline-block" style="flex: 1">
 </span>