ElInputNumber 添加单位

需求需要 给 ElInputNumber 加个单位,文档没找见有相关的slot,试图直接百度个可用的,
然后发现了这篇文章

el-input-number中添加suffix

看着还行,js操作dom添加了下,实际我想直接css控制的,

直接简单实现下吧,开始想着直接after + css变量

.el-input-number > .el-input::after {
  content: var(--el-input-number-unit);
  position: absolute;
  right: 38px;
  color: #8D8D8D;
}

用的话就是

 <ElInputNumber style="--el-input-number-unit: '米'" />

然而 content居然不支持css变量,我也是才知道,然后又查了一下,发现个 counter(),或许可行?
小tips: 如何借助content属性显示CSS var变量值

.el-input-number > .el-input::after {
  counter-reset: unit var(--el-input-number-unit);
  content: counter(unit);
  position: absolute;
  right: 38px;
  color: #8D8D8D;
}

还是不行…
直接上MDN看看吧 ::after (:after)

attr() 貌似可行,试了下确实可行,但是 attr() 只能获取当前节点的属性
那就直接应用到父级吧,再处理一点细节~

需要注意的是:这个示例仅在 element-plus 1.0.2-beta.71 测试过,新版本(2.2.27)大概看了下DOM结构没啥变化,主要就是一些尺寸需要注意吧

css 部分

.el-input-number[data-unit] {
  --el-input-number-unit-offset-x: calc(40px + 4px);
}
.el-input-number--small[data-unit] {
  --el-input-number-unit-offset-x: calc(32px + 4px);
}
.el-input-number[data-unit]::after {
  content: attr(data-unit);
  position: absolute;
  top: 0;
  right: var(--el-input-number-unit-offset-x);
  color: #8D8D8D;
  height: 100%;
  display: flex;
  align-items: center;
}
.el-input-number[data-unit] .el-input__inner {
  padding-right: calc(1em + var(--el-input-number-unit-offset-x) + 4px);
}

声明式组件

 <ElInputNumber data-unit="" />

渲染函数

h(ElInputNumber, { 'data-unit': '米' })

在这里插入图片描述

最后问下可爱的猫娘吧~

在这里插入图片描述
看完给我心里一咯噔,我寻思我眼花了没看见问文档中有这个unit?

在这里插入图片描述
不过我也疑惑 element-plus 为啥不加这个功能吧,可能通用性不是很高… 实际设计方面也可以考虑单位外置
如果你对这个猫娘有兴趣,可以试试 chat_gpt_oicq ~~~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
根据提供的引用内容,el-table-column点击可编辑的实现需要以下步骤: 1. 在el-table-column标签中添加prop属性,用于指定该列对应数据的字段名。 2. 在el-table-column标签中添加edit-render属性,用于指定该列的编辑渲染方式。可以使用el-input等组件。 3. 在el-table-column标签中添加edit-methods属性,用于指定该列的编辑方法。可以使用handleInputBlur等方法。 4. 在el-table标签中添加@cell-dblclick事件,用于监听双击单元格的事件,并调用startEdit方法进入编辑状态。 5. 在methods中定义startEdit方法,用于将当前单元格设置为编辑状态。 下面是一个el-table-column点击可编辑的示例代码: ```html <template> <el-table :data="tableData" @cell-dblclick="startEdit"> <el-table-column prop="name" label="姓名" edit-render="{name: 'ElInput'}" edit-methods="{name: 'handleInputBlur'}"> <template slot-scope="scope"> <div class="input-box"> <el-input size="small" v-model="scope.row.name"></el-input> </div> <span>{{scope.row.name}}</span> </template> </el-table-column> <el-table-column prop="age" label="年龄" edit-render="{name: 'ElInputNumber'}" edit-methods="{name: 'handleInputBlur'}"> <template slot-scope="scope"> <div class="input-box"> <el-input-number size="small" v-model="scope.row.age"></el-input-number> </div> <span>{{scope.row.age}}</span> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18 }, { name: '李四', age: 20 }, { name: '王五', age: 22 } ] } }, methods: { startEdit(row, column) { this.$refs.table.toggleRowExpansion(row) this.$nextTick(() => { const cell = this.$refs.table.$el.querySelector(`.el-table__body-wrapper tbody tr:nth-child(${row.$index + 1}) td:nth-child(${column.index + 1}) .el-input__inner`) cell.focus() }) }, handleInputBlur() { this.$refs.table.clearSelection() } } } </script> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

du青松

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值