我遇到了一个与文本框及其关联的CSS outline样式有关的问题。当文本框获得焦点时,它应该具有蓝色轮廓线(正常工作)。在表单验证时,如果出现问题,则会添加.error类来更改轮廓线和背景颜色为红色(不正常工作)。
在焦点上,我有以下样式:
input, select {
font-size: 10pt;
border: solid 1px #9598a0;
padding: 2px;
}
input:focus{
background: #EFF5FF;
color: black;
outline: solid 2px #73A6FF;
}
对于错误:
input.error:focus, .error {
outline: 2px solid red;
background: rgb(255,240,240);
}
问题在于,失去焦点的轮廓线在输入框外部,而获得焦点时的轮廓线在输入框内部,因此在点击它时元素会跳动(CHROME)。
请参见以下图片:
第一张是获得焦点状态,第二张是失去焦点并显示错误状态,第三张是显示错误并获得焦点状态。请注意,没有焦点时边框会扩展到对象外部。
有什么好的方法可以解决这个问题吗?
.error
类中添加了两次轮廓线?我想你本来是想要红色边框的。 - Andres Ilich