【问题标题】:Add border without changing height of block添加边框而不改变块的高度
【发布时间】:2020-05-20 21:29:20
【问题描述】:

我有一些表格,基于divs。当表格行悬停时,我想在它的顶部和底部添加边框。但是尽管有box-sizing: border-box,我的块还是变大了 2 个像素。行不能有固定的高度。

这里是示例:https://jsfiddle.net/j4nwdju6/

我不能只添加不可见或透明的边框,因为它会在行之间产生空白。

【问题讨论】:

  • 无法复制。计算出的高度保持不变。

标签: html css


【解决方案1】:

您可以通过调整悬停状态的顶部和底部边距来抵消这一点:

JS fiddle

.row:hover {
    background: yellow;
    border-top: 1px solid black;
    border-bottom: 1px solid black;
    margin: -1px 0;
}

【讨论】:

  • 谢谢!正是我需要的。
【解决方案2】:

为行添加边框,使其在悬停时不会跳跃

.row {    
    display: flex;
    border:1px solid white;
}

更新小提琴:https://jsfiddle.net/j4nwdju6/1/

【讨论】:

  • 正如我在问题中所说,I can't just add invisible or transparent borders, because it will spawn whitespaces between rows..
  • 刚才说了同样的话@Efog!在我之前到达那里:)
【解决方案3】:

一个非常简单的技巧是将margin-top: -2px; 添加到:hover 样式中,这样位置就不会改变:JSFiddle

【讨论】:

  • 是的,但是现在行中的文本在悬停时会移动。我可以这样做:jsfiddle.net/j4nwdju6/4 但这将是非常肮脏的黑客攻击。
  • @dwreck 的回答是正确的:将其调整为 margin: -1 0; 将解决该问题 :)
【解决方案4】:

您可以像这样在.row 中添加透明边框

.row {    
display: flex;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
}

这不会影响悬停时 div 的高度。

更新

要删除黑白行添加 margin-top:-2px 。检查这个fiddle

【讨论】:

  • 正如我在问题中所说,I can't just add invisible or transparent borders, because it will spawn whitespaces between rows..
猜你喜欢
  • 2016-02-29
  • 2022-09-23
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
相关资源
最近更新 更多