【问题标题】:Can I change the overlap order with negative margins in CSS?我可以在 CSS 中使用负边距更改重叠顺序吗?
【发布时间】:2013-10-18 04:37:15
【问题描述】:

我有一个列表,在li:hover 上,li 获得了一个底部边框(它已经有一个顶部边框)。不幸的是,这会导致两个相邻的边框,所以现在 2px 宽不好。所以我想我可以在悬停时点击margin-bottom:-1px; 就可以了,但不幸的是底部元素与当前元素重叠,所以我得到的边框颜色不正确。

我一厢情愿地尝试做z-index:1;,但这并没有做任何事情。对我来说,这应该是这样做的方式。加油 W3C!

我不能使用position

  • absolute 不行,因为我需要它流入。
  • relative 是不行的,因为 lis 有子 uls 需要相对于父 ul 定位。

有没有办法让前一个元素在添加负边距时与下一个元素重叠?

现在我可能不得不做一些 jQuery hacking,已经非常接近通过 CSS 完成了!

【问题讨论】:

  • 你能拨弄一下吗?会更容易理解
  • @Hiral 这 - jsfiddle.net/2nNzS - 是基本思想。当您将鼠标悬停在一个元素上时,顶部和底部边框都应该是全黑的。但不幸的是,您看到的是重叠。

标签: html css layer


【解决方案1】:

我不确定我是否理解您的问题,但以防万一,请尝试 adjacent sibling selector 。如果我正确理解了您的问题,那么以下内容应该有效:

li:hover + li{border-top:none !important;}

也许您不需要 !important 声明,但以防万一。此外,使用这种技术,您可以将它用于您提到的负边距(或任何您需要的)

【讨论】:

  • 是的,您一定已经理解它了,因为它有效!感谢您让我对相邻的选择器敞开心扉,哇潜力!我不需要使用!important,我在我的 CSS 中努力避免这种情况。
  • 很高兴能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多