zoukankan      html  css  js  c++  java
  • 移动端-webkit-user-select:none导致input/textarea输入框无法输入

    这个问题,也算是个大坑了。

    最开始的开始,是因为我们在做大装盘活动的时候,发现在ios上面出现了这样的问题:点击“转”按钮,ios上面会有延迟并且会出现图片的阴影,这个肯定就不好看了撒,然后,找吧,改吧。

    对于延迟问题,使用以下方法解决:

    FastClick消除点击延时提高程序的运行效率
    引入插件的javascript文件到你的HTML网页中,像这样:
    <script type='application/javascript' src='fastclick.js'></script>
     
    注意:type属性在HTML5网页中可以省略不写。
    脚本必须加载到实例化fastclick在页面的任何元素之前。
    实例化 fastclick 最好在body元素的前面
     
    $(function(){
    //fastclick用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300s延迟
    FastClick.attach(document.body);
    });

    附加: 解决移动端点透问题方法:

      1. 众所周知,zepto的tap事件是有点透问题的,但是最新版的zepto已经修复了这个问题。

      2. 在zepto修复问题之前,有fastclick、hammer等通用库可以使用。

      其中最常使用的还是fastclick,地址 :https://github.com/ftlabs/fastclick

    对于点透问题,参考这位同学写的博客,写的很好:web移动前端的click点透问题

    图片阴影的问题,找了好久,终于找到了解决办法:

    * {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        // 后面的几行是新加的
        -webkit-tap-highlight-color: transparent;
        -webkit-touch-callout: none; 
        -webkit-user-select: none; 
        outline: none;
    }

    好啦,大功告成。结果第二天来上班,又出现了问题,说的是所有的input框在ios上面都无法输入了,这个时候,我慌了。仔细回想,头天代码都没动,只是改了这个,好吧,又开始网上各种查各种找。

    终于找到原因啦。。。。

    就是-webkit-user-select: none;导致的!!!

    经过查阅,网上有提供一种好的解决办法:

    * {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        -webkit-tap-highlight-color: transparent;
        outline: none;
    }
    
    *:not(input,textarea) { 
        -webkit-touch-callout: none; 
        -webkit-user-select: none; 
    }

    最终完美解决了这个问题。后来查阅了一下,新加的几行代码的意思:

    -webkit-tap-highlight-color
    这是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
    当用户点击iOS的Safari浏览器中的链接或JavaScript的可点击的元素时,覆盖显示的高亮颜色。
    该属性可以只设置透明度。如果未设置透明度,iOS Safari使用默认的透明度。当透明度设为0,则会禁用此属性;当透明度设为1,元素在点击时不可见。
     
    -webkit-touch-callout
    当你触摸并按住触摸目标时候,禁止或显示系统默认菜单。在iOS上,当你触摸并按住触摸的目标,比如一个链接,Safari浏览器将显示链接有关的系统默认菜单。这个属性可以让你禁用系统默认菜单。
     
    user-select
    (1) 语法
    user-select:none | text | all | element
    默认值:text
    适用范围:除替换元素外的所有元素
    (2) 取值说明
    none:文本不能被选择
    text:可以选择文本
    all:当所有内容作为一个整体时可以被选择。如果双击或者在 上下文上点击子元素,那么被选择的部分将是以该子元素 向上回溯的最高祖先元素。
    Element:可以选择文本,但选择范围受元素边界的约束
     
  • 相关阅读:
    二分查找 && 三分查找
    LeetCode || 大杂烩w
    LeetCode || 递归 / 回溯
    LeetCode || 双指针 / 单调栈
    HITICS || 2018大作业 程序人生 Hello's P2P
    思维 || Make It Equal
    国庆集训 || Wannafly Day4
    国庆集训 || Wannafly Day1
    区间DP || HDU 6249 Alice’s Stamps
    10进制转k进制
  • 原文地址:https://www.cnblogs.com/xiayu25/p/6832748.html
Copyright © 2011-2022 走看看