简体   繁体   中英

How to display menu subitems as a block

I have a menu that displays sub-items in a vertical list. I would like to display them horizontally but can't see how to do that. Here is my jsfiddle . So instead of displaying as

First sub-item
Second sub-item

It should be

First sub-item  Second sub-item

The width for the list should be whatever is available so that the items will appear correctly in a phone as well as a desktop. here's the code I'm using. Would someone please explain how to do this?

    <style>
    ul {
        list-style-type: none;
        margin: 0;
        padding: 0;
    }

    ul li {
        display: inline-block;
        width: 10em;
        height: 2em;
        line-height: 2em;
        position: relative;
        border-bottom: 2px solid #ccc;
    }

    ul li:hover {
        background-color: #ffa;
    }

    ul li ul {
        display: none;
        position: absolute;
        top: 2em;
        left: 0;
    }

    ul li:hover ul {
        display: block;
    }

    ul li ul li {
        display: list-item;
        position: relative;
    }

    ul li ul li ul {
        display: none;
        position: absolute;
        top: 0;
        left: 10em;
    }

    ul li ul li ul li {
        display: none;
    }

    ul li ul li:hover ul {
        display: block;
    }

    ul li ul li:hover ul li {
        display: list-item;
    }
    </style>

    <ul>
        <li>First list item</li>
        <li>Second list item</li>
        <li>Third, with a dropdown
            <ul>
                <li>First sub-item</li>
                <li>Second sub-item</li>
                <li>Third, with a fly-out
                    <ul>
                        <li>Flyout one</li>
                        <li>Flyout two</li>
                        <li>Flyout three</li>
                    </ul>
                </li>
                <li>Fourth sub-item</li>
            </ul>
        </li>
        <li>Fourth list item</li>
    </ul>

To show them horizontally you just need to add display:flex on hover instead of display:block . Hope this is helpful to you.

 ul { list-style-type: none; margin: 0; padding: 0; } ul li { display: inline-block; width: 10em; height: 2em; line-height: 2em; position: relative; border-bottom: 2px solid #ccc; } ul li:hover { background-color: #ffa; } ul li ul { display: none; position: absolute; top: 2em; left: 0; } ul li:hover ul { display: flex; } ul li ul li { display: list-item; position: relative; } ul li ul li ul { display: none; position: absolute; top: 2em; left: 0em; } ul li ul li ul li { display: none; } ul li ul li:hover ul { display: flex; } ul li ul li:hover ul li { display: list-item; } 
 <ul> <li>Main Menu <ul> <li>First sub-item</li> <li>Second sub-item</li> <li>Third sub-item</li> <li>Fourth sub-item <ul> <li>first flyout</li> <li>second flyout</li> <li>third flyout</li> </ul> </li> </ul> </li> </ul> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM