最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue 中文本內(nèi)容超出規(guī)定行數(shù)后展開收起的處理的實現(xiàn)方法

 更新時間:2019年04月28日 09:57:18   作者:Ethanzyc  
這篇文章主要介紹了Vue 中文本內(nèi)容超出規(guī)定行數(shù)后展開收起的處理的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

文字比較難解釋,直接看圖應(yīng)該就懂是要做什么了。

需求

工作中遇到的,需求就是超過四行得有個展開按鈕,點擊展開顯示所有內(nèi)容,不超過四行的話就不需要這個按鈕并顯示所有內(nèi)容。

思路首先得判斷文本自否超過四行,因為這些一般都是是前端異步請求然后后端發(fā)送過來,在組長的指導(dǎo)下,使用了 Vue 中的 nextTick 來監(jiān)聽 DOM 中是數(shù)據(jù)變化。接下來主要是 css 上的思路,其實上圖可以分為兩部分,如下圖,標(biāo)號1的部分展示前面三行,標(biāo)號為2的部分會根據(jù)1的行數(shù)判斷縮進(jìn)的大小,然后展示第四行。最后通過背景色的控制讓兩者看上去是一段文字。

代碼

核心代碼是中間那部分,其他的不用關(guān)注

<template>
 <div>
 <div style="text-align: center">{{title}}</div>
 <div class="top-prove">為了證明樓下的那貨不會對我造成影響</div>
 <div :class="showTotal ? 'total-introduce' : 'detailed-introduce'">
  <div class="intro-content" :title="introduce" ref="desc">
  <span class="merchant-desc" v-if="introduce">
   {{introduce}}
  </span>
  <div class="unfold" @click="showTotalIntro" v-if="showExchangeButton">
   <p>{{exchangeButton ? '展開' : '收起'}}</p>
  </div>
  </div>
 </div>
 <div class="bottom-prove">為了證明樓上的那貨不會對我造成影響</div>
 <div class="change-buttom">
  <div class="long" @click="tryLong">點這試試一段比較長的文字</div>
  <div class="short" @click="tryShort">點這試試一段比較短的文字</div>
 </div>
 </div>
</template>

<script>
export default {
 name: 'Spread',
 data () {
 return {
  title: '演示展開收起',
  introduce: '',
  // 是否展示所有文本內(nèi)容
  showTotal: true,
  // 顯示展開還是收起
  exchangeButton: true,
  // 是否顯示展開收起按鈕
  showExchangeButton: false,
  rem: ''
 };
 },
 mounted () {
 this.init();
 },
 methods: {
 showTotalIntro () {
  console.log(this.showTotal);
  this.showTotal = !this.showTotal;
  this.exchangeButton = !this.exchangeButton;
 },
 getRem () {
  console.log('getRem');
  const defaultRem = 16;
  let winWidth = window.innerWidth;
  console.log('winWidth:' + winWidth);
  let rem = winWidth / 375 * defaultRem;
  return rem;
 },
 init () {
  this.introduce = '擁有財富、名聲、權(quán)力,這世界上的一切的男人--哥爾·D·羅杰,在被行刑受死之前說了一句話,讓全世界的人都涌向了大海?!跋胍业膶毑貑??如果想要的話,那就到海上去找吧,我全部都放在那里?!保澜玳_始迎接“大海賊時代”的來臨。擁有財富、名聲、權(quán)力,這世界上的一切的男人 “海賊王”哥爾·D·羅杰,在被行刑受死之前說了一句話,讓全世界的人都涌向了大海。“想要我的寶藏嗎?如果想要的話,那就到海上去找吧,我全部都放在那里?!保澜玳_始迎接“大海賊時代”的來臨。';
 },
 tryLong () {
  let longIntroduce = 'Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。Vue 被設(shè)計為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時,Vue 也完全能夠為復(fù)雜的單頁應(yīng)用提供驅(qū)動。Vue (讀音 /vjuː/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時,Vue 也完全能夠為復(fù)雜的單頁應(yīng)用提供驅(qū)動。';
  if (this.introduce !== longIntroduce) {
  this.showExchangeButton = false;
  this.showTotal = true;
  this.introduce = longIntroduce;
  }
 },
 tryShort () {
  let shortIntroduce = 'Vue (讀音 /vjuː/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。';
  if (this.introduce !== shortIntroduce) {
  this.showExchangeButton = false;
  this.showTotal = true;
  this.introduce = shortIntroduce;
  }
 }
 },
 watch: {
 'introduce': function () {
  this.$nextTick(function () {
  console.log('nextTick');
  // 判斷介紹是否超過四行
  let rem = parseFloat(this.getRem());
  console.log('watch 中的rem', rem);
  if (!this.$refs.desc) {
   console.log('desc null');
   return;
  }
  let descHeight = window.getComputedStyle(this.$refs.desc).height.replace('px', '');
  console.log('descHeight:' + descHeight);
  console.log('如果 descHeight 超過' + (5.25 * rem) + '就要顯示展開按鈕');
  if (descHeight > 5.25 * rem) {
   console.log('超過了四行');
   // 顯示展開收起按鈕
   this.showExchangeButton = true;
   this.exchangeButton = true;
   // 不是顯示所有
   this.showTotal = false;
  } else {
   // 不顯示展開收起按鈕
   this.showExchangeButton = false;
   // 沒有超過四行就顯示所有
   this.showTotal = true;
   console.log('showExchangeButton', this.showExchangeButton);
   console.log('showTotal', this.showTotal);
  }
  }.bind(this));
 }
 }
};
</script>

