【问题标题】:Override parent's border when hovering悬停时覆盖父级的边框
【发布时间】:2015-02-13 05:09:00
【问题描述】:

我在div .menu 中有一个ul 菜单。父 .menu 有一个顶部和底部 1px solid border。当悬停在 li 元素上时,会添加另一个边框,但父边框仍会出现在其上方。

当悬停在li 上时我不想显示.menu 顶部边框我不想使用 js,除非它是唯一的解决方案。

这是我的代码和我的临时修复。

HTML:

<div class="menu">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Fun</a></li>
    <li><a href="#">Work</a></li>
  </ul>
</div>

CSS:

  .menu{
    width: 100%;
    background-color: black;
    /* I want this border to... ↓ */
    border-top: 1px solid black;
    border-bottom: 1px solid black;
    box-sizing: border-box;
  }

  .menu ul{
    list-style: none;
    overflow: hidden;
    margin: 0px;
    height:35px;
  }

  .menu ul li{
    display: block;
    float:left;
    border-left: 1px solid gray;
    position: relative;
  }

  .menu ul a{
    color: #FFF;
    padding: 10px;
    display: block;
  }

  .menu ul a:hover{
    text-decoration: none;
    background-color: white;
    color: pink;
    /* ...not be displayed above this border when hovering */
    border-top: 3px solid pink;
  }

我只发现了这个低效的解决方案:

.menu ul:hover{
  position: relative;
  top: -1px;
}

Codepen 链接:http://codepen.io/eldev/pen/YPYLQz?editors=110

有什么想法吗?

编辑:

backgound-color 和border-color 不一样,我弄错了。 Codepen 链接已更新。

【问题讨论】:

  • 目前您无法基于子选择器定位父级。您将不得不为此使用 js,我建议您用它标记问题
  • 我只是想问一下,如果是和背景颜色一样,为什么还要设置边框呢?
  • 与丹尼尔相同的问题...
  • 为什么不干脆去掉顶部边框元素呢? border-top: 1px solid black;这个。
  • 这样的codepen.io/anon/pen/WbdyGg 可以工作

标签: html css


【解决方案1】:

同时有几个解决方案。

喜欢这样吗? (或者我理解不正确)http://codepen.io/anon/pen/XJVYMW

我为ul添加了margin-top: -1px

【讨论】:

  • @elhoucine 由于性能和兼容性问题,您应该使用position: relative; top: -1px; 而不是marginMargin 强制重新计算所有兄弟姐妹和孩子。
  • 你的意思是什么性能?这个边距只用于第一页渲染,而不是:hover,看起来它是一个非常简单的页面。无论如何,使用position:relativetop: -1px 对于ul 没有:hover 可以达到相同的结果
【解决方案2】:

必须对 CSS 进行一些修改;为了更容易理解,我已将所有更改添加到 HTML 部分。我没有修改 CSS 部分。

给你http://codepen.io/anon/pen/rapKxE
还有美化版http://codepen.io/anon/pen/MYrXQN

< Refer to CodePen >

注意检查 codepen 上的代码以获取最新更新。

【讨论】:

  • 这不是我要找的东西,但还是谢谢 ;)
  • @elhoucine 哈哈哈我误解了你的问题。无论如何,看看美化版本 - 也许你会喜欢它!
  • 其实我很喜欢(y)。
【解决方案3】:

有四种解决方案:

  1. margin-top: -1px;;
  2. Javascript ;
  3. position: relative; top: -1px;;
  4. transform: translateY(-1px)

【讨论】:

  • position: relative; top: -1pxtransform: translateY(-1px) :)
猜你喜欢
  • 2012-10-07
  • 1970-01-01
  • 2017-10-20
  • 2020-01-14
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多