Адаптация раскрывающегося меню HTML / CSS к многоуровневому - PullRequest
4 голосов
/ 20 марта 2012

Я пытался превратить исходный выпадающий список в многоуровневый для сайта, над которым я работаю. Все мои попытки не увенчались успехом (по какой-то причине я могу сделать «margin-right» только для выравнивания элементов, и это вызывает некоторые проблемы. Я думаю, что это как-то связано с атрибутом position.

Вот мой HTML:

<ol id="nav">
            <li><a href="index.php">Home</a></li>
            <li class="dropdown_alignedLeft">
                <a href="">Products</a>
                <ul><li class="dropdown_alignedRight">
                    <a href="">iPoP</a>
                    <ul style="margin-right:-400px; top:0px;-webkit-border-top-right-radius: 5px;border-top-right-radius: 5px;-moz-border-radius-topright: 5px;"><li><a href="customers.php?category=ipop">iPoP - Network Solutions for Vessels</a></li></ul><li class="dropdown_alignedRight">
                    <a href="">Cameras</a>
                    <ul style="margin-right:-400px; top:0px;-webkit-border-top-right-radius: 5px;border-top-right-radius: 5px;-moz-border-radius-topright: 5px;"><li><a href="customers.php?category=icam">iCam 501 Ultra - Intrinsically Safe Digital Camera with Flash</a></li></ul><li class="dropdown_alignedRight">
                    <a href="">BNWAS</a>
                    <ul style="margin-right:-400px; top:0px;-webkit-border-top-right-radius: 5px;border-top-right-radius: 5px;-moz-border-radius-topright: 5px;"><li><a href="customers.php?category=bnwas">BNWAS - Bridge Navigation Watch Alarm System</a></li></ul><li class="dropdown_alignedRight">
                    <a href="">Lighting</a>
                    <ul style="margin-right:-400px; top:0px;-webkit-border-top-right-radius: 5px;border-top-right-radius: 5px;-moz-border-radius-topright: 5px;"><li><a href="customers.php?category=peli">Peli 2690 - Intrinsically Safe LED Head Lamp</a></li></ul><li class="dropdown_alignedRight">
                    <a href="">Communication</a>
                    <ul style="margin-right:-400px; top:0px;-webkit-border-top-right-radius: 5px;border-top-right-radius: 5px;-moz-border-radius-topright: 5px;"><li><a href="customers.php?category=handy">Ex-Handy 06 - Intrinsically Safe Cell Phone</a></li></ul>
                </ul>
                <li class="dropdown_alignedLeft">
                <a href="">Customers</a>
                <ul>
                    <li><a href="customers.php?category=maritime">Maritime</a></li>
                    <li><a href="customers.php?category=non">Non-Maritime</a></li>
                    <li class="dropdown_lastItem"><a href="customers.php?category=organizations">Regulatory Organizations</a></li>
                </ul>
            <li><a href="order.php">Product Enquiry</a></li>
            <li><a href="contact.php">Contact Us</a></li>
                            <li class="dropdown_alignedLeft">
                <a href="">Company</a>
                <ul>
                    <!-- <li><a href="">About Us</a></li> -->
                    <li><a href="newsandpr.php?category=News">News</a></li>
                    <li class="dropdown_lastItem"><a href="newsandpr.php?category=Press Release">Press Releases</a></li>
                </ul>
 </ol>

И мой CSS:

#nav {
float:right;
margin:15px 0 0;
}
#nav li {
float:left;
}
#nav li a {
display:block;
font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;
font-size:16px;
text-decoration:none;
color:#2B95C8;
padding:10px 20px 20px;
}
.dropdown_alignedLeft,.dropdown_alignedRight {
position:relative;
}
#nav .dropdown_alignedLeft>a,#nav .dropdown_alignedRight>a {
background:url(../images/dropdown_arrow_blue.png) no-repeat top right;
padding:10px 30px 20px 20px;
}
#nav .dropdown_alignedLeft:hover>a,#nav .dropdown_alignedRight:hover>a {
-moz-border-radius-topleft:5px;
-moz-border-radius-topright:5px;
-moz-border-radius-bottomright:0;
-moz-border-radius-bottomleft:0;
-webkit-border-top-left-radius:5px;
-webkit-border-top-right-radius:5px;
-webkit-border-bottom-right-radius:0;
-webkit-border-bottom-left-radius:0;
border-top-left-radius:5px;
border-top-right-radius:5px;
border-bottom-right-radius:0;
border-bottom-left-radius:0;
color:#FFF;
background:#2378A1 url(../images/dropdown_arrow_blue.png) no-repeat bottom right;
}
.dropdown_alignedLeft ul,.dropdown_alignedRight ul {
display:none;
}
#nav .dropdown_alignedLeft:hover>ul,#nav .dropdown_alignedRight:hover>ul {
display:block;
z-index:100;
position:absolute;
top:50px;
-moz-border-radius-topleft:0;
-moz-border-radius-topright:0;
-moz-border-radius-bottomright:5px;
-moz-border-radius-bottomleft:5px;
-webkit-border-top-left-radius:0;
-webkit-border-top-right-radius:0;
-webkit-border-bottom-right-radius:5px;
-webkit-border-bottom-left-radius:5px;
border-top-left-radius:0;
border-top-right-radius:0;
border-bottom-right-radius:5px;
border-bottom-left-radius:5px;
background:#2378A1;
padding:0 0 6px;
}
#nav .dropdown_alignedRight:hover>ul {
top:50px;
right:0;
text-align:right;
}
#nav li ul li {
float:none;
border-bottom:1px dashed #2B95C8;
margin:0 20px;
}
#nav li ul li.dropdown_innerTitle {
border:none;
font-family:"Helvetica Neue",Arial,sans-serif;
font-size:15px;
white-space:nowrap;
color:#C8DDE7;
margin:10px 20px 0;
padding:10px 0;
}
#nav li ul li.dropdown_lastItem {
border:none;
}
#nav li ul li a {
font-family:"Helvetica Neue",Arial,sans-serif;
font-size:13px;
color:#FFF;
white-space:nowrap;
padding:10px 0 9px;
}
#nav>li:hover>a,#nav li .current_page {
    color:#2378A1;
    background:url(../images/current_page_arrow_blue.png) no-repeat center bottom;
}
#nav li ul li a:hover {
    color: #C8DDE7;
}

Для живой версии меню, пожалуйста, перейдите сюда:

JSFiddle - Live Menu

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Вы не закрывали много своих тегов li, и ваше подменю просто отлетало от его контейнера. Очистили ваш код и внесли слишком много изменений, чтобы перечислить его здесь:

http://jsfiddle.net/MmHSd/4/

0 голосов
/ 21 марта 2012

http://purecssmenu.com/ Может помочь вам. Попробуйте скачать список и взглянуть на него. Удалите все имеющиеся у вас дополнительные теги и верните все обратно в базовый список, подобный следующему:

<ul>
  <li>Element 1</li>
  <li>Element 2</li>
<ul>
  <li>
    Element 2 Child 1
  </li>
  <li>
    Element 2 Child 2
  </li>
</ul>

и возвращение к чему-то более сложному может также помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...