无法将子菜单与父项对齐

时间:2015-07-20 19:27:21

标签: html css

嗨,我试图创建一个导航栏,当你悬停李另一个列表从侧面出来显示其他选项。我的问题我可以与第一个李对齐,但我不知道如何与列表的其余部分一起做。目前,下拉列表保持在同一位置。

我确定我没有充分解释这里是我的代码。

<body class="menu">
<header>
    <nav class="menu-side">
    <ul>
              <li class="icon-home"><a href="Premiership.html"><span>Home</span></a></li>

            <li class="arrow"> <a  class="star" href="#">England</a>
                <ul>
                    <li><a class="ee" href="Premiership.html">Premiership</a>
                    </li>
                    <li><a href= "Unavailble.html">Championship</a>
                    </li>
                    <li><a href="Unavailble.html">League 1</a>
                    </li>
                    <li><a href="Unavailble.html">League 2</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a  href="#">France</a>
                <ul >
                    <li id="r"><a class="ee" href="Unavailble.html">Ligue 1</a> 
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Germany </a>

                <ul>
                    <li><a class="ee" href="Unavailble.html">Bundesliga</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Italy</a>

                <ul>
                    <li><a class="ee" href="Unavailble.html">Serie A</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Spain</a>
                <ul>
                    <li><a  class="ee" href="Unavailble.html">La Liga</a>
                    </li>
                </ul>
            </li>
        </ul>    
    </nav>

    </header>


</body>

https://jsfiddle.net/2zov6q2v/

4 个答案:

答案 0 :(得分:1)

&#13;
&#13;
.menu {
  position: relative;
  left: 0;
}
.menu-open {
  left: 0;
}
.menu-open .menu-side {
  left: 0;
}
.menu-side,
menu {
  -webkit-transition: left 0.2s ease;
  -moz-transition: left 0.2s ease;
  transition: left 0.2s ease;
}
.menu-side {
  background-color: #333;
  color: #fff;
  position: fixed;
  top: 0;
  left: 0;
  width: 210px;
  height: 100%;
  padding: 2px;
}
body {
  display: block;
  margin: 8px;
  background: #f0f0f0;
}
nav ul {
  background-color: #43a286;
  /* overflow: hidden; <----------------- here */
  color: white;
  padding: 0;
  text-align: center;
  margin: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: max-height 0.4s;
  -ms-transition: max-height 0.4s;
  -moz-transition: max-height 0.4s;
  -o-transition: max-height 0.4s;
  transition: max-height 0.4s;
}
nav ul li {
  display: block;
  padding: 20px;
  width: 80%;
  text-align: center;
  position: relative; /* <------------------ and here */
}
nav ul li:hover {
  background-color: #399077;
}
nav ul .arrow:hover {
  border-right: 10px solid white;
  border-right-width: thick;
  width: 79%;
}
nav ul ul {
  height: auto;
  display: none;
  position: absolute;
  background-color: #399077;
  left: 89.5%;
  top: 9%;
  z-index: 150;
}
nav ul ul li {
  display: block;
  width: 75%;
  text-align: center;
}
nav ul li:hover ul {
  display: block;
  width: 165px;
}
/*nav .ee:after {
  content: '';
  width: 0;
  height: 0;
  border-top: 8px solid black;
  border-right: 8px solid transparent;
  border-left: 8px solid transparent;
  position: absolute;
  z-index: 1;
  top: 0%;
  left: 50%;
  margin-left: -6px
} */

nav ul li a,
visited {
  color: white;
  font-family: 'CFJackStory-Regular', Helvetica, Arial, sans-serif;
  display: block;
  text-decoration: none;
}
nav ul ul li a:hover {
  color: white;
  font-size: 20px;
}
&#13;
<body class="menu">
  <header>
    <nav class="menu-side">
      <ul>
        <li class="icon-home"><a href="Premiership.html"><span>Home</span></a>
        </li>
        <li class="arrow"> <a class="star" href="#">England</a>

          <ul>
            <li><a class="ee" href="Premiership.html">Premiership</a>

            </li>
            <li><a href="Unavailble.html">Championship</a>

            </li>
            <li><a href="Unavailble.html">League 1</a>

            </li>
            <li><a href="Unavailble.html">League 2</a>

            </li>
          </ul>
        </li>
        <li class="arrow"> <a href="#">France</a>

          <ul>
            <li id="r"><a class="ee" href="Unavailble.html">Ligue 1</a> 
            </li>
          </ul>
        </li>
        <li class="arrow"> <a href="#">Germany </a>

          <ul>
            <li><a class="ee" href="Unavailble.html">Bundesliga</a>

            </li>
          </ul>
        </li>
        <li class="arrow"> <a href="#">Italy</a>

          <ul>
            <li><a class="ee" href="Unavailble.html">Serie A</a>

            </li>
          </ul>
        </li>
        <li class="arrow"> <a href="#">Spain</a>

          <ul>
            <li><a class="ee" href="Unavailble.html">La Liga</a>

            </li>
          </ul>
        </li>
      </ul>
    </nav>
  </header>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

