菜单栏不显示

让·卡莱特·阿尔梅纳尔

早上好,我的菜单栏有问题,当放置徽标会使菜单栏变大时,我有一个子菜单,该子菜单不显示选项。我附上了代码,以防任何人可以合作。

    主页关于联系菜单
  • 支付
  • 寻找
  • 二维码
.imgBarra {
    width: 30px;    
    height: 30px;
    position: relative;
    background: none;
    align-items: flex-start;
    padding: 0px;
    margin: 0px;
    margin-left: -20px;
    margin-top: 20px;
}

.Barra li a{

    text-decoration: none;
    color: rgb(255, 255, 255);
    padding: 20px;
    display: block;
    
}

.Barra li{
    display: inline-block;
    text-align: center;
    position: relative;
    
}

.Barra li a:hover{
    background-color: aquamarine;
    color: black; 
    
}

.submenu{
    position: absolute;
    background: #e8e8e8;
    width: 120%;
    visibility: hidden;
}

.submenu li a{
    display: block;
    padding: 15px;
    color: #fff;
    font-family: Arial;
    text-decoration: none;
}

.submenu li a:hover{
    display: block;
    transition: all .3s;
西蒙娜·马斯(Simone Mas)

如果您的徽标是.imgBarra,则无需添加媒体资源align-items: flex-start;

  • display: flex;尚未设置任何属性。
  • 如果要将其对齐到标题的左侧,则需要将该属性设置为container .barra

基本上,如果设置align-items: flex-start;为徽标容器,它将对齐徽标容器内的所有子项,而不是徽标本身。

为了正确控制页眉的高度和对齐方式,您需要注意填充物并考虑其中的所有子项。

假设您的HTML是这样的:

<div class="barra>
    <div class="imgBarra">Logo</div>
    <ul>
        <li>
            <a href="...">Home</a>
        </li>
        <li>
            <a href="...">About</a>
        </li>
        <li>
            <a href="...">Contact</a>
        </li>
    </ul>
</div>

要具有总共110px的高度[30px(徽标)+ 40px(顶部20px +底部标题底部20px)+ 40px(顶部20px +底部底部链接20px)],您的CSS应该如下所示:

.barra {
       position: relative;
       padding: 20px;
       display: flex;
       align-items: center; /* to align vertically in the center  all the children inside the header, so imgBarra and the li */
       justify-content: space-between; /* or any other property to align horizontally the content inside the header */
}

.imgBarra {
       width: 30px;
       height: 30px;
}

.barra ul li a {
      padding: 20px;
}

关于子菜单,让我们假设您的HTML看起来像这样,通过将鼠标悬停在“主页”上,用户应该会看到您的下拉菜单。

<div class="barra">
    <div class="imgBarra">Logo</div>
    <ul>
        <li class="hasDropdown">
          <a class="dropdownTrigger" href="#">Home</a>
            <div class="dropdown">
              <ul>
               <li>Submenu Item 1</li>
               <li>Submenu Item 2</li>
               <li>Submenu Item 3</li>
              </ul>
            </div>
          </li>
        <li>
          <a href="...">About</a>
        </li>
        <li>
          <a href="...">Contact</a>
        </li>
      </ul>
</div>

要触发并显示子菜单,您首先需要使用来隐藏下拉菜单,visibility:hidden;然后给出此CSS规则,该规则基本上说:“当悬停在“ Home”(由类标识dropdownTrigger)时,将下拉列表类更改为visiblity: visible;

您的CSS应该如下所示:

.hasDropdown {
    position: relative;
}

.dropdown {
    visibility: hidden; /* Dropdown hidden by default */
    position: absolute /* You will position it relatively to its parent hasDropdown */
    top: 20px;
    left: 0;
    display: flex;
    align-items: flex-start;
}

.dropdownTrigger:hover .dropdown {
    visibility: visible;
}

正如您在下拉列表容器中看到的那样,我已经添加了属性display: flex;align-items: flex-start;,因此.dropdown内的所有子代都将如左所述向左对齐。该属性align-itemsdisplay: flex;在设置后才能工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章