<style lang="less" scoped rel="stylesheet/less">
 .top-prove {
 height: 100px;
 width: 100%;
 background: #dddddd;
 text-align: center;
 line-height: 100px;
 }
 .total-introduce {
 height: auto;
 overflow: hidden;
 font-size: 14px;
 color: #434343;
 margin: 10px;
 .intro-content {
  .merchant-desc {
  width: 100%;
  line-height: 21px;
  }
 }
 .unfold {
  display: block;
  z-index: 11;
  float: right;
  width: 40px;
  height: 21px;
  p {
  margin: 0;
  line-height: 21px;
  color: #7fbe87;
  }
 }
 }
 .detailed-introduce {
 font-size: 14px;
 color: #434343;
 position: relative;
 overflow: hidden;
 margin: 10px;
 .intro-content {
  // 最大高度設(shè)為4倍的行間距
  max-height: 84px;
  line-height: 21px;
  word-wrap: break-word;
  /*強制打散字符*/
  word-break: break-all;
  background: #ffffff;
  /*同背景色*/
  color: #ffffff;
  overflow: hidden;
  .merchant-desc {
  width: 100%;
  line-height: 21px;
  }
  &:after,
  // 這是展開前實際顯示的內(nèi)容
  &:before {
  content: attr(title);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  color: #434343
  // overflow: hidden;
  }
  // 把最后最后一行自身的上面三行遮住
  &:before {
  display: block;
  overflow: hidden;
  z-index: 1;
  max-height: 63px;
  background: #ffffff;
  }
  &:after {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
  height: 81px;
  /*截取行數(shù)*/
  -webkit-line-clamp: 4;
  text-overflow: ellipsis;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  /*行首縮進(jìn)字符數(shù),值為[(截取行數(shù)-1)*尾部留空字符數(shù)]*/
  text-indent: -12em;
  /*尾部留空字符數(shù)*/
  padding-right: 4em;
  }
  .unfold {
  z-index: 11;
  width: 40px;
  height: 21px;
  outline: 0;
  position: absolute;
  right: 0;
  bottom: 0;
  p {
   margin: 0;
   line-height: 21px;
   color: #7fbe87;
  }
  }
 }
 }
 .bottom-prove {
 height: 100px;
 width: 100%;
 background: #dddddd;
 text-align: center;
 line-height: 100px;
 }
 .change-buttom {
 font-size: 14px;
 color: #2371be;
 .long {
  text-align: 21px;
  text-align: center;
  height: 21px;
 }
 .short {
  text-align: 21px;
  text-align: center;
  height: 20px;
 }
 }
</style>

演示動畫

另一種思路

簡書中i_May的方法,思路有些不同,也可以參考下。

問題工作中該頁面打包到測試環(huán)境在微信中打開后,三個省略號消失了,問題還在找,找到了會及時更新。因為符號可能會在行尾出現(xiàn)點顯示問題,暫時還沒找到解決辦法,但出現(xiàn)概率較小,出現(xiàn)了也不影響。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ElementPlus el-message-box樣式錯位問題及解決

    ElementPlus el-message-box樣式錯位問題及解決

    這篇文章主要介紹了ElementPlus el-message-box樣式錯位問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷

    koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷

    這篇文章主要介紹了koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • 關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題

    關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題

    這篇文章主要介紹了關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解Vue底部導(dǎo)航欄組件

    詳解Vue底部導(dǎo)航欄組件

    這篇文章主要介紹了Vue底部導(dǎo)航欄的詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue項目中使用AvueJs的詳細(xì)教程

    vue項目中使用AvueJs的詳細(xì)教程

    Avue.js是基于現(xiàn)有的element-ui庫進(jìn)行的二次封裝,簡化一些繁瑣的操作,核心理念為數(shù)據(jù)驅(qū)動視圖,主要的組件庫針對table表格和form表單場景,這篇文章給大家介紹了vue項目中使用AvueJs的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • vue項目依賴升級報錯處理方式

    vue項目依賴升級報錯處理方式

    這篇文章主要介紹了vue項目依賴升級報錯處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue單文件組件無法獲取$refs的問題

    vue單文件組件無法獲取$refs的問題

    這篇文章主要介紹了vue單文件組件無法獲取$refs的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁面的方法

    vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁面的方法

    這篇文章主要介紹了vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁面的方法,主要目的是實現(xiàn)未登錄跳轉(zhuǎn),需要的朋友參考下吧
    2018-07-07
  • vue中的Key值重復(fù)問題

    vue中的Key值重復(fù)問題

    這篇文章主要介紹了vue中的Key值重復(fù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 優(yōu)化Vue中date format的性能詳解

    優(yōu)化Vue中date format的性能詳解

    這篇文章主要介紹了優(yōu)化Vue中date format的性能詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評論

宜丰县| 江安县| 都昌县| 平武县| 达拉特旗| 白城市| 华亭县| 汝阳县| 罗甸县| 东城区| 博爱县| 吴旗县| 武强县| 南昌县| 十堰市| 丰城市| 朔州市| 文成县| 遂川县| 龙南县| 高邮市| 龙井市| 乌拉特后旗| 黑龙江省| 吐鲁番市| 湘西| 岐山县| 隆子县| 贵港市| 芦溪县| 普安县| 石城县| 渭源县| 沅江市| 海盐县| 剑阁县| 墨江| 宜章县| 陆良县| 思茅市| 岱山县|