#html #css #css-float #html-lists
#HTML #css #css-float #html-списки
Вопрос:
Возможно ли создать «строку меню» из одного ul
, а затем переместить некоторые li
s влево, а некоторые вправо? Итак, мой код прямо сейчас
<body>
<header><nav><ul>
<li><a href="pg1.html">Menu1</a></li>
<li><a href="pg2.html">Menu2</a></li>
<li><a href="pg3.html">Menu3</a></li>
<li><a href="pg4.html">Menu4</a></li>
</ul></nav></header>
...
</body>
И css:
header > nav {
background-color: red;
height: 2em;
}
header > nav > ul {
list-style-type: none;
margin: 0;
padding: 0;
}
header > nav > ul > li {
float: left;
padding: 0 1em;
}
header > nav > ul > li > a {
display: block;
font-family: 'Tahoma';
color: white;
line-height: 2em;
}
a:hover {
color: yellow;
}
a {
text-decoration: none;
}
Все пункты меню, конечно, находятся слева, но можно ли переместить некоторые вправо, не изменяя HTML «значительно»?
Комментарии:
1. Зачем вам нужен a
ul
? Иметь just<nav> <a hreh="...> </nav>
— это прекрасно. Иa
s, по умолчанию, являются встроенными элементами. Не могли бы вы добавить макет или что-то, что иллюстрирует то, чего вы пытаетесь достичь?2. Вы можете применить класс к тем
<li>
s, которые хотите, чтобы они были перемещены правильно.
Ответ №1:
Вы можете добавить класс к элементам списка, которые вы хотите справа, а затем добавить правило CSS для float:right;
Пример:
Добавьте в свой CSS:
.right {
float:right;
}
Замените ваш HTML5 на это
<header><nav><ul>
<li><a href="pg1.html">Menu1</a></li>
<li><a href="pg2.html">Menu2</a></li>
<li class="right"><a href="pg3.html">Menu3</a></li>
<li class="right"><a href="pg4.html">Menu4</a></li>
</ul></nav></header>
Другим вариантом было бы создать 2 div (один, который перемещается влево, другой — вправо), а затем поместить по одному списку в каждый div.
Комментарии:
1. В зависимости от того, куда вы добавляете правило CSS, вам может потребоваться добавить к нему !important, чтобы оно переопределяло ваше другое объявление. Таким образом, средняя строка CSS должна быть: float:right !важно;
Ответ №2:
В вашей таблице стилей создайте другой класс или идентификатор для элементов списка, которые перемещаются вправо. Вот jsfiddle, который я сделал, чтобы продемонстрировать:
таблица стилей
header > nav {
background-color: red;
height: 2em;
}
header > nav > ul {
list-style-type: none;
margin: 0;
padding: 0;
}
header > nav > ul > li {
float: left;
padding: 0 1em;
}
li.other {
float:right;
}
header > nav > ul > li > a {
display: block;
font-family: 'Tahoma';
color: white;
line-height: 2em;
}
a:hover {
color: yellow;
}
a {
text-decoration: none;
}
HTML
<body>
<header><nav><ul>
<li><a href="pg1.html">Menu1</a></li>
<li class="other"><a href="pg2.html">Menu2</a></li>
<li><a href="pg3.html">Menu3</a></li>
<li class="other"><a href="pg4.html">Menu4</a></li>
</ul></nav></header>
...
</body>
Комментарии:
1. Хорошо, я изменил его на class .