惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
L
LangChain Blog
博客园_首页
J
Java Code Geeks
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
WordPress大学
WordPress大学
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
C
Check Point Blog
IT之家
IT之家
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
D
Docker
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ

博客园 - 彭成刚

mp4转圆角gif.bat localforage js数据存储 localStorage 替代,可大数据存储 indexdb数据库 文件系统有 happy-opfs "editor.cursorSurroundingLines": 3, 光标周围行数 设置光标在第几行的时候滚动页面滚动条 Prettier - Code formatter BUG 读不到 根目录的 .prettierrc.js prettier.configPath 格式化失效 vue2 mounted后面括号应该没有空格 _.flow 管道函数 lodash 同步函数列表很哇塞啊 _.flow(caozuo1, caozuo2, caozuo3)(my_data) vue2 iview 组件 ref 起名规则 应该用文件名 <shouye_book_left ref="shouye_book_left" /> iview 日期组件 BUG 赋值变量选年度 然后当前年会有个蓝色底, 解决方案 :key="ccValue" ⭐️⭐️⭐️ 自定义组件 表单验证 v-model 自动更新验证 trigger: 'change' 不触发,解决方案 加 <Input v-model="formData.abc" /> vue2 iview ComfyUiApi comfyui_xy 安装-使用 mergeLeft 左合并json函数 alt+k vscode 执行 ccdev - 在editor 和 terminal 之间切换 splitTwo 分割2个元素,主要分割文件名和id等 pi.dev 试试这个cli - deepseek-flash-v4 C盘清理空间软件 c盘没空间了 Wise Disk Cleaner kceve 鼠标2口控制器 kvm 鼠标同步器 穿屏幕 快捷键 是 s + * 操作列css每个按钮a后面加竖线.css operation_class .prettierrc.js 我发现 这个格式化的配置 默认就不建议放全局,都是跟项目走的 grid-gap 在 chrome58 支持,然后chrome58 不支持 gird的gap,不支持flex的gap iview table columns.js 表头 带* 带星 renderHeader alt+F9 设置 open in terminal 打开当前文件terminal vscode idea 都设置成这个快捷键 配合 ccdev使用 ccdev go开发 cli开发 读取本地模版复制到剪切板 where.exe node 查看命令位置 powershell 注意不是 where node (新建了一个ccwhere.bat) vue2 vModel 组件绑定数据写法 ccValue reloadenv 函数 `code $PROFILE` vscode在不关闭下刷新环境变量 volta 安装记录 node多版本控制 && @native-sdk OmniVoice 记录 我觉得音色还原还不错 voiceclone-env 记录 vscode pwsh 全选快捷键 ctrl+a (powershell) ai专属使用 aitree 命令 ai配合重要命令 powershell vscode code $PROFILE 备份,配合conda使用vscode
iview table 单行显示文字 默认key 文字超出宽度 显示... 加t...
彭成刚 · 2026-06-23 · via 博客园 - 彭成刚

iview table 单行显示文字 默认key 文字超出宽度 显示... 加tip cut-text2.vue

cut-text2.vue

<template>
  <Tooltip2 :max-width="tipMaxWidth" :placement="tipPlacement" :disabled="!isOverflow" transfer
    :style="{ width: this.allWidth ? '100%' : null, verticalAlign: verticalAlign ? 'middle' : null, textAlign: toolTipTextAlign }">
    <div ref="textRef" class="text-ellipsis-container" :style="ellipsisStyle" @mouseenter="checkOverflow">
      {{ content }}
    </div>
    <span slot="content">
      <div :style="`max-height:${tipMaxHeight}px;overflow-y:auto;padding:3px;`">{{ content }}</div>
    </span>
  </Tooltip2>
