2016-03-26 3 views
0

Я сделал меню, но я не могу понять, почему нет эквивалентного расстояния между элементами, если вы можете видеть на изображении какой-то элемент, все в порядке, а некоторые нет. Это меню: enter image description hereЭквивалентное расстояние между элементами меню css

И код, который я работал на:

HTML:

<body style="background:#F0F0F0"> 
    <div class="nav" > 
    <ul> 
     <li><element>&#9917 </element> </li> 
     <li><a href="#" id="navItem"> Home </a></li> 
     <li><a href="#" id="navItem"> Mail </a></li> 
     <li><a href="#" id="navItem"> Team </a></li> 
     <li><a href="#" id="navItem"> Matches </a></li> 
     <li><a href="#" id="navItem"> Club </a></li> 
     <li><a href="#" id="navItem"> Multimedia </a></li> 
     <li><a href="#" id="navItem"> Fans </a></li> 
     <li><a href="#" id="navItem"> Shop </a><li> 
     <li><a href="#" id="navItem"> More </a> 
      <ul> 
      <li><a href="#">Messenger</a></li> 
      <li><a href="#">Games</a></li> 
      <li><a href="#">Facebook</a></li>    
     </ul> 
     </li> 
    </ul> 
    </div> 
</body> 

CSS:

.nav{ 
     background-color:#660099; 
     color:white; 
     height:20px; 
     margin-top: 10px; 
     text-align: center; 
     } 
    .nav ul { 
     list-style: none; 
     text-align: center; 
     padding:0; 

    } 

    .nav a { 
     display: block; 
    } 
    .nav li li{ 
     width: 70px; 
     height: 30px; 
     display: inline-block; 
     font-size: 15px; 
     background-color: #FFFFFF; 
     padding-left: 0; 
     text-align: left; 
     margin-left: 10px; 
     } 

    .nav li { 
     width: 70px; 
     height: 50px; 
     display: inline-block; 
     float: left; 
     margin-left: 1px; 
     text-align: center; 

    } 
    .nav li ul { 
     position: absolute; 
     display: none; 
     width: inherit; 
    } 

    .nav li:hover ul { 
     display: block; 
    } 

Как решить эту проблему?

+0

вы должны работать с flexbox – DanyCode

+0

ID должны быть уникальными ... используйте класс вместо идентификатора для '' navItem'. –

+0

Следите за «HTML», вы используете «ID», а в «CSS» вы используете «КЛАСС» – DanyCode

ответ

0

Одна из причин, возможно, потому, что вы пропустили закрывающий </li> в <li><a href="#" id="navItem"> Shop </a><li>

.nav{ 
 
    background-color:#660099; 
 
    color:white; 
 
    height:20px; 
 
    margin-top: 10px; 
 
    text-align: center; 
 
} 
 
.nav ul { 
 
    list-style: none; 
 
    text-align: center; 
 
    padding:0; 
 

 
} 
 

 
.nav a { 
 
    display: block; 
 
} 
 
.nav li li{ 
 
    width: 70px; 
 
    height: 30px; 
 
    display: inline-block; 
 
    font-size: 15px; 
 
    background-color: #FFFFFF; 
 
    padding-left: 0; 
 
    text-align: left; 
 
    margin-left: 10px; 
 
} 
 

 
.nav li { 
 
    width: 70px; 
 
    height: 50px; 
 
    display: inline-block; 
 
    float: left; 
 
    margin-left: 1px; 
 
    text-align: center; 
 

 
} 
 
.nav li ul { 
 
    position: absolute; 
 
    display: none; 
 
    width: inherit; 
 
} 
 

 
.nav li:hover ul { 
 
    display: block; 
 
} 
 
a{ 
 
    color:white; 
 
}
\t <div class="nav" > 
 
\t <ul> 
 
\t <li><element>&#9917 </element> </li> 
 
\t <li><a href="#" id="navItem"> Home </a></li> 
 
\t <li><a href="#" id="navItem"> Mail </a></li> 
 
\t <li><a href="#" id="navItem"> Team </a></li> 
 
\t <li><a href="#" id="navItem"> Matches </a></li> 
 
\t <li><a href="#" id="navItem"> Club </a></li> 
 
\t <li><a href="#" id="navItem"> Multimedia </a></li> 
 
