1. 程式人生 > 其它 >css文字超出元素省略,單行、多行省略

css文字超出元素省略,單行、多行省略

githup原始碼:https://github.com/shengbid/vue-demo/tree/master/src/views/Form/ellipsis

效果圖:

通用CSS .box{ width:500px; border:1pxsolidred; padding:10px; line-height:24px; }

1.單行省略

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

  <p>單行省略</p>
  <div class="singe-line box" :title="content">
    {{ content }}
  
</div>

2.兩行省略

.double-line {
    word-break: break-all;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }

  <p>兩行省略</p>
  <div class="box">
    <div class="double-line" :title="content2">
      {{ content2 }}
    
</div> </div>

3.超過元素寬高省略

需要設定元素寬度與高度,根據高度看下最多能放幾行,再設定-webkit-line-clamp的值為最大行數
.over-line {
    height: 65px;
    word-break: break-all;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
  }
  <p>超過元素寬高省略</p>
  <div class="box">
    <div class="over-line" :title="content">
      {{ content }}
    
</div> </div>

4.字元擷取省略

通常應用於文章列表的內容簡介,通過擷取固定字元數量來展示,也需要指定寬高
.assign-line {
  height: 45px;
  word-break: break-all;
}

 methods: {
    handleontent() {
      this.content3 = `${this.content.substring(0, 80)} ...`
      this.content4 = `${this.content2.substring(0, 80)} ...`
    }
  }

  <p>字元擷取省略</p>
  <div class="box">
    <div class="assign-line" :title="content">
      {{ content3 }}
    </div>
  </div>
  <div class="box">
    <div class="assign-line" :title="content">
      {{ content4 }}
    </div>
  </div>

程式碼原文,在Vue中寫的

<template>
 <div class="ellipsis-contanier">
  <h2>超過指定行顯示省略號</h2>

  <p>單行省略</p>
  <div class="singe-line box" :title="content">
    {{ content }}
  </div>
  <p>兩行省略</p>
  <div class="box">
    <div class="double-line" :title="content2">
      {{ content2 }}
    </div>
  </div>
  <p>三行省略</p>
  <div class="box">
    <div class="three-line" :title="content">
      {{ content }}
    </div>
  </div>
  <p>超過元素寬高省略</p>
  <div class="box">
    <div class="over-line" :title="content">
      {{ content }}
    </div>
  </div>
  <p>字元擷取省略</p>
  <div class="box">
    <div class="assign-line" :title="content">
      {{ content3 }}
    </div>
  </div>
  <div class="box">
    <div class="assign-line" :title="content">
      {{ content4 }}
    </div>
  </div>
 </div>
</template>

<script>

export default {
  data () {
    return {
      content: 'ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code, with the goal of making code more consistent and avoiding bugs. In many ways, it is similar to JSLint and JSHint with a few exceptions:',
      content2: 'vue.config.js 是一個可選的配置檔案,如果專案的 (和 package.json 同級的) 根目錄中存在這個檔案,那麼它會被 @vue/cli-service 自動載入。你也可以使用 package.json 中的 vue 欄位,但是注意這種寫法需要你嚴格遵照 JSON 的格式來寫。',
      content3: '',
      content4: ''
    }
  },

  created(){
    this.handleontent()
  },

  methods: {
    handleontent() {
      this.content3 = `${this.content.substring(0, 80)} ...`
      this.content4 = `${this.content2.substring(0, 80)} ...`
    }
  }
}
</script>

<style lang="less" scoped>
.ellipsis-contanier {
  .box {
    width: 500px;
    border: 1px solid red;
    padding: 10px;
    line-height: 24px;
  }

  .singe-line {
    text-overflow: ellipsis;
    overflow: hidden;
    word-break: break-all;
    white-space: nowrap;
  }
  .double-line {
    word-break: break-all;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .three-line {
    word-break: break-all;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
  }
  .over-line {
    height: 65px;
    word-break: break-all;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
  }
  .assign-line {
    height: 45px;
    word-break: break-all;
  }
}
</style>