更改列表的边距:

{{1}}

jsfiddle

答案 2 :(得分:1)

更改此风格

&#13;
&#13;
.menu{
	position: relative;
	left: 0;
	
}

.menu-open{
left: 0;


}

.menu-open .menu-side{
left: 0;

}

.menu-side, menu {
-webkit-transition: left 0.2s ease;
-moz-transition: left 0.2s ease;
transition: left 0.2s ease;

}

.menu-side{
	background-color: #333;
	color: #fff;
	position: fixed;
	top: 0;
	left: 0;
	width: 210px;
	height: 100%;
	padding: 2px;
}

body{
display: block;
	margin: 8px;
background: #f0f0f0;
}


nav ul{
    background-color: #43a286;
	color:white;
    padding: 0;
	text-align: center;
	margin: 0;
	width: 100%;
	height: 100%;
	-webkit-transition: max-height 0.4s;
	-ms-transition: max-height 0.4s;
	-moz-transition: max-height 0.4s;
	-o-transition: max-height 0.4s;
	transition: max-height 0.4s;
}

nav ul li{
    display: block;
    padding: 20px;
    width: 80%;
    text-align: center;
    position: relative;
}

nav ul li:hover {
background-color: #399077;
	
}

nav ul .arrow:hover{
border-right: 10px solid white;
border-right-width: thick;
width: 79%;
}

nav ul ul {
	height: auto;
	display: none;
	background-color: #399077;
	left: 212px;
    position: absolute;
    top: 0;
	z-index:150;
}

nav ul ul li{
  display: block;
    width:75%;
	text-align: center;
}


nav ul li:hover ul{

	  display: block;
      width: 165px;
}

/*nav .ee:after {
  content: '';
  width: 0;
  height: 0;
  border-top: 8px solid black;
  border-right: 8px solid transparent;
  border-left: 8px solid transparent;
  position: absolute;
  z-index: 1;
  top: 0%;
  left: 50%;
  margin-left: -6px
} */

nav ul li a, visited{
color:white;
font-family: 'CFJackStory-Regular', Helvetica, Arial, sans-serif;
display: block;
text-decoration: none;
}

nav ul ul li a:hover{
color:white;
font-size: 20px;
}
&#13;
<body class="menu">
<header>
	<nav class="menu-side">
	<ul>
			  <li class="icon-home"><a href="Premiership.html"><span>Home</span></a></li>
			
            <li class="arrow"> <a  class="star" href="#">England</a>
                <ul>
                    <li><a class="ee" href="Premiership.html">Premiership</a>
                    </li>
                    <li><a href= "Unavailble.html">Championship</a>
                    </li>
                    <li><a href="Unavailble.html">League 1</a>
                    </li>
                    <li><a href="Unavailble.html">League 2</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a  href="#">France</a>
                <ul >
                    <li id="r"><a class="ee" href="Unavailble.html">Ligue 1</a> 
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Germany </a>

                <ul>
                    <li><a class="ee" href="Unavailble.html">Bundesliga</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Italy</a>

                <ul>
                    <li><a class="ee" href="Unavailble.html">Serie A</a>
                    </li>
                </ul>
            </li>
            <li class="arrow"> <a href="#">Spain</a>
                <ul>
                    <li><a  class="ee" href="Unavailble.html">La Liga</a>
                    </li>
                </ul>
            </li>
        </ul>    
	</nav>
	
	</header>
	
	
</body>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

查看此更新的JSFiddle。将li设置为position: relative;,将ul ul设置为position: absolute。在那里,您可以将ul ul&#39; left设置为100%。这会将它们一直推到父级的右侧。在悬停时,您可以使用left: calc(100% + 5px)来计算li的白色右边框。不需要凌乱的利润。