\t <li><a href="#" id="navItem"> Fans </a></li> 
 
\t <li><a href="#" id="navItem"> Shop </a></li> 
 
\t <li><a href="#" id="navItem"> More </a> 
 
\t <ul> 
 
\t  <li><a href="#">Messenger</a></li> 
 
\t  <li><a href="#">Games</a></li> 
 
\t  <li><a href="#">Facebook</a></li>   
 
\t </ul> 
 
\t </li> 
 
\t </ul> 
 
\t </div>

Я использую > в .nav ul > li, чтобы получить первый уровень li с в ул с родителем .nav , Если бы я использовал .nav ul li, он получил бы все lis в ul, включая детей, которые выглядят так: <li><a href="#">Messenger</a></li>. Вы просто хотели пространства на верхнем уровне меню, поэтому я использовал >. about the >

Лучше пример, который выглядит более даже пробелы:

.nav{ 
 
    background-color:#660099; 
 
    color:white; 
 
    height:20px; 
 
    margin-top: 10px; 
 
    text-align: center; 
 
} 
 
.nav ul { 
 
    list-style: none; 
 
    text-align: center; 
 
    padding:0; 
 

 
} 
 

 
.nav a { 
 
    /*display: block;*/ 
 
    text-align: center; 
 
    color:white; 
 
} 
 
.nav li li{ 
 
    width: 70px; 
 
    /*height: 30px;*/ 
 
    display: inline-block; 
 
    font-size: 15px; 
 
    background-color: #FFFFFF; 
 
    padding-left: 0; 
 
    /*text-align: left;*/ 
 
    /*margin-left: 10px;*/ 
 
} 
 

 
.nav ul > li { 
 
    display: inline-block; 
 
    float: left; 
 
    margin-left: 10px; 
 

 
} 
 
.nav li ul { 
 
    position: absolute; 
 
    display: none; 
 
    width: inherit; 
 
} 
 

 
.nav li:hover ul { 
 
    display: block; 
 
}
\t <div class="nav" > 
 
\t <ul> 
 
\t <li><element>&#9917 </element> </li> 
 
\t <li><a href="#" id="navItem"> Home </a></li> 
 
\t <li><a href="#" id="navItem"> Mail </a></li> 
 
\t <li><a href="#" id="navItem"> Team </a></li> 
 
\t <li><a href="#" id="navItem"> Matches </a></li> 
 
\t <li><a href="#" id="navItem"> Club </a></li> 
 
\t <li><a href="#" id="navItem"> Multimedia </a></li> 
 
\t <li><a href="#" id="navItem"> Fans </a></li> 
 
\t <li><a href="#" id="navItem"> Shop </a></li> 
 
\t <li><a href="#" id="navItem"> More </a> 
 
\t <ul> 
 
\t  <li><a href="#">Messenger</a></li> 
 
\t  <li><a href="#">Games</a></li> 
 
\t  <li><a href="#">Facebook</a></li>   
 
\t </ul> 
 
\t </li> 
 
\t </ul> 
 
\t </div>

Вы также можете играть вокруг с запасом, как:

.nav ul > li { 
     display: inline-block; 
     float: left; 
     margin-left: 20px; 
     margin-right: 20px; 

    } 
0

Удалить фиксированные width: 70px из .nav li. Чтобы достичь равного расстояния между элементами списка, вы можете использовать, например, margin-right: 16px;.

+0

Спасибо, но как вы можете узнать, как подать заявку, чтобы действительно работать? Я имею в виду, что я пробовал много вещей почти 2 часа и никаких результатов. Как я могу понять, как использовать для работы? –

0

следить в "HTML" вы используете "ID" и в "CSS" использовать "класс"

вы можете сделать это с Flexbox

