border-bottom删除整个div

时间:2016-09-24 16:53:56

标签: html css css3

好吧问题就是这样,当我将鼠标悬停在li上时:我的整个div会下降一点,然后在我完成悬停后再回来。我只是试图设置它所以它只显示边框底部而不会使整个div下降

<div id="header_left">
                <ul>
                    <li><a class="active" href="#home">Home</a></li>
                    <li><a href="#news">News</a></li>
                    <li><a href="#contact">Contact</a></li>
                    <li><a href="#about">About</a></li>
                </ul>
            </div>

并且css配置为

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

li {
    float: left;
}

li a {
    display: inline-block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
}

li a:hover {
    border-bottom: 2px solid green;
}

3 个答案:

答案 0 :(得分:1)

只需为元素的无悬停状态添加透明边框。

像这样:

li a {
 border-bottom: 2px solid transparent;
}

这将有助于消除悬停时的崎岖声。

答案 1 :(得分:0)

如果您尝试将单个菜单项悬停在底部以显示边框,则可能需要为每个菜单项设置ID并指定它在悬停时在css中执行的操作。因为它是正确的,你瞄准所有的东西,这就是为什么整个事情在悬停时下降。它很容易修复,只需要几行代码。

答案 2 :(得分:0)

  1. 始终添加&#34; box-sizing:border-box&#34;在框模型中包含边框和填充
  2. 设置默认透明边框并仅更改悬停时的颜色
  3. &#13;
    &#13;
    * {
      box-sizing: border-box;
    }
    
    ul {
        list-style-type: none;
        margin: 0;
        padding: 0;
        overflow: hidden;
        background-color: #333;
    }
    
    li {
        float: left;
    }
    
    li a {
        display: inline-block;
        color: white;
        text-align: center;
        padding: 14px 16px;
        text-decoration: none;
        border-bottom: 2px solid transparent;
    }
    
    li a:hover {
        border-color: green;
    }
    &#13;
    <div id="header_left">
        <ul>
            <li><a class="active" href="#home">Home</a></li>
            <li><a href="#news">News</a></li>
            <li><a href="#contact">Contact</a></li>
            <li><a href="#about">About</a></li>
        </ul>
    </div>
    &#13;
    &#13;
    &#13;