输入和输入的 CSS 轮廓不同 :focus

标签 css html

我在使用框及其关联的 CSS 轮廓样式时遇到问题。当盒子聚焦时,它应该有一个蓝色轮廓(工作)。在表单验证时,如果有问题,将添加 .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)。

请看这张图:

enter image description here

第一个是焦点,第二个是没有焦点有错误,第三个是焦点错误。请注意无焦点如何导致边框扩展到对象之外。

有什么好的方法可以解决这个问题吗?

最佳答案

尝试设置 outline-offset明确地。任何有效的(参见语法部分)值都可以,但是为了在元素内移动轮廓,可以应用负值,例如:

JSFiddle

input {
    background: #EFF5FF;
    outline: solid 2px #73A6FF;
    outline-offset: -2px;
}

input.error {
    outline: 2px solid red;
    background: rgb(255,240,240);
}

尽管您询问的是 Chrome,但请注意 IE 不支持 outline-offset 属性。

关于输入和输入的 CSS 轮廓不同 :focus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823303/

相关文章:

jquery - 使用 jquery 使字体强到正常不工作

html - 如何在 bootstrap 4 中的 flexbox 包装元素之间添加垂直间距?

javascript - HTML元素的循环布局

java - 用于 HTML 清理的库

html - 如何根据在 MasterPage 中选择的链接在同一网页上应用三个不同的 CSS 文件之一?

html - 带有图像的CSS导航栏

html - 悬停时更改其他 div

css - Zurb Foundation 5 媒体打印的分页符

html - 如何在第一个字符之前按字母顺序从上到下排列名称

html - 将样式应用于第一行的单元格