contenteditable光标解决方案(待优化)

业务场景:在表单的输入框中input的元素中由于输入内容过长并不能很好的实现填写内容拖拉效果,便于检查用户输入是否出错

input的视觉效果

实现效果:能够自由拖拽查看填写内容

动态效果图就不放了,手机太low录屏效果差

div模拟input的视觉效果

先看下代码结构class=inputContent的元素设置contenteditable属性为true并给此元素绑定input事件,内部再嵌套一个p元素
p元素来作为可以编辑内容的包裹元素

  <div id="simulation">
    <div class="fr-cell">
      <span class="fr-cell-title">户籍地址:
      <div class="fr-cell-value">
        <div class="inputContent" ref="editor" contenteditable="true" @input="changeText">
          <p></p>
        </div>
      </div>
    </div>
  </div>

再来看看style样式class=inputContent的宽度要比父元素大,并将父元素宽度固定

#simulation .fr-cell {
    height: 50px;
    padding: 0 20px;
    box-sizing: border-box;
    background-color: #fff;
    display: flex;
    align-items: center;
    font-size: 15px;
    color: #333;
  }
  #simulation .fr-cell-title{
    margin-right: 10px;
  }
  #simulation .fr-cell-value{
    flex: 1;
    display: flex;
    align-items: center;
    height: 50px;
    overflow-x: scroll;
    overflow-y: hidden;
  }
  #simulation .fr-cell-value .inputContent{
    outline: none;
    height: 24px;
    line-height: 24px;
    width: 200%;
    white-space: nowrap;
  }
  #simulation .inputContent p{
    margin: 0;
    padding: 0;
    height: 24px;
    line-height: 24px;
  }

最后是js代码:

<script>
  export default {
    name: 'simulation',
    data () {
      return {
        val: 'Lorem ipsum'
      }
    },
    mounted () {
      this.$refs.editor.firstChild.innerText = this.val
    },
    methods: {
      changeText (e) {
        this.val = e.target.firstChild.innerText
      }
    }
  }
</script>

重点:在于使用contenteditable属性的内部添加一个p元素来放置编辑的内容,若没有内部没有p元素则会出现我们熟悉的contenteditable属性元素的光标问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,097评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,826评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,820评论 1 45
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,641评论 0 6
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,356评论 0 3