为什么设置的input:focus:invalid无效?

chrome中运行:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title></title> 
<style>
input:focus:invalid { /* 该样式不生效 */
    border:2px solid red;
}
</style>
</head>
<body>

<input type="email"/>

</body>
</html>
阅读 5.2k
3 个回答

可以看一下focus下修改是不生效的。

我记得之前有个理论,那就是 爱恨原则,说的就是设置伪类的时候要注重一定的顺序。不知道是不是focus改border落在规则里面

http://jsrun.net/gUvKp/edit

先捋捋样式
input = 输入框
:focus = 焦点元素
:invalid = 输入无效,或者说没有通过验证的元素

所以找一下验证规则的匹配吧,看看 required 和 pattern 写的对不对

其实是生效的,被outline覆盖了,所以看上去像是没有生效,设置

input {
    outline: none;
}

就好了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题