【问题标题】:how to open vertical drop down menu items to left align如何打开垂直下拉菜单项以左对齐
【发布时间】:2019-07-10 14:39:52
【问题描述】:

我正在尝试将下拉垂直菜单项打开到左侧,现在它在右侧打开,但我希望它应该在左侧打开,

我怎么能做到这一点? ,我写了以下内容来完成这项工作

CSS:

#navContainer
{
    margin: 0;
    padding: 0;
    background: red;
    border: 1px solid #7398ba;
    text-align: center;
    width: 220px;
}

    #navContainer ul
    {
        margin: 0;
        padding: 0;
        list-style: none;
    }

        #navContainer ul li
        {
            position: relative;
        }

            #navContainer ul li span
            {
                display: block;
            }

            #navContainer ul li a
            {
                text-decoration: none;
                color: white;
                display: block;
                padding: 8px;
            }

            #navContainer ul li span:hover
            {
                /*background: pink;*/
            }

            #navContainer ul li a:hover
            {
                background: black;
            }

        #navContainer ul ul
        {
            position: absolute;
            display: none;
        }

            #navContainer ul ul li a
            {
                background: #bec8cb;
            }

        #navContainer ul li:hover ul
        {
            width: 80%;
            position: absolute;
            display: block;
            left: 218px;
            top: 0;
        }

HTML :-

<div id="navContainer">
        <ul>
            <li><span><a href="#">Home</a></span></li>
            <li>
                <span><a href="#">About </a></span>
                <ul>
                    <li><a href="#">Our business</a></li>
                    <li><a href="#">Our History </a></li>
                </ul>
            </li>
            <li>
                <span><a href="#">Services</a></span>
                <ul>
                    <li><a href="#">Web Design</a></li>
                    <li><a href="#">Web templates </a></li>
                    <li><a href="#">Tutorials </a></li>
                </ul>
            </li>
            <li><span><a href="#">Contact</a></span></li>
            <li><span><a href="#">News</a></span></li>
        </ul>
    </div>

当前结果:-

我想要的结果

【问题讨论】:

  • 让你的代码变成 jsfiddle

标签: jquery html css


【解决方案1】:

这次我和你有同样的问题,我通过用div 包装ul 元素来解决这个问题,并使用了两次绝对位置。这样我才能达到这个结果。

  • 第一次左对齐包装器left: 0
  • 第二次将下拉列表扩展right: 0

代码示例:

<div class="parent">
    <div>Trigger Dropdown</div>
    <div class="wrapper">
        <ul class="dropdown">
            <li>foo</li>
            <li>bar</li>
        </ul>
    </div>
</div>
.parent {
    position: relative;
    margin-left: 100px;
}

.dropdown {
    background: red;
    position: absolute;
    top: 0;
    right: 0;
}

.wrapper {
    position: absolute;
    top: 0;
    left: 0;
}

【讨论】:

    【解决方案2】:

    只需将您的绝对定位中的left 更改为right。在你的情况下:

    变化:

    #navContainer ul li:hover ul
        {
            width: 80%;
            position: absolute;
            display: block;
            left: 218px;
            top: 0;
        }
    

    收件人:

    #navContainer ul li:hover ul
        {
            width: 80%;
            position: absolute;
            display: block;
            right: 218px;
            top: 0;
        }
    

    【讨论】:

      【解决方案3】:

      或者你可以像这样将#navContainer ul li:hover ul的像素从正变为负

      left: 218px ==> left: -218px /无论你的下拉菜单的宽度是多少/

      【讨论】:

        【解决方案4】:

        left:218px 更改为 - 值并将margin-left 赋予主navigation ul

        #navContainer
        {
            margin: 0 0 0 218px;
            padding: 0;
            background: red;
            border: 1px solid #7398ba;
            text-align: center;
            width: 220px;
        }
             #navContainer ul li:hover ul
                {
                    width: 80%;
                    position: absolute;
                    display: block;
                    left: -178px;
                    top: 0;
                }
        

        DEMO

        【讨论】:

          【解决方案5】:

          您需要将navContainer 向右移动,例如:

          #navContainer
          {
              margin: 0;
              padding: 0;
              background: red;
              border: 1px solid #7398ba;
              text-align: center;
              width: 220px;
              float: right;
          }
          

          然后使用right 属性而不是ul 上的left 属性

          #navContainer ul li:hover ul
          {
              width: 80%;
              position: absolute;
              display: block;
              left: 218px;
              top: 0;
          }
          

          【讨论】:

            【解决方案6】:
            #navContainer
            {
                margin: 0;
                padding: 0;
                background: red;
                border: 1px solid #7398ba;
                text-align: center;
                width: 220px;
                position:relative;
                float:right;
            }
            
            #navContainer ul
            {
                margin: 0;
                padding: 0;
                list-style: none;
            
            }
            
            #navContainer ul li
            {
                position: relative;
            }
            
            #navContainer ul li span
            {
                display: block;
            }
            
            #navContainer ul li a
            {
                text-decoration: none;
                color: white;
                display: block;
                padding: 8px;
            }
            
            #navContainer ul li span:hover
            {
                /*background: pink;*/
            }
            
            #navContainer ul li a:hover
            {
                background: black;
            }
            
            #navContainer ul ul
            {
                position: relative;
                display: none;
            
            }
            
            #navContainer ul ul li a
            {
                background: #bec8cb;
            }
            
            #navContainer ul li:hover ul
            {
                width: 80%;
                position: absolute;
                display: block;
                left: 218px;
                top: 0;
                margin-left:-380px;
            }
            
            
            
            <div id="navContainer">
                    <ul>
                        <li><span><a href="#">Home</a></span></li>
                        <li>
                            <span><a href="#">About </a></span>
                            <ul>
                                <li><a href="#">Our business</a></li>
                                <li><a href="#">Our History </a></li>
                            </ul>
                        </li>
                        <li>
                            <span><a href="#">Services</a></span>
                            <ul>
                                <li><a href="#">Web Design</a></li>
                                <li><a href="#">Web templates </a></li>
                                <li><a href="#">Tutorials </a></li>
                            </ul>
                        </li>
                        <li><span><a href="#">Contact</a></span></li>
                        <li><span><a href="#">News</a></span></li>
                    </ul>
                </div>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-26
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多