navbar子菜单将内容向下推

时间:2016-06-22 16:19:46

标签: html css css3 position

我有一个由css制作的导航栏,但是当显示导航栏子菜单时,它会将下面的内容推下来

这是指向具有完整代码的codepen的链接 https://codepen.io/muhamedhashem/pen/GqNQaE

图像 enter image description here

HTML

<!DOCTYPE html>
<html>
<head>
    <title> </title>
    <link href="style.css" rel="stylesheet" />
</head>
<body>
    <div class="nav">
        <ul>
            <li><a href="#">One</a></li>


            <li>
                <a href="#">
                    Two
                    <i class="fa fa-arrow-circle-down"></i>
                </a>
                <ul>
                   <li><a href="#">Two #1</a></li>
                    <li><a href="#">Two #2</a></li>
                    <li><a href="#">Two #3</a></li>
                </ul>
            </li>


            <li>
                <a href="#">
                    Three
                    <i class="fa fa-arrow-circle-down"></i>
                </a>
                <ul>
                    <li><a href="#">Three #1</a></li>
                    <li><a href="#">Three #2</a></li>
                    <li><a href="#">Three #3</a></li>
                </ul>
            </li>


            <li>
                <a href="#">
                    Four
                    <i class="fa fa-arrow-circle-down"></i>
                </a>
                <ul>
                    <li><a href="#">#1</a></li>
                    <li><a href="#">#2</a></li>
                    <li><a href="#">#3</a></li>
                    <li><a href="#">#4</a></li>
                </ul>
            </li>


            <li>
                <a href="#">
                    Five
                    <i class="fa fa-arrow-circle-down"></i>
                </a>
                <ul>
                    <li><a href="#">Five #1</a></li>
                    <li><a href="#">Five #2</a></li>
                    <li><a href="#">Five #3</a></li>

                </ul>
            </li>
        </ul>
    </div>
    <h1> ghjgjh ftfytf fytftyt drdtr rdetrert retretr ee45e ertetr rdrttr retret tdret </h1>
     <h1> ghjgjh ftfytf fytftyt drdtr rdetrert retretr ee45e ertetr rdrttr retret tdret </h1>
    <h1> ghjgjh ftfytf fytftyt drdtr rdetrert retretr ee45e ertetr rdrttr retret tdret </h1>
    <h1> ghjgjh ftfytf fytftyt drdtr rdetrert retretr ee45e ertetr rdrttr retret tdret </h1>


</body>
</html>

CSS

.nav {
  width:900px;
  margin: 0 auto}

ul{
  margin: 0;
  padding: 0;
  list-style-type:none;
 text-align:center;}


ul li{
  float:left;
  width:180px;}






li ul{  display:none;}

li:hover ul{
  display:block;}




ul li a{
  display:block;
  padding: 5px 15px 5px 15px;
  background:#69F;
  color:#ffffff;

  border-top: 1px solid #FFF;
  margin-left:1px;}



ul li a:hover{
  background:#F80;
  color:#fff}


h1 {
clear:both;
}

2 个答案:

答案 0 :(得分:0)

这是因为导航栏本身的高度越来越高。如果您希望导航栏与内容重叠,请查看z-index和绝对显示。

li:hover ul{
  position:absolute;
  z-index: 10; //can be any number higher than the content's z-index.
  width: 180px; //This controls the size of the dropdowns container
  display:block;
}

答案 1 :(得分:0)

您的子菜单需要设置为绝对位置,您的父LI需要设置为相对位置。您应将可见性设置为隐藏,然后将其显示为:悬停。这种方法不会压低内容。

此外,您需要确保将宽度设置为ul li ul&lt; ---子菜单。