css - 在悬停时添加 CSS 边框而不移动元素

标签 css

<分区>

我有一行在悬停时应用背景突出显示。

.jobs .item:hover {
    background: #e1e1e1;
    border-top: 1px solid #d0d0d0;
}

然而,当边框向元素添加 1px additional 时,它会使其“移动”。我将如何补偿此处的上述移动(不使用背景图像)?

最佳答案

您可以使边框透明。它以这种方式存在,但不可见,所以它不会插入任何东西:

.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>

为现有边框添加宽度的另一个可能的技巧是添加一个具有所需像素宽度的 spread 属性的 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>

关于css - 在悬停时添加 CSS 边框而不移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612758/

相关文章:

javascript - 使用 Bootstrap3 为 block 中的 div 设置相同的高度

html - 简单的 CSS : Moving Object From Line Below To Above

javascript - 如何根据列的宽度换行文本

html - CSS背景图像以适应宽度,高度应按比例自动缩放

html - Bootstrap 4 - 3 张图像和一个内联表单

jquery - 页眉和页脚之间的粘性侧边栏

css - 跨浏览器的输入 css 渲染不一致

html - 所有导航菜单项中文本的左右间距相等

javascript - 如何匹配更多范围 slider 样式以按 id 存储在单个元素中

jquery,css在长时间执行函数之前不会改变