我有一个行,我正在悬停时对其应用背景高亮显示.
.jobs .item:hover {
background: #e1e1e1;
border-top: 1px solid #d0d0d0;
}
然而,当边框向元素添加1pxadditional时,它会使元素"移动".我如何补偿上面的移动(不使用背景图像)?
我有一个行,我正在悬停时对其应用背景高亮显示.
.jobs .item:hover {
background: #e1e1e1;
border-top: 1px solid #d0d0d0;
}
然而,当边框向元素添加1pxadditional时,它会使元素"移动".我如何补偿上面的移动(不使用背景图像)?
您可以使边框透明.这样它就存在了,但它是看不见的,所以它不会推动任何东西:
.jobs .item {
background: #eee;
border: 1px solid transparent;
}
.jobs .item:hover {
background: #e1e1e1;
border: 1px solid #d0d0d0;
}
<div class="jobs">
<div class="item">Item</div>
</div>
对于已有边框的元素,并且您不希望它们移动,可以使用负边距:
.jobs .item {
background: #eee;
border: 1px solid #d0d0d0;
}
.jobs .item:hover {
background: #e1e1e1;
border: 3px solid #d0d0d0;
margin: -2px;
}
<div class="jobs">
<div class="item">Item</div>
</div>
向现有边框添加宽度的另一个可能的技巧是使用所需像素宽度的扩展属性添加一个box-shadow
.
.jobs .item {
background: #eee;
border: 1px solid #d0d0d0;
}
.jobs .item:hover {
background: #e1e1e1;
box-shadow: 0 0 0 2px #d0d0d0;
}
<div class="jobs">
<div class="item">Item</div>
</div>