我们可以避免闪烁光标与div重叠

时间:2013-06-13 11:06:26

标签: javascript html css contenteditable

我正在寻找任何可以处理光标在其他div上闪烁的方法。为了使我的陈述清楚,我正在添加一个屏幕截图 - Screen shot in IE

  1. 灰色div是顶部固定的div,用于创建色带。
  2. 左边有边框的白色区域实际上是一个div属性contentEditable =“true”,这使得可编辑区域。 Imp-可编辑区域的高度可以通过内容增加,即我们不能在那里有滚动条。
  3. 因此,当内容超出屏幕并向下滚动时,如果光标已放置在可编辑区域内,则它会显示在功能区上。

    如果选择了那些可调整大小的图像边框,也会发生相同的情况。而且,这仅适用于IE。没有firefox和chrome的问题。

    代码如下:

    <head runat="server">
    <title></title>
    <style type="text/css">
        .wrapper {
            width:960px;
            height:auto;
            min-height:600px;
            margin-left:auto;
            margin-right:auto;
            border-left:1px solid #cfcfcf;
            border-right:1px solid #cfcfcf;
            box-shadow:0px 10px 10px #6f6f6f;
            background-color:#ffffff;
            margin-top:100px;
        }
        .container {
            width:100%;
            height:auto;
            min-height:800px;
            padding:10px;
            font-family:Arial;
            border:1px solid #3f3f3f;
            box-sizing:border-box;
            -moz-box-sizing:border-box;
            -webkit-box-sizing:border-box;
        }
        .editor-ribbon {
            height:100px;
            position:fixed;
            left:0px;
            top:0px;
            width:100%;
            border-bottom:1px solid #cfcfcf;
            width:100%;
            background-color: #ffffff;
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#f1f1f1', endColorstr = '#e3e3e3');
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr = '#f1f1f1', endColorstr = '#e3e3e3')";
            background-image: -moz-linear-gradient(top, #f1f1f1, #e3e3e3);
            background-image: -ms-linear-gradient(top, #f1f1f1, #e3e3e3);
            background-image: -o-linear-gradient(top, #f1f1f1, #e3e3e3);
            background-image: -webkit-gradient(linear, center top, center bottom, from(#f1f1f1), to(#e3e3e3));
            background-image: -webkit-linear-gradient(top, #f1f1f1, #e3e3e3);
            background-image: linear-gradient(top, #f1f1f1, #e3e3e3);
        }
    </style>
    </head>
    <body>
      <form id="form1" runat="server">
        <div class="editor-ribbon"></div>
        <div class="wrapper">
            <div class="container" contenteditable="true">
    
            </div> 
        </div>
      </form>
    </body>
    

3 个答案:

答案 0 :(得分:1)

在我看来,你的答案是:它不会很快修复

https://connect.microsoft.com/IE/feedback/details/841043/blinking-text-cursor-overlapping-with-div

  

闪烁文本光标与div重叠

     

状态:已暂停关闭

     

描述

     

输入的文本光标在重叠的div上变得可见。文本光标不应该变得可见,而是保持在重叠的div下,因为整个输入(或可编辑的textarea)保持在该div之下。

答案 1 :(得分:0)

问题与功能区的背景过滤器/图像属性有关。

将背景更改为简单的颜色可以解决问题。

http://jsfiddle.net/4drs2/6/

  .editor-ribbon {
    height:100px;
    position:fixed;
    left:0px;
    top:0px;
    width:100%;
    border-bottom:1px solid #cfcfcf;
    width:100%;
    background-color: gray;
        }

答案 2 :(得分:0)

我遇到了同样的问题,我解决的方法是将blur()函数添加到输入中,这意味着每次用户滚动文档时都会触发blur()函数。

<强>缺点
当用户滚动时,输入失去了焦点。