【发布时间】:2013-01-27 05:07:33
【问题描述】:
我对一个框及其关联的 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)。
请看这张图片:
第一是焦点,第二是没有焦点错误,第三是错误焦点。请注意无焦点如何导致边框扩展到对象之外。
有什么好办法解决这个问题吗?
【问题讨论】:
-
你能解释一下“当你点击它时元素会跳跃吗?”
-
Mooseman,我在原帖中添加了一张图片。轮廓在有焦点的元素的内侧,但是失去焦点时,轮廓会跳到输入框的外侧。
-
@Aaron 为什么要在
.error班级中添加两次大纲?我想你的意思是用红色边框代替。 -
@AndresIlich 请在下面查看我的回复。我正在尝试使用轮廓,因为它应该不会改变元素的大小(即从 1px 边框开始,添加 2px 轮廓不会由于尺寸变化而导致位置偏移)。
-
@Aaron 为什么要添加两次大纲?一次参加
.error课程,然后再次参加.error:focus事件?主类的声明就足够了