【问题标题】:Disable orange outline highlight on focus禁用焦点上的橙色轮廓突出显示
【发布时间】:2011-07-09 18:57:41
【问题描述】:

我正在使用 jQuery、jqTouch 和 phonegap 编写应用程序,并且遇到了一个持久性问题,当用户使用软键盘上的 Go 按钮提交表单时会出现该问题。

虽然使用$('#input_element_id').focus() 很容易让光标移动到适当的表单输入元素,但橙色轮廓突出显示始终返回到表单上的最后一个输入元素。 (使用表单提交按钮提交表单时,突出显示不显示。)

我需要找到一种方法,要么完全禁用橙色突出显示,要么使其移动到与光标相同的输入元素。

到目前为止,我已经尝试将以下内容添加到我的 CSS 中:

.class_id:focus {
    outline: none;
}

这适用于 Chrome,但不适用于模拟器或我的手机。我也试过编辑 jqTouch theme.css 来阅读:

ul li input[type="text"] {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); and
    -webkit-focus-ring-color:  rgba(0, 0, 0, 0);
}

没有效果。 我还尝试了对AndroidManifest.xml 文件的以下每个添加:

android:imeOptions="actionNone"
android:imeOptions="actionSend|flagNoEnterAction"
android:imeOptions="actionGo|flagNoEnterAction"

这些都没有任何影响。

更新:我对此进行了更多故障排除,迄今为止发现:

  1. outline 属性仅适用于 Chrome,不适用于 Android 浏览器。

  2. -webkit-tap-highlight-color 属性实际上在 Android 浏览器上有效,但在 Chrome 上无效。它会禁用焦点和点击时的突出显示。

  3. -webkit-focus-ring-color 属性似乎不适用于任一浏览器。

