css 属性:user-modify 让html标签变成可编辑

这几天看到顺丰的移动端的页面改版了 发现很有趣研究了一下。突然现在他有一个div标签可以编辑。一开始以为是用js写的脚本。后续发现使用 user-modify属性写的,所以研究了一下。

当我们有一个需求的时候,需要用到这个属性,其实如果只是用来输入字符,不推荐使用,因为这个没有input的功能多,比如限制输入长度,和placeholder等等。

只有当我们需要一个根据你输入的字数去自动改变高度的时候我们就需要用到这个属性。

有人可能会说 为什么不直接使用<textarea></textarea>

当我们使用<textarea></textarea>会出现一个问题 高度不能自增

那么我们只能使用第二个解决方案 :

contenteditable 属性可以轻松的使标签变成可编辑状态,只需要在html标签上加上contenteditable="true",就可以轻松的模拟文本域了:

<div contenteditable="true" class="input"></div>

 

此时文本域的高度是由该 div 标签来控制的,所以只要不写死 div 的高度,该文本域的高度就会随着文字换行自增自减。

.input{
  width: 300px;
  min-height: 30px;
  max-height: 90px;
  overflow-y: auto
}

 但是contenteditable 有一个致命的问题,当你要复制html代码的时候不会自动过滤 html 代码 会直接帮你转换成html标签使用。

å¤å¶çHTML代ç æ¾ç¤º å¼ é«æ­-é«ç©ºé´-é«çæ´»

为了解决这些问题我们只能使用user-modify 来实现这个需求。

通过百度,发现了 user-modify 这个css属性, user-modify 支持以下四个值:

  • user-modify: read-only;
  • user-modify: read-write;
  • user-modify: write-only;
  • user-modify: read-write-plaintext-only

区别是前者可以输入富文本,后者只可以输入纯文本。
所以就可以不用设置 contenteditable="true" 了,而改用 user-modify: read-write-plaintext-only,问题就迎刃而解了。
另外需要加浏览器前缀,光写user-modify 是不支持的,需要写成 -webkit-user-modify-moz-user-modify
所以这篇文章就教了你一个css属性 user-modify :)。

参考文献:https://www.zhangxinxu.com/wordpress/2016/01/contenteditable-plaintext-only/

https://www.cnblogs.com/smartXiang/p/6680610.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值