在悬停时添加边框会导致闪烁

时间:2014-08-20 10:30:11

标签: javascript html css twitter-bootstrap

好的,所以我正在尝试创建一个构建在BootStrap行之上的测试“网格”。

每当用户将鼠标悬停在某个项目上时,就会添加一个边框。

但是,这会导致网格奇怪地“移动”。是因为填充物吗?我该怎么办才能解决这个问题?

以下是演示:http://83.212.101.132/angjs/ang2.html

5 个答案:

答案 0 :(得分:4)

因为盒子模型,你可以尝试使用box-sizing: border-box;,但我猜不出来。我建议你在上面使用透明边框。

#components .wrp {
padding: 10px;
border: 2px solid transparent;
border-radius: 25px;
}

答案 1 :(得分:1)

添加:

#components .wrp {
padding: 10px;
border: 2px solid transparent;/* this will fixe it!*/
}

会解决它!

或者如果您想使用box-shadow

#components .wrp {
padding: 10px;
box-shadow: 0 0 0 2px transparent;
border-radius: 20px;
}

悬停

#components .wrp:hover {
box-shadow: 0 0 0 2px #333;
}

答案 2 :(得分:1)

在这种情况下,我通常会在非悬停元素上添加透明边框。这意味着悬停时元素的大小不会增加,因为它们已经有边框。

#components .wrp {
    border: 2px solid transparent;
}

答案 3 :(得分:0)

是的,这是因为填充。

您的边框宽度为2px,如果您在悬停时减少填充2px,则会消除闪烁..

#components .wrp:hover {
    border: 2px solid #CCC;
    border-radius: 15px;
    padding: 8px;
}

答案 4 :(得分:0)

当悬停时,CSS正在添加一个2px边框 - 这意味着它必须找到总共4px(从上到下)和另外4px(左和右)的空间。闪烁是由于元素稍微移动以适应所需的额外像素空间。

有两种方法可以解决这个问题:

1)使用'outline'而不是'border'

2)在元素上设置相同但透明的边框,这样当您悬停时,只有边框的颜色在变化