【问题标题】:On Hover Menu List Items Disalign悬停时菜单列表项不对齐
【发布时间】:2016-10-10 04:56:34
【问题描述】:

我正在使用简单的 HTML 和 CSS 来使用无序列表创建水平菜单。

这是 HTML 和 CSS 代码:

.nav_bar{
    margin-left: 700px;
    margin-top: 40px;
    position: absolute;
}

.nav_bar ul{
    list-style-type: none;
}

.nav_bar ul li{
    display: inline-block;
    text-align: center;
    float: left;
}

.nav_bar ul li a{
    text-decoration: none;
    padding: 12px;
    margin: 8px;
    font-size: 20px;
    color: #fff;
}

.nav_bar ul li a::after{
    content: '';
    display: inline-block;
    width: 0px;
    height: 4px;
    background: #ff6600;
    transition: width .4s;
}

.nav_bar ul li a:hover::after{
    width: 100%;

}
<div class="nav_bar">
  <ul>
    <li><a href="#">Services</a></li>
    <li><a href="#">Solution</a></li>
    <li><a href="#">Support</a></li>
    <li><a href="#">Partners</a></li>
    <li><a href="#">Contacts</a></li>
  </ul>
</div>

我不知道问题出在哪里以及为什么会出现? 请有充分的理由帮助我..

【问题讨论】:

    标签: html css onhover


    【解决方案1】:

    我已经修复了你的代码并且得到了类似的东西。

    .nav_bar ul li a{
        text-decoration: none;
        padding: 12px;
        margin: 8px;
        font-size: 20px;
        color: orange;
        position: relative;
    }
    
    .nav_bar ul li a::after{
           content: '';
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        margin: auto;
        height: 4px;
        background: #ff6600;
        transition: width .4s;
        width: 0;
    }
    

    问题是您的after 元素显示为inline-block,因此它与您的achor 标签内联呈现。并且由于您的 achor 标签没有足够的宽度来显示 ::after 内联,因此您的 ::after 元素包裹在您的锚标签之后。 看到这个:https://jsfiddle.net/pm68Lzmv/

    【讨论】:

    • 我很高兴它帮助了你@SameerMoin
    【解决方案2】:

    试试这个:

    position:absolute; 添加到标签的:after 选择器

    .nav_bar 中删除margin-left 并添加right:0

    .nav_bar{        
        margin-top: 40px;
        position: absolute;
        right:0;
    }
    
    .nav_bar ul{
        list-style-type: none;
    }
    
    .nav_bar ul li{
        display: inline-block;
        text-align: center;
        float: left;
    }
    
    .nav_bar ul li a{
        text-decoration: none;
        padding: 12px;
        margin: 0;
        font-size: 20px;
        color: #aaa;
        display:block;
        position:relative;
    }
    
    .nav_bar ul li a::after{
        content: '';
        display: inline-block;
        width: 0px;
        height: 4px;
        background: #ff6600;
        transition: width .4s;
        position:absolute;
        left:50%;
        bottom:0;
        transform: translateX(-50%);    
    }
    
    .nav_bar ul li a:hover::after{
        width: 100%;
    
    }
    <div class="nav_bar">
      <ul>
        <li><a href="#">Services</a></li>
        <li><a href="#">Solution</a></li>
        <li><a href="#">Support</a></li>
        <li><a href="#">Partners</a></li>
        <li><a href="#">Contacts</a></li>
      </ul>
    </div>

    【讨论】:

    • 当我在 nav_bar 上添加这一行(位置:绝对;)时:在它变得更加不稳定之后
    • 我使用边距在右侧对齐 div,如果我删除此边距,它将浮动在左侧
    【解决方案3】:

    移除 .nav_bar{ margin-left:0px}

    添加.nav_bar ul li a position:relative;

    添加.nav_bar ul li a:后位置:absolute;

    .nav_bar ul{
        list-style-type: none;
    }
    
    .nav_bar ul li{
        display: inline-block;
        text-align: center;
    }
    
    .nav_bar ul li a{
        text-decoration: none;
        padding: 12px;
        margin: 0;
        font-size: 20px;
        color: #aaa;
        display:block;
        position:relative;
    }
    
    .nav_bar ul li a::after{
        content: '';
        display: inline-block;
        width: 0px;
        height: 4px;
        background: #ff6600;
        transition: width .4s;
        position:absolute;
        left:50%;
        bottom:0;
        transform: translateX(-50%);    
    }
    
    .nav_bar ul li a:hover::after{
        width: 100%;
    
    }
    <div class="nav_bar">
                <ul>
                    <li><a href="#">Services</a></li>
                    <li><a href="#">Solution</a></li>
                    <li><a href="#">Support</a></li>
                    <li><a href="#">Partners</a></li>
                    <li><a href="#">Contacts</a></li>
                </ul>
            </div>

    【讨论】:

    • 我使用边距在右侧对齐 div,如果我删除此边距,它将浮动在左侧
    • 您必须在右侧对齐菜单吗?除了上面的输出之外,左侧的徽标还可以。正确。
    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2015-11-22
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多