vue 自定义指令 自动添加省略号 ellipsis

出处 转载与 b站up主 程序员小山与Bug

效果预览网址

https://sunzsh.github.io/vue-demos/#/ellipsis
请添加图片描述

视频讲解

程序员小山与Bug

自定义指令 trunced

https://github.com/sunzsh/vue-el-demo/blob/master/src/components/trunced.js

import ResizeObserver from 'resize-observer-polyfill';


const syncVar = (node, binding, vnode) => {
 if (binding.arg) {
   binding.value[binding.arg] = node.offsetWidth < node.scrollWidth
 } else {
   vnode.context[binding.expression] = node.offsetWidth < node.scrollWidth
 }
}

export default {
 install(Vue) {
   Vue.directive('trunced', {
     inserted: function(el, binding, vnode) {
       const node = binding.modifiers.parent ? el.parentNode : el
       syncVar(node, binding, vnode);

       const ro = new ResizeObserver((entries, observer) => {
         entries[0].target && syncVar(node, binding, vnode)
       });
       ro.observe(node);
     },
     componentUpdated: function(el, binding, vnode) {
       const node = binding.modifiers.parent ? el.parentNode : el
       syncVar(node, binding, vnode);
     }
   })
 }
};

使用

https://github.com/sunzsh/vue-el-demo/blob/master/src/views/ellipsis.vue

<template>
 <div>


   {{ sl }}
   <br />
   <div v-trunced="sl" class="test"> {{value}}</div>
   <input v-model="value" />


 </div>
</template>

<script>
export default {
 data() {
   return {
     value: 'testtests',
     sl: false
   }
 }
}
</script>

<style scoped>
.test {
 background-color: red;
 color: #fff;
 width: 15%;
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: nowrap;
}
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值