Drop down menu left

I have a navigation bar with a drop down menu. It opens as follows:

image2

The rest of the elements open normally, but I want the last link to open as follows:

image

How can I do it?

Jsfiddle

body { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 20px 50px 150px; font-size: 13px; text-align: center; background: #E3CAA1; } ul { text-align: left; display: inline; margin: 0; padding: 15px 4px 17px 0; list-style: none; -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); } ul li { font: bold 12px/18px sans-serif; display: inline-block; margin-right: -4px; position: relative; padding: 15px 20px; background: #fff; cursor: pointer; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; -ms-transition: all 0.2s; -o-transition: all 0.2s; transition: all 0.2s; } ul li:hover { background: #555; color: #fff; } ul li ul { padding: 0; position: absolute; top: 48px; left: 0; width: 150px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; display: none; opacity: 0; visibility: hidden; -webkit-transiton: opacity 0.2s; -moz-transition: opacity 0.2s; -ms-transition: opacity 0.2s; -o-transition: opacity 0.2s; -transition: opacity 0.2s; } ul li ul li { background: #555; display: block; color: #fff; text-shadow: 0 -1px 0 #000; } ul li ul li:hover { background: #666; } ul li:hover ul { display: block; opacity: 1; visibility: visible; } 
 <ul><li>Home</li> <li>About</li> <li> Portfolio <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul> </li> <li>Blog</li> <li>Contact <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul></li> </ul> 
+8
html css
source share
3 answers

you need to change the UL position under the last LI

Demo

 ul > li:last-child ul{ right: 4px; left: auto; } 

 body { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 20px 50px 150px; font-size: 13px; text-align: center; background: #E3CAA1; } ul { text-align: left; display: inline; margin: 0; padding: 15px 4px 17px 0; list-style: none; -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); } ul li { font: bold 12px/18px sans-serif; display: inline-block; margin-right: -4px; position: relative; padding: 15px 20px; background: #fff; cursor: pointer; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; -ms-transition: all 0.2s; -o-transition: all 0.2s; transition: all 0.2s; } ul li:hover { background: #555; color: #fff; } ul li ul { padding: 0; position: absolute; top: 48px; left: 0; width: 150px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; display: none; opacity: 0; visibility: hidden; -webkit-transiton: opacity 0.2s; -moz-transition: opacity 0.2s; -ms-transition: opacity 0.2s; -o-transition: opacity 0.2s; -transition: opacity 0.2s; } ul>li:last-child ul { right: 4px; left: auto; } ul li ul li { background: #555; display: block; color: #fff; text-shadow: 0 -1px 0 #000; } ul li ul li:hover { background: #666; } ul li:hover ul { display: block; opacity: 1; visibility: visible; } 
 <ul> <li>Home</li> <li>About</li> <li> Portfolio <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul> </li> <li>Blog</li> <li>Contact <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul> </li> </ul> 
+7
source share

If you know that the last element of your navigation menu is ahead of time (which means that your menu is not dynamically built), you can simply specify the last <ul> own class.

Try the following:

 <ul><li>Home</li> <li>About</li> <li> Portfolio <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul> </li> <li>Blog</li> <li>Contact <ul class="listRight"> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul></li> </ul> 

Then add the "listRight" class to your css:

 .listRight { left: auto !important; right: 0 !important; } 

See this JSFiddle solution for a working example.

+1
source share

Just added a class called "lastChild" and added css.

 body { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 20px 50px 150px; font-size: 13px; text-align: center; background: #E3CAA1; } ul { text-align: left; display: inline; margin: 0; padding: 15px 4px 17px 0; list-style: none; -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); } ul li { font: bold 12px/18px sans-serif; display: inline-block; margin-right: -4px; position: relative; padding: 15px 20px; background: #fff; cursor: pointer; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; -ms-transition: all 0.2s; -o-transition: all 0.2s; transition: all 0.2s; } ul li:hover { background: #555; color: #fff; } ul li ul { padding: 0; position: absolute; top: 48px; left: 0; width: 150px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; display: none; opacity: 0; visibility: hidden; -webkit-transiton: opacity 0.2s; -moz-transition: opacity 0.2s; -ms-transition: opacity 0.2s; -o-transition: opacity 0.2s; -transition: opacity 0.2s; } ul li ul li { background: #555; display: block; color: #fff; text-shadow: 0 -1px 0 #000; } ul li ul li:hover { background: #666; } ul li:hover ul { display: block; opacity: 1; visibility: visible; } ul.lastChild{ right: 4px; left: auto; } 
 <ul><li>Home</li> <li>About</li> <li> Portfolio <ul> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul> </li> <li>Blog</li> <li>Contact <ul class="lastChild"> <li>Web Design</li> <li>Web Development</li> <li>Illustrations</li> </ul></li> </ul> 
+1
source share

All Articles