Phonegap样式 -webkit-user-select: none; 禁用文本字段
Phonegap样式 -webkit-user-select: none; 禁用文本字段
我对Phonegap还比较陌生。在一个干净的Phonegap项目中,使用的默认CSS不允许在文本字段中输入。我将问题缩小到一行CSS代码:
* { -webkit-touch-callout: none; /* 防止点击并保持时拷贝图像等操作的弹出菜单 */ -webkit-text-size-adjust: none; /* 防止Webkit调整文本以适应 */ -webkit-tap-highlight-color: rgba(0,0,0,0); /* 使链接选择透明化,调整最后一个值的不透明度从0到1.0 */ -webkit-user-select: none; /* 防止复制粘贴,要允许,请将'none'更改为'text' */ }
问题出在这行代码上:
-webkit-user-select: none;
这段代码可以在www/index.css中找到。
看起来完全禁用输入字段并不是期望的效果。
我之前也发布过这个问题两次,但被关闭了,不知道为什么...我的问题被关闭是因为不是常见问题。对此我只能说,我猜测一些stackoverflow的用户认为CSS3、Phonegap、HTML5和-webkit-user-select:不是常见情况。我持不同意见。
不过,我还看到这个问题在这里也有人发布,也在Safari中引起问题: User select:none causes input field to be inaccessible on Safari 尽管有些不同。
我目前的解决方案是这样的:
-webkit-user-select: text; /* 将'none'更改为'text' */
我仍然好奇如何以最优雅的方式启用文本输入,同时仍然保留Phonegap试图实现的一些复制粘贴功能。谢谢!
问题出现的原因是在Phonegap中,禁用文本字段时,使用了样式-webkit-user-select: none;
,但是这个样式在iOS上不起作用。
解决方法是在css中添加以下规则:
*:not(input):not(textarea) { -webkit-touch-callout: none; -webkit-user-select: none; }
这种方法比目前被接受的答案更好,因为它不使用!important
。然而,在CSS3中,:not()
只能以简单选择器作为参数(在CSS4中,:not()
将能够以选择器列表作为参数)。所以在CSS3中,应该使用*:not(input):not(textarea) {
。
对于我来说,在iOS上(使用PhoneGap构建),*:not(input):not(textarea) {...}
和*:not(input,textarea) {...}
都没有解决任何问题,但SCCOTTT
对我起作用。
问题原因:-webkit-user-select属性可能会导致在具有contenteditable="true"的元素中出现问题。
解决方法:
在CSS中添加以下代码:
[contenteditable="true"], input, textarea { -webkit-user-select: auto !important; -khtml-user-select: auto !important; -moz-user-select: auto !important; -ms-user-select: auto !important; -o-user-select: auto !important; user-select: auto !important; }
通过添加上述代码,可以解决在iPad的Safari和Chrome浏览器中出现的问题。