我想应用选定的边框,但似乎悬停有闪烁问题。试过的盒子大小仍然无法解决它。
li {
background: red;
}
li:hover {
border: 1px solid blue;
box-sizing: border-box;
}
我错过了什么吗?
答案 0 :(得分:1)
最初将border-color
设置为transparent
并将:hover
状态设置border-color
设置为您的选择
Stack Snippet
li {
background: red;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
}
li:hover {
border-color: blue;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
...或其他解决方案是使用box-shadow
inset
而不是边框
li {
background: red;
}
li:hover {
box-shadow: 0px 1px 0 0px blue inset, 0px -1px 0 0px blue inset;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
答案 1 :(得分:0)
只需在1px solid red
标记上添加边框1px solid transparent
或li
即可。你看到的闪烁是因为你传递到0px边框到1px边框
答案 2 :(得分:0)
将border: 1px solid transparent
添加到li
州。
li {
background: red;
border: 1px solid transparent;
}
它闪烁,因为边框会改变元素的布局。
答案 3 :(得分:0)
我假设通过'闪烁',当你将鼠标悬停在内部 <li>
上时,你正在谈论子弹点位置的微小变化。这是因为当您添加边框时,它会将子弹点向下移动。
您可以通过在 margin: -1px auto
状态中添加 :hover
来弥补这一点:
li {
background: red;
}
li:hover {
border: 1px solid blue;
margin: -1px auto;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
希望这有帮助!