0

I got small problem:

li {width: 50%; float: left;}
ul.sub li {width: 100%;}
<ul>
    <li>Test 1</li>
    <li>Test 2
         <ul class="sub">
            <li>Test2.1</li>
            <li>Test2.2</li>
            <li>Test2.3</li>
            <li>Test2.4</li>
            <li>Test2.5</li>
        </ul>
    </li>
    <li>Test 3</li>
    <li>Test 4</li>
    <li>Test 5</li>
    <li>Test 6</li>
 </ul>

How I can prevent those huge white empty space betwen Test 1 and Test 3 ? The best option would be that all main li elements would fit into that empty space.

Is that possible? Please HELP!

4 Answers4

0

I don't know if it's what you are looking for, but this could be a solution.

li {
    width: 50%; 
    float: left;
}
li:nth-child(2){
    float: right;
}
li:nth-child(2) .sub li {
    float: none;
}
<ul>
    <li>Test 1</li>
    <li>Test 2
         <ul class="sub">
            <li>Test2.1</li>
            <li>Test2.2</li>
            <li>Test2.3</li>
            <li>Test2.4</li>
            <li>Test2.5</li>
        </ul>
    </li>
    <li>Test 3</li>
    <li>Test 4</li>
    <li>Test 5</li>
    <li>Test 6</li>
 </ul>

Good Luck'

Alexis B.
  • 1,105
  • 8
  • 13
0

You can push all the odd li's to the left, and the even ones to the right, after pushing the second li to the right, the rest will be forced to stay on the left hand side due to insufficient space :

li:nth-child(odd) {width: 50%; float: left;}
li:nth-child(even) {width: 50%; float: right;}
ul.sub li {width: 100%;}
<ul>
    <li>Test 1</li>
    <li>Test 2
         <ul class="sub">
            <li>Test2.1</li>
            <li>Test2.2</li>
            <li>Test2.3</li>
            <li>Test2.4</li>
            <li>Test2.5</li>
        </ul>
    </li>
    <li>Test 3</li>
    <li>Test 4</li>
    <li>Test 5</li>
    <li>Test 6</li>
 </ul>
Luthando Ntsekwa
  • 4,192
  • 6
  • 23
  • 52
0

Just guessing..

ul.sub li {width: 90%; float:right;}
li {width: 50%; }
<ul>
    <li>Test 1</li>
    <li>Test 2
         <ul class="sub">
            <li>Test2.1</li>
            <li>Test2.2</li>
            <li>Test2.3</li>
            <li>Test2.4</li>
            <li>Test2.5</li>
        </ul>
    </li>
    <li>Test 3</li>
    <li>Test 4</li>
    <li>Test 5</li>
    <li>Test 6</li>
 </ul>
Kishor Sawant
  • 88
  • 1
  • 10
0

I would suggest to add class to <li> holding your sub-menu, to avoid hardcoding li nth number into CSS. You wouldn't need a class on your sub ul then. This would allow you to move html of submenu around without css depending on its position in markup:

HTML:

<ul>
    <li>Test 1</li>
    <li class="sub">Test 2
         <ul>
            <li>Test2.1</li>
            <li>Test2.2</li>
            <li>Test2.3</li>
            <li>Test2.4</li>
            <li>Test2.5</li>
        </ul>
    </li>
    <li>Test 3</li>
    <li>Test 4</li>
    <li>Test 5</li>
    <li>Test 6</li>
 </ul>   

CSS:

li {width: 50%; float: left;} 
li.sub {float: right;} 
.sub li {width: 100%;}
robjez
  • 3,740
  • 3
  • 32
  • 36