</template>
<script>
import Tooltip2 from '../tooltip'
export default {
  components: { Tooltip2 },
  props: {
    // 文字内容
    content: {
      type: String,
      default: ''
    },
    lines: {
      type: Number,
      default: 1 // 就默认一行 一行最稳定
    },
    // 文字对齐方式
    toolTipTextAlign: {
      type: String,
      default: 'left'
    },
    textAlign: {
      type: String,
      default: 'center'
    },
    tipPlacement: {
      type: String,
      default: 'top'
    },
    tipMaxWidth: {
      type: Number,
      default: 300
    },
    tipMaxHeight: {
      type: Number,
      default: 100
    },
    allWidth: {
      type: Boolean,
      default: true
    },
    verticalAlign: {
      type: Boolean,
      default: false
    }
  },
  computed: {
    ellipsisStyle () {
      // 显式声明 height 为 auto,确保在文字少时完全由内容撑开(1行文字就是1行高度)
      const baseStyle = {
        height: 'auto',
        maxHeight: 'none',
        overflow: 'hidden',
        textOverflow: 'ellipsis',
        boxSizing: 'border-box',
        textAlign: this.textAlign
      }

      if (this.lines === 1) {
        return {
          ...baseStyle,
          whiteSpace: 'nowrap'
        }
      } else {
        return {
          ...baseStyle,
          display: '-webkit-box',
          WebkitLineClamp: this.lines,
          // 额外加上标准属性,兼容部分早期标准或多核浏览器
          lineClamp: this.lines,
          WebkitBoxOrient: 'vertical',
          // 用 break-word 替代 break-all,对老版本浏览器的长英文、标点换行更友好
          wordBreak: 'break-word'
        }
      }
    },
    cutedContent () {
      if (this.content && this.content.length > this.maxCount) {
        return this.content.substring(0, this.maxCount) + '...'
      } else {
        return this.content
      }
    }
  },
  data () {
    return {
      isOverflow: false
    }
  },
  methods: {
    checkOverflow () {
      const el = this.$refs.textRef
      if (!el) return

      if (this.lines === 1) {
        // 单行比较:实际内容宽度 > 容器可视宽度
        this.isOverflow = el.scrollWidth > el.clientWidth
      } else {
        // 多行比较:实际内容高度 > 容器可视高度
        // Firefox 52 支持 scrollHeight 和 clientHeight 的精准判定
        this.isOverflow = el.scrollHeight > el.clientHeight
      }
    }
  },
  created () {
  },
  mounted () { },

  watch: {}
}
</script>

<style lang="less" scoped>
.text-ellipsis-container {
  width: 100%;
  /* 确保块级上下文中,老版本 Firefox 的盒模型表现正常 */
  display: block;
}
</style>

<template>
  <Tooltip v-bind="$attrs"
           v-on="$listeners"
           theme="light"
           transfer
           transferClassName="tooltip2">
    <template v-for="slotName in slotArr"
              :slot="slotName">
      <slot :name="slotName"></slot>
    </template>
  </Tooltip>
</template>
<script>
export default {
  inheritAttrs: false,
  components: {

  },
  props: {

  },
  data () {
    return {
    }
  },
  mounted () {
  },
  created () {

  },
  computed: {
    slotArr () {
      return [...Object.keys(this.$slots)]
    }
  }
}
</script>

configQueryListFunc.js

import CutText2 from '@/components/abc-lib/cut-text2'
export const mergeColumns = (columns) => {
  return columns.map(item => {
    if (item.key) {
      // 设置render
      if (!item.render) {
        // const maxCount = item.maxCount || 60
        item.render = (h, params) => {
          return h(CutText2, {
            props: {
              content: params.row[item.key],
              // lines: 1 就一行 一行最稳定
              // align 这里没有用columns的方式,就为了能表头居中,内容居左
              textAlign: item.textAlign || 'center'
              // maxCount: maxCount
            }
          }, {})
        }
      } else {
        return item
      }
    } else {
      return item
    }
  })
}

columns.js

export const columns = [{
  title: '姓名',
  key: 'name',
  minWidth: 100,
  align: 'center',
}]

使用方法

import { mergeColumns } from '...'
import { columns } from '...'

this.columns = mergeColumns(columns)