【问题讨论】:

    标签: android focus highlight outline


    【解决方案1】:

    试试:

    -webkit-tap-highlight-color: rgba(255, 255, 255, 0); 
    -webkit-tap-highlight-color: transparent;  // i.e. Nexus5/Chrome and Kindle Fire HD 7''
    

    【讨论】:

    • 它不适用于 android 4.0.4 - 有人经历过吗? (它适用于以前的版本和 4.1)
    • android 4.0.4 适用于:-webkit-user-modify: read-write-plaintext-only;
    • @oori 确实如此,但是通过导致键盘弹出来“破坏”iOS。
    • @Max,您的评论不清楚。在 iOS 上 - 当然,一旦你专注于输入/文本区域,键盘就会弹出。请解释一下
    • @oori 好吗?这对非输入非文本区域元素没有帮助,这是我评论的主题。
    【解决方案2】:

    试试焦点线

    body, textarea:focus, input:focus{
        outline: none;
        -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
    }
    

    【讨论】:

    • 仅适用于 Android 4.2 设备和类似设备的有效解决方案。
    【解决方案3】:
    * {
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);  
    } 
    

    在您的 css 文件中。 它对我有用!

    【讨论】:

      【解决方案4】:

      移除 Android 输入焦点上的橙色框

      textarea:focus, input:focus{
          -webkit-tap-highlight-color: rgba(255, 255, 255, 0);    
          -webkit-user-modify: read-write-plaintext-only;
      }
      

      tap-highlight-color 适用于大多数版本

      用户修改 4.0.4

      【讨论】:

      • 几天来一直在寻找修复 [Android 4.1.2]。这是唯一有效的。非常感谢!
      • @Ben 上面的答案肯定有效...用您的代码制作一个 plunkr/jsfiddle,以便我们查看并帮助您。
      • @Ben user-modify for 4.0.4 不是很好的解决方案,如果您有任何其他解决方案,请分享。
      【解决方案5】:

      请注意,使用此 CSS -webkit-user-modify: read-write-plaintext-only; 将删除那个可怕的高亮“错误” - 但它可能会破坏您的设备提供特定键盘的能力。对于在三星 Tab 2 上运行 Android 4.0.3 的我们来说,我们无法再获得数字键盘。即使使用 type='number' &/or type='tel' 。非常令人沮丧! 顺便说一句,设置点击突出显示颜色无法解决此设备和操作系统配置的此问题。我们正在运行 Safari for android。

      【讨论】:

      • 你是如何运行安卓版 Safari 的。
      • 嘿@Amit,我已经很久没有回答这个问题了!我想说的是,它只是直接从设备中取出来作为工厂标准...... Tab2 当时在市场上相当新。
      【解决方案6】:

      为确保 tap-highlight-color 属性覆盖适用于您,请首先考虑以下事项:

      不工作:
      -webkit-user-modify:只读-写-纯文本;
      // 点击元素时有时会触发原生键盘弹出

      .class:active, .class:focus { -webkit-tap-highlight-color: rgba(0,0,0,0); }
      // 如果为状态定义它就不起作用

      工作:
      .class { -webkit-tap-highlight-color: rgba(0,0,0,0); }

      此案例适用于 从 v2.3 到 v4.x 的 Android,即使在 PhongeGap 应用程序中也是如此。我在装有 Android 2.3.3 的 Galaxy Y、装有 Android 4.2.2 的 Nexus 4 和装有 Android 4.1.2 的 Galaxy Note 2 上对其进行了测试。所以不要只为元素本身的状态定义它

      【讨论】:

      • 这个技巧是我在 Android 2.3 上使用 WebView 的原因。
      • WOOOOW 这个成功了!! (Android 4.1.2)该死!我讨厌 webview 碎片化!!
      【解决方案7】:

      这对我在 Image Map Area 链接上不起作用,唯一可行的解​​决方案是使用 javascript 通过捕获 ontouchend 事件并通过在处理程序上返回 false 来防止默认浏览器行为。

      使用 jQuery:

      $("map area").on("touchend", function() {
         return false;
      });
      

      【讨论】:

        【解决方案8】:

        这不仅适用于点击,也适用于悬停:

        button, button:hover, li:hover, a:hover , li , a , *:hover, * {
            -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;
        }
        

        【讨论】:

          【解决方案9】:

          我只是想分享我的经验。我并没有真正让这个工作,我想避免缓慢的 css-*。我的解决方案是下载好旧的 Eric Meyer 的 Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 并将这个添加到我的 phonegap 项目中。然后我补充说:

          -webkit-tap-highlight-color: rgba(0, 0, 0, 0);   /** Disable orange highlight */
          

          根据我的经验,这是一种更快的处理 * 的方法,但它也是一种减少奇怪错误的方法。 Tap-highlight、-webkit-user-modify: read-write-plaintext-only 和禁用例如文本突出显示的组合给我们带来了很多麻烦。最糟糕的情况之一是键盘输入突然停止工作并且键盘可视化速度变慢。

          在禁用橙色突出显示的情况下完成 CSS 重置:

          /**
           * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
           * http://cssreset.com
           */
          html, body, div, span, applet, object, iframe,
          h1, h2, h3, h4, h5, h6, p, blockquote, pre,
          a, abbr, acronym, address, big, cite, code,
          del, dfn, em, img, ins, kbd, q, s, samp,
          small, strike, strong, sub, sup, tt, var,
          b, u, i, center,
          dl, dt, dd, ol, ul, li,
          fieldset, form, label, legend,
          table, caption, tbody, tfoot, thead, tr, th, td,
          article, aside, canvas, details, embed,
          figure, figcaption, footer, header, hgroup,
          menu, nav, output, ruby, section, summary,
          time, mark, audio, video {
              margin: 0;
              padding: 0;
              border: 0;
              font-size: 100%;
              font: inherit;
              vertical-align: baseline;
              -webkit-tap-highlight-color: rgba(0, 0, 0, 0);   /** Disable orange highlight */
          }
          /* HTML5 display-role reset for older browsers */
          article, aside, details, figcaption, figure,
          footer, header, hgroup, menu, nav, section {
              display: block;
          }
          body {
              line-height: 1;
          }
          ol, ul {
              list-style: none;
          }
          blockquote, q {
              quotes: none;
          }
          blockquote:before, blockquote:after,
          q:before, q:after {
              content: '';
              content: none;
          }
          table {
              border-collapse: collapse;
              border-spacing: 0;
          }
          

          【讨论】:

            【解决方案10】:

            100% 在 Android Default、Android Chrome 和 iOS Safari 上工作

            * {
                -webkit-tap-highlight-color: rgba(255, 255, 255, 0) !important; 
                -webkit-focus-ring-color: rgba(255, 255, 255, 0) !important; 
                outline: none !important;
            } 
            

            【讨论】:

            • 这应该是选择的答案
            • 如果您的问题是按钮问题,您可以使用button,而不是使用*
            【解决方案11】:

            如果设计不使用轮廓,这应该可以完成工作:

            *, *::active, *::focus {
                -webkit-tap-highlight-color: rgba(0, 0, 0, 0)!important;
                -webkit-focus-ring-color: rgba(0, 0, 0, 0)!important;
                outline: none!important;
            }
            

            【讨论】:

              【解决方案12】:

              在 CSS 文件中使用以下代码

                * {
                   -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
                  }
                  :focus {
                      outline: 0;
                      border:none;
                      color: rgba(0, 0, 0, 0);
                  }
              

              这对我有用。我希望它对你有用。

              【讨论】:

                【解决方案13】:
                <EditText
                            android:id="@+id/edittext"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"  
                            android:background="@android:drawable/editbox_background_normal"                 
                
                 />
                

                【讨论】:

                  【解决方案14】:

                  我试过这个并且效果很好:-

                  HTML:-

                  <a class="html5logo"  href="javascript:void(0);"  ontouchstart="return true;"></a>
                  

                  css

                  .html5logo {
                    display: block;
                    width: 128px;
                    height: 128px;
                    background: url(/img/html5-badge-128.png) no-repeat;
                    -webkit-tap-highlight-color: rgba(0,0,0,0);
                    -webkit-tap-highlight-color: transparent; /* For some Androids */
                  }
                  .html5logo:active {
                    -webkit-transform: scale3d(0.9, 0.9, 1);
                  }
                  

                  【讨论】:

                  • -webkit-tap-highlight-color:透明; -> 很好,解决了它,例如 Nexus5(Chrome) 和 Kindle Fire HD 7''。所有其他选项对这些设备/浏览器没有帮助。小心,Firefox 和 Opera 不需要 Nexus5 上的线路。
                  【解决方案15】:

                  尝试以下禁用边框轮廓的代码

                  大纲:无!重要;

                  【讨论】:

                    【解决方案16】:

                    这在 Ionic 中为我工作,只需放入 CSS 文件覆盖

                    :focus {
                        outline-width: 0px;
                    }
                    

                    【讨论】:

                      猜你喜欢
                      • 2014-03-11
                      • 2013-09-07
                      • 1970-01-01
                      • 2013-09-07
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-09-22
                      相关资源
                      最近更新 更多