.nav{ 
 
      background-color:#660099; 
 
      color:white; 
 
      height:20px; 
 
      margin-top: 10px; 
 
    
 
      } 
 
      
 
     .nav ul { 
 
      list-style: none; 
 
      text-align: center; 
 
      padding:0; 
 
      margin-top: 0px; 
 
      display:flex; 
 
     flex-direction:row; 
 
     justify-content: space-around; 
 

 
     } 
 

 
     .nav a { 
 
      display: block; 
 
     } 
 
     .nav li li{ 
 
      width: 70px; 
 
      height: 30px; 
 
      display: inline-block; 
 
      font-size: 15px; 
 
      background-color: #FFFFFF; 
 
      padding-left: 0; 
 
      text-align: left; 
 
      margin-left: 10px; 
 
      } 
 

 
     .nav li { 
 
      margin-left:10px; 
 
      display: inline-block; 
 
      float: left; 
 
      margin-left: 1px; 
 
      text-align: center; 
 

 
     } 
 
     .nav li ul { 
 
      position: absolute; 
 
      display: none; 
 
      width: inherit; 
 
     } 
 

 
     .nav li:hover ul { 
 
      display: block; 
 
     }
<body style="background:#F0F0F0"> 
 
    <div class="nav" > 
 
    <ul> 
 
    <li class="test"><element>&#9917 </element> </li> 
 
    
 
    <li><a href="#" class="navItem"> Home </a></li> 
 
    <li><a href="#" class="navItem"> Mail </a></li> 
 
    <li><a href="#" class="navItem"> Team </a></li> 
 
    <li><a href="#" class="navItem"> Matches </a></li> 
 
    <li><a href="#" class="navItem"> Club </a></li> 
 
    <li><a href="#" class="navItem"> Multimedia </a></li> 
 
    <li><a href="#" class="navItem"> Fans </a></li> 
 
    <li><a href="#" class="navItem"> Shop </a><li> 
 
    <li><a href="#" class="navItem"> More </a> 
 
     <ul> 
 
     <li><a href="#">Messenger</a></li> 
 
     <li><a href="#">Games</a></li> 
 
     <li><a href="#">Facebook</a></li>   
 
     </ul> 
 
     </li> 
 
     
 
    </ul> 
 
    </div>

0

Это не ясно если вы хотите, чтобы все элементы списка имели одинаковую ширину или пространство между ними одинаково ... это не одно и то же.

Пространство между

* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
    margin: 0px; 
 
    padding: 0; 
 
} 
 
.nav { 
 
    background-color: #660099; 
 
    color: white; 
 
    height: 20px; 
 
    margin-top: 50px; 
 
    text-align: center; 
 
} 
 
.nav ul { 
 
    list-style: none; 
 
    text-align: center; 
 
    padding: 0; 
 
    display: flex; 
 
    justify-content: space-between; 
 
} 
 
.nav a { 
 
    display: block; 
 
    color: white; 
 
    text-decoration: none; 
 
    background: darkorange; 
 
} 
 
.nav li { 
 
    height: 50px; 
 
    text-align: center; 
 
}
<body style="background:#F0F0F0"> 
 
    <div class="nav"> 
 
    <ul> 
 

 

 
     <li><a href="#" class="navItem"> Logo </a> 
 
     </li> 
 

 
     <li><a href="#" class="navItem"> Home </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Mail </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Team </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Matches </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Club </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Multimedia </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Fans </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Shop </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> More </a> 
 
     </li> 
 
    </ul> 
 
    </div>

все же размер:

* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
    margin: 0px; 
 
    padding: 0; 
 
} 
 
.nav { 
 
    background-color: #660099; 
 
    color: white; 
 
    margin-top: 50px; 
 
    text-align: center; 
 
} 
 
.nav ul { 
 
    list-style: none; 
 
    text-align: center; 
 
    padding: 0; 
 
    display: flex; 
 
    justify-content: space-between; 
 
} 
 
.nav a { 
 
    display: block; 
 
    color: white; 
 
    height: 20px; 
 
    text-decoration: none; 
 
    background: darkorange; 
 
} 
 
.nav li { 
 
    text-align: center; 
 
    flex: 1; 
 
    border: 1px solid red; 
 
}
<body style="background:#F0F0F0"> 
 
    <div class="nav"> 
 
    <ul> 
 

 

 
     <li><a href="#" class="navItem"> Logo </a> 
 
     </li> 
 

 
     <li><a href="#" class="navItem"> Home </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Mail </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Team </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Matches </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Club </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Multimedia </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Fans </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> Shop </a> 
 
     </li> 
 
     <li><a href="#" class="navItem"> More </a> 
 
     </li> 
 
    </ul> 
 
    </div>