Список вертикальный css: Вертикальное меню для сайта — разметка и примеры оформления

Содержание

Вертикальный список внутри горизонтального списка



Я пытаюсь создать базовую навигацию и хотел бы иметь горизонтальный список с вертикальным списком элементов:

Header 1     Header 2     Header 3
 -Sub 1       -Sub 1       -Sub 1
 -Sub 2       -Sub 2       -Sub 2
 -Sub 3       -Sub 3       -Sub 3

Я снимаю для этого markup или что-то подобное:

<ul>
    <li><strong>Header 1</strong>
    <ul>
        <li><a href="#" title="1">Abcdefghi</a></li>
        <li><a href="#" title="2">Jklmnopqr</a></li>
        <li><a href="#" title="3">stuvwzyz</a></li>
    </ul>
    </li>
    <li><strong>Header 2</strong>
    <ul>
        <li><a href="#" title="1">Abcdefghi</a></li>
        <li><a href="#" title="2">Jklmnopqr</a></li>
        <li><a href="#" title="3">stuvwzyz</a></li>
    </ul>
    </li>
    <li><strong>Header 3</strong>
    <ul>
        <li><a href="#" title="1">Abcdefghi</a></li>
        <li><a href="#" title="2">Jklmnopqr</a></li>
        <li><a href="#" title="3">stuvwzyz</a></li>
    </ul>
    </li>

</ul>

Я стараюсь избегать плавающих дивов для каждого раздела заголовка.

Я пытался использовать два класса css для uls, с внешним набором в display:inline и внутренним в display:block, но я не могу заставить его работать.

Как мне это сделать, или я должен плавать дивы?

html css
Поделиться Источник Mark     22 сентября 2010 в 21:30

2 ответа


  • Список Внутри Горизонтального Списка

    Я экспериментирую с дизайном. Кажется, я не могу получить свой CSS правильно. У меня есть горизонтальный список со списком в каждом из его элементов списка. Вложенный список, похоже, ведет себя неправильно. Что я здесь делаю не так? http://jsfiddle.net/89sqw / Вложенный список не имеет квадратного…

  • Лучший способ создать вертикальный список TextView — > EditTextVIew?

    Я пытаюсь создать вертикальный список TextView — > EditTextView. Мне это нужно, чтобы создать небольшую форму ввода. Я попытался использовать 2 вертикальных линейных макета, которые являются дочерними элементами горизонтального линейного макета. Затем я добавляю TextViews в первый контейнер и…



9

Вы можете плавать на первом уровне

li С (чтобы избежать ‘floating divs’) или использовать display: inline-block для первого уровня li С. Имея в виду, что floating будет работать для IE6+, в то время как inline-block ограничивается только теми элементами, которые обычно отображают inline .

Базовая демонстрация для первого (float the first-level li s) предложения:

 ul {
   width: 90%;
   margin: 0 auto;
 }
 ul > li {
   float: left;
   width: 32%;
 }
 ul > li > ul {
   display: block;
   width: 100%;
 }
 ul > li > ul > li {
   display: block;
   float: none;
 }
<ul>
  <li><strong>Header 1</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>
  <li><strong>Header 2</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>
  <li><strong>Header 3</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>

</ul>

Базовая демонстрация для второго (display: inline-block для первого уровня li с) предложения:

ul {
  width: 90%;
  margin: 0 auto;
}
ul li {
  display: inline-block;
  width: 32%;
}
ul li ul {
  width: 100%;
}
ul li ul li {
  display: block;
}
<ul>
  <li><strong>Header 1</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>
  <li><strong>Header 2</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>
  <li><strong>Header 3</strong>
    <ul>
      <li><a href="#" title="1">Abcdefghi</a>
      </li>
      <li><a href="#" title="2">Jklmnopqr</a>
      </li>
      <li><a href="#" title="3">stuvwzyz</a>
      </li>
    </ul>
  </li>

</ul>

Поделиться David says reinstate Monica     22 сентября 2010 в 21:42



0

попробуйте ниже код я потратил немного времени для тех кто нуждается в этом

<!DOCTYPE html>
<html>
<body>

<style>
   .
ul li { float: left; width:30%; } .ul>li ul{ display:block; margin-left:-30px; } .ul>li ul>li{ display:block; float:none; } .ul>li a{ color:white; } footer { padding: 20px; padding-bottom: 100px; background: #333; color:white; } </style> <footer> <div> <ul> <li> naber <ul> <li><a href="#">link bir</a></li> <li><a href="#">link bir</a></li> <li><a href="#">link bir</a></li> </ul> </li> <li> dostum <ul> <li>birrr</li> <li>iki</li> <li>uc</li> </ul> </li> <li> nasılsın <ul> <li>bir</li> <li>iki</li> <li>uc</li> </ul> </li> </ul> </div> </footer> </body> </html>

Поделиться Hamit YILDIRIM     21 января 2016 в 07:44


Похожие вопросы:


Как экран автоматически меняется с горизонтального на вертикальный или наоборот в Android

Хии Я хочу знать механизм, как экран автоматически меняется с горизонтального на вертикальный или наоборот в android, когда мы меняем положение телефона. Пример с точки зрения кодирования был бы…


вертикальный градиент

Горизонтальный градиент работает нормально. Есть ли какой-нибудь способ получить вертикальный цветовой градиент из горизонтального градиента? Я видел связанный с этим вопрос, где они делали это,…


Горизонтальный Список PyGTK

У меня есть программа презентации, и у меня есть вертикальный список со слайдами. Я хотел поставить горизонтальный список для переупорядочения и легкого перемещения между слайдами. Он будет…


Список Внутри Горизонтального Списка

Я экспериментирую с дизайном. Кажется, я не могу получить свой CSS правильно. У меня есть горизонтальный список со списком в каждом из его элементов списка. Вложенный список, похоже, ведет себя…


Лучший способ создать вертикальный список TextView — > EditTextVIew?

Я пытаюсь создать вертикальный список TextView — > EditTextView. Мне это нужно, чтобы создать небольшую форму ввода. Я попытался использовать 2 вертикальных линейных макета, которые являются…


Горизонтальный список в вертикальный список и наоборот-Sublime Text 2

Я не могу вспомнить, где я его видел или читал, но, по-видимому, есть ярлык для преобразования горизонтального списка слов, разделенных запятыми или даже без запятых, в вертикальный список,…


вертикальный scroll бар не виден внутри горизонтального scroll бара android

У меня есть вертикальный бар scroll внутри горизонтального. Вертикальная полоса scroll видна только тогда, когда я scroll горизонтально полностью вправо. Но я хочу, чтобы он всегда был виден. Как я…


Как реализовать вертикальный UIPageViewController внутри горизонтального UIPageViewController

Я хочу настроить свой UIPageViewController так, чтобы он работал, как на изображении, в настоящее время 1b может идти 2a и т. д. Что мне нужно сделать, чтобы зафиксировать направление, как на…


Улучшение прокрутки для горизонтального RecyclerView внутри ListView

У меня есть горизонтальный RecyclerView внутри элемента ListView .

Все вроде бы в порядке, но прокрутка горизонтального RecyclerView — это крэпшут-иногда вместо этого прокручивается ListView , хотя…


Изменение отзывчивого списка с горизонтального на вертикальный CSS

Я хочу изменить один список с горизонтального на вертикальный. Вот оригинальный список: И я хочу изменить список на : Вот ссылка: https:/ /…

HTML/CSS. Как создать вертикальное и горизонтальное меню

Эта инструкция продемонстрирует, как создать вертикальное и горизонтальное меню используя стили CSS. Перед началом убедитесь, что вы знакомы с HTML тэгами ненумерованного списка. Кроме того, посмотрите инструкцию как создать меню в HTML.

Для начала создадим HTML меню на основе ненумерованного списка:

<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Contacts</a></li>
</ul>

Теперь необходимо создать CSS файл и подключить его к странице:

  <link href="style. css" rel="stylesheet" type="text/css" />

Убедитесь, что код подключающий CSS находится в разделе <head> вашего документа.

Вы можете использовать и inline стили.

	<style type="text/css">
		...тут расположите ваши стили CSS...
	</style> 

В результате у вас должен получиться следующий код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>

<ul>
	<li><a href="#">Home</a></li>
	<li><a href="#">About</a></li>
	<li><a href="#">Services</a></li>
	<li><a href="#">Partners</a></li>
	<li><a href="#">Contacts</a></li>
</ul>

</body>
</html>

Несортированный список обладает собственными стилями и таким образом без любых дополнительных изменений мы получаем вертикальное меню.

Для создания горизонтального меню понадобятся дополнительные изменения в HTML и CSS.

В первую очередь добавьте класс в список. Замените <ul> на <ul>

Теперь давайте сделаем меню горизонтальным с помощью CSS файла. У несортированного списка есть заданные по умолчанию параметры margin и padding. Нужно их обнулить:

ul.horizontal{
margin:0;
padding:0;
}

Теперь сделаем список горизонтальным:

ul.horizontal li{
display:block;
float:left;
padding:0 10px;
}

Мы добавили значения padding по горизонтали для того, что бы элементы не слиплись. Теперь меню готово и осталось только добавить в него ссылки, фон и отредактировать цвет шрифта.

Стилизация списков — Изучение веб-разработки

Списки, по-большому счету, ведут себя также как любой другой текст, но существуют некоторые специфичные настройки CSS, о которых вы должны знать. В этой статье они все описываются.

Для начала, давайте взглянем на пример простого списка. В данной статье мы рассмотрим ненумерованный, нумерованный и описательный списки  — все они имеют аналогичные свойства стилизации, но некоторые имеют свои специальные свойства. Не стилизованный пример доступен на Github (проверьте также источник кода.)

HTML для нашего примера списка представлен ниже:

<h3>Shopping (unordered) list</h3>

<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>

<ul>
  <li>Hummus</li>
  <li>Pita</li>
  <li>Green salad</li>
  <li>Halloumi</li>
</ul>

<h3>Recipe (ordered) list</h3>

<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>

<ol>
  <li>Toast pita, leave to cool, then slice down the edge.</li>
  <li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides. </li>
  <li>Wash and chop the salad.</li>
  <li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>

<h3>Ingredient description list</h3>

<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>

<dl>
  <dt>Hummus</dt>
  <dd>A thick dip/sauce generally made from chick peas blended with tahini, lemon juice, salt, garlic, and other ingredients.</dd>
  <dt>Pita</dt>
  <dd>A soft, slightly leavened flatbread.</dd>
  <dt>Halloumi</dt>
  <dd>A semi-hard, unripened, brined cheese with a higher-than-usual melting point, usually made from goat/sheep milk.</dd>
  <dt>Green salad</dt>
  <dd>That green healthy stuff that many of us just use to garnish kebabs.</dd>
</dl>

Если вы перейдёте к живому примеру прямо сейчас и изучите элемент списка используя инструменты разработчика браузера, то вы заметите несколько стилей установленных по умолчанию:

  • Элементы <ul> и <ol> имеют верхний и нижний margin по 16px (1em) и padding-left 40px (2. 5em.)
  • Объекты списка (элементы <li>) не имеют заданных значений по умолчанию для интервалов.
  • Элемент <dl> имеет верхний и нижний margin по 16px (1em), но padding не задан.
  • Элементы <dd> имеют margin-left 40px (2.5em.)
  • Элементы <p> которые мы включили для ссылок (сноски) имеют верхний и нижний margin по 16px (1em), точно так же, как и различные типы списков.

При оформлении списков, вам необходимо настроить их стили так, чтоб они сохраняли то же вертикальное расстояние, что и окружающие их элементы (такие как параграфы и изображения; иногда называемые вертикальным ритмом) и то же расстояние по горизонтали как и между собой (посмотреть законченный стилизированный пример на Github, а также найти исходный код.)

CSS, используемый для оформления текста и интервалов, выглядит следующим образом:



html {
  font-family: Helvetica, Arial, sans-serif;
  font-size: 10px;
}

h3 {
  font-size: 2rem;
}

ul,ol,dl,p {
  font-size: 1. 5rem;
}

li, p {
  line-height: 1.5;
}




dd, dt {
  line-height: 1.5;
}

dt {
  font-weight: bold;
}

dd {
  margin-bottom: 1.5rem;
}
  • Первое правило устанавливает шрифт сайта и основной размер шрифта 10px. Они наследуются всеми на этой странице.
  • Правила 2 и 3 задают относительные размеры шрифтов заголовков, различных типов списков (их наследуют дочерние элементы списков) и параграфов. Это значит, что каждый параграф и список будут иметь одинаковый размер шрифта, а также верхний и нижний интервалы, помогая сохранить согласованность вертикального ритма.
  • Правило 4 задаёт одинаковую высоту line-height в параграфах и пунктах списка — так, что параграфы и каждый отдельный пункт списка будут иметь те же интервалы между строками. Это также поможет сохранить согласованность вертикального ритма.
  • Правила 5 и 6 применяются к списку описаний — мы задаём одинаковую высоту line-height между терминами и описаниями списке описаний как мы это делали с параграфами и пунктами списка. И снова, согласованность хорошая! Мы также делаем описание терминов жирным шрифтом, чтобы они визуально выделялись легче.  

Теперь, рассмотрев общие методы интервалов для списков, давайте изучим некоторые специфичные спискам свойства. Существует три свойства, с которых вам надо начать знакомство, которые могут быть установлены для элементов <ul> или <ol>:

  • list-style-type (en-US): задаёт тип маркеров для использования в списке, например, квадратные или круглые маркеры для неупорядоченного списка, или цифры, буквы или римские цифры для упорядоченного списка.
  • list-style-position (en-US): управляет будет ли маркер появляется внутри пунктов списка или вне их перед началом каждого элемента.
  • list-style-image: позволяет вам использовать пользовательские изображения в качестве маркеров, а не просто квадрат или круг.

Стили маркеров

Как указано выше, свойство list-style-type (en-US) позволяет вам устанавливать какой тип маркера использовать в качестве точек маркера. В нашем примере мы установили использование заглавных римских цифр в упорядоченном списке:

ol {
  list-style-type: upper-roman;
}

Это даёт нам следующий вид:

Вы можете найти гораздо больше опций, заглянув на справочную страницу list-style-type (en-US).

Позиция маркера

Свойство list-style-position (en-US) устанавливает будет ли появляться маркер внутри пунктов списка или снаружи перед началом каждого пункта. Значение по умолчанию — outside, которое заставляет маркеры находится снаружи пунктов списка, как видно выше.

Если вы установите значение на inside, то маркеры будут находиться внутри строк:

ol {
  list-style-type: upper-roman;
  list-style-position: inside;
}

Использование пользовательского изображения как маркер

Свойство list-style-image позволяет вам использовать пользовательское изображение в качестве вашего маркера. Синтаксис довольно прост:

ul {
  list-style-image: url(star.svg);
}

Однако это свойство немного ограничено с точки зрения управления позициями, размерами (и т.д.) маркеров. Вам лучше использовать семейство свойств background, о которых вы узнаете намного больше в модуле Styling boxes. А пока вот вам образец для дегустации!

В нашем законченном примере мы оформили неупорядоченный список следующим образом (поверх того, что вы уже видели выше):

ul {
  padding-left: 2rem;
  list-style-type: none;
}

ul li {
  padding-left: 2rem;
  background-image: url(star.svg);
  background-position: 0 0;
  background-size: 1.6rem 1.6rem;
  background-repeat: no-repeat;
}

Мы сделали следующее:

  • Установили padding-left элемента <ul> с 40px по умолчанию на 20px, затем установили то же самое количество в пунктах списка. Это для того, чтобы все пункты списка продолжали выравниваться с порядком пунктов списка и описаний списка описаний, но пункты списка имеют некоторый padding для фоновых изображений чтобы сидеть внутри. Если бы мы не сделали этого, то фоновые изображения накладывались бы с текстом пунктов списка, что выглядело бы неряшливо.
  • Установили list-style-type (en-US) на none, для того чтобы маркеры не появлялись по умолчанию. Мы собираемся использовать свойства background для управления маркерами.
  • Вставили маркер в каждый пункт неупорядоченного списка. Соответствующие свойства, следующие:
    • background-image: Указывает путь к файлу изображения, который вы хотите использовать в качестве маркера.
    • background-position: Определяет где в фоне выбранного элемента появится изображение — в данном случае мы говорим 0 0, что значит что маркер будет появляться в самом верху слева каждого пункта списка.
    • background-size: Задаёт размер фонового изображения. В идеале мы хотим, чтоб маркеры были того же размера что и пункты списка (или самую малость меньше или крупнее). Мы используем размер 1. 6rem (16px), что очень хорошо сочетается с отступом (padding) 20px, который мы позволили разместить внутри маркера — 16px плюс 4px интервала между маркером и текстом пункта списка работают хорошо.
    • background-repeat: По умолчанию, фоновые изображения повторяются пока не заполнят доступное фоновое пространство. Мы хотим всего лишь одну копию вставленного изображения в каждом случае, поэтому мы установили значение no-repeat.

Это даёт нам следующий результат:

короткая запись list-style

Эти три свойства упомянутые выше могут все быть заданы, используя лишь одну короткую запись свойства, list-style (en-US). Например, следующий CSS:

ul {
  list-style-type: square;
  list-style-image: url(example.png);
  list-style-position: inside;
}

Может быть заменён этим:

ul {
  list-style: square url(example.png) inside;
}

Значения могут быть перечислены в любом порядке, и вы можете использовать одно, два и все три (значения по умолчанию, использованные для свойств, которые не включены — disc, none, и outside). Если указаны и type и image, тип используется в качестве запасного варианта, если изображение по какой-либо причине не может быть загружено.

Иногда вам может понадобиться вести счёт в упорядоченном списке по-другому — например начинать с цифры отличной от 1, или считать в обратном порядке, или вести счёт с шагом больше 1. HTML и CSS имеют несколько инструментов которые помогут с этим.

start

Атрибут start позволит вам начать счёт списка с цифры отличной от 1. Например:

<ol start="4">
  <li>Toast pita, leave to cool, then slice down the edge.</li>
  <li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
  <li>Wash and chop the salad.</li>
  <li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>

что даст вам такой результат:

reversed

Атрибут reversed начнёт отсчёт по убыванию вместо возрастания. Например:

<ol start="4" reversed>
  <li>Toast pita, leave to cool, then slice down the edge.</li>
  <li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
  <li>Wash and chop the salad.</li>
  <li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>

что даст вам такой результат:

Обратите внимание: Если пунктов в списке в обратном списке больше, чем значение атрибута start, счёт продолжится до нуля и далее отрицательные значения.

value

Атрибут value позволит вам установить специфичные цифровые значения к пунктам списка. Например:

<ol>
  <li value="2">Toast pita, leave to cool, then slice down the edge.</li>
  <li value="4">Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
  <li value="6">Wash and chop the salad. </li>
  <li value="8">Fill pita with salad, hummus, and fried halloumi.</li>
</ol>

что даст вам такой результат:

Обратите внимание: Даже если вы используете нечисловой list-style-type (en-US), вам всё равно надо использовать эквивалентное цифровое значение в атрибуте value.

В этой сессии активного изучения, мы хотим, чтобы вы взяли всё что вы выучили выше и попробовали стилизовать вложенный список. Мы предоставили вам HTML и хотим, чтобы вы:

  1. Задали неупорядоченному списку квадратные маркеры.
  2. Задали пунктам неупорядоченного и упорядоченного списка 1,5 межстрочный интервал их размера шрифта.
  3. Задали упорядоченному списку маркеры в виде строчных букв.
  4. Не стесняйтесь играться с примерами списков столько сколько вам нравится, экспериментируя с типами маркеров, интервалами или со всем что вы найдёте.

Если вы допустите ошибку, вы всегда можете сделать сброс используя кнопку Reset. Если вы застрянете, нажмите кнопку Show solution чтобы посмотреть возможный ответ.

Счётчики CSS предоставляют расширенные инструменты для настройки счета и оформления списков, но они довольно сложные. Мы рекомендуем изучить это, если вы захотите размяться. Смотрите:

В плане стилизации списки сравнительно легко освоить, как только вы освоите несколько связанных базовых принципов и специфичные свойства. В следующей статье мы перейдём к методам стилизации ссылок.

Как сделать горизонтальное или вертикальное выпадающее меню для сайта на основе CSS и Html в онлайн сервисе

Комментарии и отзывы (63)

Инка

Просто шикарно, спасибо! Действительно, простой способ, особенно приятно, что это легко сделать для WP

Androi

Можно использовать Ваш код впадающего горизонтального или вертикального у себя на сайте?

flickr gallery

Wow, nice tutorial, thanks google translate 😉

Ян

Полезная статья, попадает в интересные ссылки. Но можно было сделать проще: выводить список категорий с помощью функции wp_list_categories и при добавлении/удалении рубрик не придется руками править выпадающую менюшку. Наверное напишу у себя на блоге, как это сделать.

Dims

Огромное спасибо за обзор. Очень полезно.

Веретено

Я так понял, что менять название страниц в админке менять не получится? Т.е. этот вариант без динамики? Для Joomla не имеет смысла этот способ создания выпадающих менюшек использовать? А встроить этот инструмент в сам WordPress не получится? Плагин прикрутить…

Андрей

А в IE эти выпадающие менюшки будут работать без дополнительного небольшого Java Script? Не проверяли?

Иван

Для динамической структуры сайта такое выпадающее меню пригодно? Или там жестко задаются значения?

Алексей

Спасибо за статью. Попробую…

Антоншка

Отметьте, что кнопка «Download» появляется только после регистрации на онлайн сервисе Pure CSS Menu.

Alex

Дмитрий здравствуйте.

А скажите навороченность и множества выпадающих меню

на странице как то влияют на ее скорость загрузки?

СПС заранее…

Анна

А мне не прислали файл с Html, а только лишь папку с картинками 🙁

ЧТО ДЕЛАТЬ?

Анна

Код Html взяла в исходном коде страницы, на которой было изображена моя менюшка (онлайн сервис PureCSSMenu мне его прислал).

Я все вставила как Вы написали. Получилось.

Но потом решила все подвинуть вправо, чтобы по центру было. И тогда у меня все выпадающие меню второго уровня вообще очень сильно вправо сместились и вниз.

так что я до них мышкой не могу достать. Когда начинаю двигать в их сторону мышкой, то они пропадают.

Что можно сделать?

mamay_p

Всё получилось, но вместо русских названий пунктов меню отображаются вопросы. Два дня уже мучаюсь. Ничего не выходит. Сайт на Джумла. Код вставлял в файл шаблона, т.к. из админки через модуль он не встаёт.

Дмитрий

mamay_p: перед сохранение измененного файла шаблона попробуйте преобразовать текст в UTF-8 без Bom. В Notepadd это можно сделать в разделе «Кодировки».

mamay_p

Дмитрий: Спасибо. Всё получилось. Только с кодировкой просто в UTF-8. Ещё раз спасибо огромное.

mamay_p

Дмитрий: теперь другая проблема))))) в неактивном состоянии выпадающее меню торчит сбоку слева посредине страницы, при наведении на материнское меню, выпадающее перемещается на своё законное место.

Андрей

Спасибо! Вот бы еще созданное меню научиться таскать по экрану, т.е. в нужное место вставлять!!! ПОМОГИТЕ! В файле «cm-style.css» меняю «relative» на «absolute» с указанием «Top» и «Left» позиции и, не получается!

Andrey

Еще бы научиться изменять положение меню на дисплее. Где в css position вставлять. Подскажите пожалуста!!! Help!!!

valya

Добрый день, прошу помочь у меня не вышло все вставить куда надо.

первую часть просто поставила в конец ксс кода шаблона. а вот со второй частью проблемы.

если создавать новый модуль с щтмл кодом то ему нужно дать заголовок. какой? и после этого просто появляется модуль с таким именем а на сайте ничего не меняется, и еще вопрос нужно ли мне выключать то меню которое уже есть на сайте(гориз.)

Евгений

Доброго времени суток!

1.зарегистрировался http://purecssmenu.com/

2.Создал меню на сайте http://purecssmenu.com/

3.скачал архив, распаковал его.

4.скопировал код и…а в какую часть кода (в моей таблице стилей) вставлять скопированный код?

У меня то размещение менюшек скакать начинает, то вообще ничего не происходит :(((

Подскажите пожалуста.

Заранее благодарен.

Евгений

как найти нужное место вставки кода в файле style.css и куда вставлять html код???

Намик

у меня на опере меню сдвинулось на верх, а в FF и IE все пошло нормально, как поступить с оперой? Спасибо

Евгений

Намик: как найти нужное место вставки кода в файле style.css и куда вставлять html код???

Кирилл

Создал менюшку — скачал zip файл — распаковал.

Затем проделал все операции которые указаны для Joomla внизу статьи — указал правильное место модуля в шаблоне.

Но вместо выпадающего меню получил в шапке сайта весь код написанный на html (который я вставлял)

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

Tim

У меня такая же проблема как у Кирилл. Код вместо меню:(

moon

у меня никакое меню не отображается, только последняя строчка — CSS Drop Down Menu by PureCSSMenu.com. Что делать не знаю, замучилась уже с этими подкатегориями.В шаблоне, который установила на сайт, они не прописаны, сама сделать не могу((

Люба

Не могу поставить, отображается коряво постоянно, целый день сижу над ним, может кто-то помочь?

сергей

а с категориями такое получится?

Любовь

Спасибо за постоянные подробные консультации. Это для нас «чайников» просто спасение. Я сделала все, что здесь описано. Но на сайте у меня меню вообще не высвечивается, а при наведении мышки на него вылетают выпадающие подменю. Но на них написаны вместо букв различные буквы и значки в беспорядке. Сайт в юкозе. Помогите разобраться, почему?

Наталья

Добрый день! Помогите пожалуйста. Я сделала выпадающее меню с помощью плагина Drop-down Menu, очень удобная вещь, но есть маленькая заминка. Шаблон сайта на вордпрессе выглядит следующим образом: название «Главная» находится по середине окна, а те странички для которых я создавала менюшку после установки плагина съехали на вторую строчку под название «Главная», да еще и прилепились с левой стороны окна сайта. Как только этот плагин убираешь, созданные странички возвращаются на свое место в строку где название «Главная». Для наглядности приведу пример:

(это так, как получается с плагином):

Главная

Коротко о сайте Это Интересно!

(а это так, как мне бы хотелось сделать):

Главная Коротко о сайте Это Интересно!

Я так поняла, что мне нужно покапаться в цсс самого плагина, но что только я уже не делала не получается сдвинуть это меню.

Добрые люди, может вы подскажете, какой код мне нужно поменять? Заранее спасибо!

Dezu

небольшая проблемка с purecssmenu… на главной странице менюшка отображается не полностью и при наведении не раскрывается. если перейти на любую другую страницу сайта, то меню полностью функционирует, но происходит смещение на строку вверх. подскажите как можно это исправить?

Юля

Огромное спасибо!!!!!!!!

выручили!

Серж

Андрей! Подскажи пожалуйста, как бы сделать все наоборот? Мне нужно как раз запретить показ в менюшке страниц второго уровня т.е. подстраниц. Я хочу сделать страницу новости на своем блоге и там размещать подстраницы с новостями, их будет много и выплывающее меню только мешает, как бы это запретить! Если нужно посмотреть как это выглядит вот сайт: http://1efimrealty.ru

Спасибо заранее!

Админ

Менюшка классная! Посмотрите еще один урок (ссылка ниже), очень прикольное меню!

Тут урок как сделать классное Анимированное меню с выскальзывающим текстом и иконкой — http://ileson.ru/lesson.php?rub=6&id=50

pri4ina.ru

Исправляй начало статьи.

…нужно в первую очередь там зарегистрироваться, а затем уже определяться с шаблоном выпадающего меню.

Пол часа делал менюшку, а потом оказалось, что там ещё и регистрироваться надо…

У меня просто нет хороших слов, предупреждать же надо, что необходима регистрация.

Димка

Посмотрите пожалуйста, Semant.ucoz.ru можно ли в отдельном блоке поменять дизйн шрифт, размер подскажите виджет может какой для блоков

Даниил

Способ конечно хороший, но столкнулся с другой проблемой: все подпункты отображаются вертикально одним столбцом, а мне нужно по несколько подпунктов в один ряд. Можно ли что-то сделать?

Виктор Ивановский

Читать код выравненный по центру ужасно (

Бабай

Подскажите почему сьезжают вниз сайдбар,…или виджеты

Роман

в IE8 меню отображается некорректно. В остальных браузерах все отлично. Подскажите как с этим бороться.

Дима

Ужасный урок!! Так запутанно, я уже три часа вмыкаю…

Екатерина

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

nikko

Описал прекрасный модуль Выпадающее меню joomla http://e-kzn.ru/rasshireniya/vipadaiuschee-meniu-joomla.html горизонтальное и вертикальное

Константин

Вот здесь я подробно расписал как создать выпадающее горизонтальное меню, которое создается через панель управления wordpress, используется технология java скриптов, но все расписано подробно, так что поймет любой новичок http://mnogoblog.ru/urok-26-sozdaem-vypadayushhee-gorizontalnoe-menyu-wordpress-podrobno

T’Anik

Я имею лишь первоначальные сведения о html и css, и то умудрилась только по статье сделать выпадающее меню. Предварительно перерыла тучу сайтов с инструкциями, как это сделать. Ничего не поняла, и, соответственно, ничего не получилось. А здесь ТАК ПОНЯТНО написано, что у меня вышло с первого раза! Честь и хвала автору!!

Теперь буду разбираться, как на других страницах оставить это меню, но без дополнительных наворотов главной страницы.

Тимирлан

Спасибо большое.У меня все получилось,но как сделать кнопки немного больше?

Заранее спасибо.

Юлия

Здравствуйте!

Спасибо за урок. Все получилось. Хотелось бы только, чтобы меню располагалось по центру, сейчас оно смещено влево. Подскажите пожалуйста, что нужно добавить в код, чтобы отцентровать меню.

Константин

Для создания вертикального меню с древовидной структурой рубрик, при этом рубрики и подрубрики будут раскрываться (то есть это сможет заменить вам также плагин «Хлебные крошки»)есть отличный wordpress плагин — Collapsing Categories, о нем можете прочитать в моей статье: http://mnogoblog.ru/vertikalnoe-menyu-s-raskryvayushhimisya-rubrikami-plagin-collapsing-categories

Игорь

А на CMS Joomla 2.5 будет работать?

Denis

Спасибо за статью!

В общем все стало, стили подключил. Но есть пару проблем, менюшка ушла под блок, и в ней нет картинки (стрелочки). помогите пожалуйста

посмотреть можно тут: http://wotplayer.pro/

Константин

Есть один вопрос новичка. У меня на хостинге нет файла style.css. Куда в таком случае вставлять css-код? спасибо, если кто подскажет

Милана

У меня получился обычный список, а не раскрывающийся, и без фона и рамок, просто один текст…Как исправить — не знаю…

Set

здравствуйте, подскажите как исправить — у меня на сайте http://skachaj.net перестало выпадать меню?

Мария

Внизу в правом углу большой кнопки Download не было, после процесса регистрации появилась, но пришло совсем не то. Жалко, а так надеялась и почти поверила в успех 🙁

Виктор

Спасибо за статью. Всё сделал, всё работает, но есть одно но.

По умолчанию меню выпадает вправо, как можно изменить, чтоб например правые меню, выпадали влево. Где это прописывать и как?

Елена

Спасибо! Ваша помощь просто неоценима, если что не понятно всегда к вашим материалам обращаюсь.

Александр

Подскажите, пожалуйста, на ktonanovenkogo.ru верхнее меню поисковик видит или нет?

Ссылок в коде страницы на эти пункты не заметил нигде на сайте… так как они все-таки индексируются? за счет покупных ссылок?

Александр

Добавил «Оповещать о новых комментариях по почте»

Candycat

Огромное спасибо за столь полезную и подробную инструкцию)))

MrVigner

Очень большое спасибо за статью! Долго я промучился чтобы сделать выпадающее вертикальное меню в горизонтальном и так и не получилось то что хотел. А тут воспользовался этим сервисом и именно то что надо! Немного только стиль подкоректировал под дизайн сайта и все 🙂

Максат из Чимкента

спасибо, огромное

Вячеслав

Дмитрий, подскажи пожалуйста

Как сделать открывающее меню при нажатие на кнопку.

К примеру, будет пункт меню — Выбрать другую услугу.

При нажатие, чтобы появлялось окошко с рубриками(страницами). Например, как на других сайтах — Выбрать город.

То есть, стандартное выпадающее меню на wp не подходит.

Как разместить элементы списка горизонтально

. Но как известно элементы списка по умолчанию выстраиваются вертикально друг под другом, а что если необходимо сделать горизонтальное меню? С использованием CSS это не является большой проблемой.Для начала создадим обычный маркированный список, содержащий пункты нашего меню:
       
  • Главная
  •    

  • Новости
  •    

  • Контакты
  •    

  • О сайте

Для того чтобы идентифицировать список и задать для него нужные css стили, я добавил к нему атрибут id с идентификатором «menu».

По умолчанию без каких-либо правил CSS он будет выглядеть следующим образом:

  • Главная
  • Новости
  • Контакты
  • О сайте

Как видно элементы списка выстроились вертикально друг под другом и если нам нужно вертикальное меню, то если стилизовать нужным образом ссылки (добавить фоновый цвет, рамки, отступы, изменить шрифт) можно получить привлекательную навигационную панель. 

Если же требуется получить горизонтальное меню, то просто необходимо расположить элементы списка по горизонтали. Для этого к селектору LI следует добавить стилевое свойство display со значением inline или inline-block. Я буду использовать правило display:inline-block. Итак, для того, чтобы элементы списка выстроились по горизонтали просто добавляем код CSS:

Теперь элементы списка будут расположены по горизонтали:

Как видим пункты меню выстроились в один горизонтальный ряд. Но пока на меню похоже не очень. Теперь, чтобы получить полноценную навигационную панель, оформим меню с помощью css стилей. Для начала добавим фон для панели, растянем ссылки на весь пункт li, уберем подчеркивание ссылок, настроим отступы и др.:

В итоге получится такое привлекательное меню:

Вообще внешний вид меню далее зависит только от вашей фантазии и знания свойств css. Далее для примера приведу несколько вариантов оформления меню.

Горизонтальное меню по центру

Выравнять меню по центру можно так:

Результат:

Либо так:

Результат:

Горизонтальное меню с пунктами одинаковой ширины

Чтобы сделать все пункты меню одинакового размера указываем для них нужный размер. Только главное чтобы в сумме размеры пунктов не превышали размер всей панели. Можно сделать так:

Результат:

Или так:

Результат:

Если добавить немного трансформации:

то получим меню со скошенными углами:

Способы размещения блоков горизонтально

Часто на практике приходится решать задачу группирования и выравнивания контента средствами CSS. Сегодня мы рассмотрим основные способы размещения элементов в горизонтальный ряд.

Материал данной статьи призван помочь начинающим веб-дизайнерам в освоении приемов верстки web-страниц.

Из чего выбрать или методы

Существует несколько способов расположения структурных элементов в ряд в горизонтальной плоскости. Наиболее полезными, с точки зрения практического применения, являются:

  • метод «Float»
  • метод «Inline-block»
  • метод «Table-cell»

Каждый из них имеет свои преимущества, области применения и недостатки. Рассмотрим их по порядку.

«Для рывка» или немного теории

Все структурные элементы HTML можно условно разделить на:

Инлайновые (встроенные) – типа img, span и им подобные. У нас нет возможности менять их фон и задавать им произвольные линейные размеры.

Блочные – занимающие всю ширину родительского блока, всегда начинаются с новой строки – p, h, div.

Наглядный пример встроенных и блочных структур приведен ниже:

Метод «Float»

Как уже известно (см. выше), блочный элемент размещается с новой строки вне зависимости от заданной ему ширины (width). По этому, уменьшая горизонтальный размер div-а, в рядок блочки не построить.

Наиболее популярный (особенно среди начинающих верстальщиков), метод решения это использование свойства float.

CSS свойство float обрело большую популярность и практическую ценность после перехода от табличного способа верстки к блочному.

Float: left (right) трансформирует блочный элемент в плавающий, выравнивает по левому (правому) краю родительского блока и устанавливает обтекание справа (слева) текстом и другими элементами.

Для примера, создадим четыре блока, которые нужно разместить в ряд:

DOCTYPE html>
Строим горизонтальный ряд из дивов

И внешнюю таблицу стилей с следующим содержимым:

div { float: left; /*Задаем обтекание*/ line-height: 120px;/*Высота строки + верт. центрирования текста*/ font-size: 40px; background: dodgerblue; color: white; margin-top: 60px; width: 320px; /*Фиксируем ширину блока*/ margin-right: 10px; text-align: center; /*Центрируем текст по горизонтали*/ }

В результате получаем четыре блока, расположенные в горизонтальный ряд и выровненные по левому краю родительского блока:

Важно

Иногда на практике бывает необходимо выровнять блоки по правому краю родительского элемента. Изменим обтекание блоков в предыдущем примере:

Обратите внимание на надписи, расположенные в блоках. На первый взгляд может показаться, что пример отработал криво. Но на самом деле, браузер обработал код правильно: прочитал блоки сверху вниз, и сделал то, что мы от него просили — выровнял по правому краю. Учтите этот момент при использовании свойства float: right.

Для того, чтобы прервать обтекание элементов с какого-то конкретного места, используйте строчку:

В рассмотренном выше примере расстояния между блоками мы задавали при помощи отступа margin-right. Но что делать, если у вас при верстке страницы возникла задача: разместить блоки в ряд, центрировать их, да и еще чтобы отступы были только между ними, но никак не снаружи?

Алгоритм действий следующий.

HTML:

Строим горизонтальный ряд из дивов

CSS:

.wrap { width: 1310px;/*фиксируем ширину обертки*/ margin: 0 auto;/*центрируем ее*/ background: darkgray; height: 120px;/*Задаем высоту обертки*/ }
 
.bblock { float: left; /*Задаем обтекание*/ line-height: 120px;/*Высота строки + верт. центрирования текста*/ font-size: 40px; background: dodgerblue; color: white; width: 320px; /*Фиксируем ширину блока*/ margin-right: 10px; text-align: center; /*Центрируем текст по горизонтали*/
}
.wrap :last-child { margin-right: 0px;/*Убираем поле последнего div-а*/ }

В результате получаем такую картину:

Ну что же, всех практических ситуаций не рассмотришь, по этому перейдем к общим особенностям.

Важно!!!

Как строчные так и блочные элементы имеют свои преимущества и недостатки в контексте каждой конкретной решаемой задачи. А что если объединить их преимущества?

Встречайте, гвоздь программы – свойство display: inline-block.

display: inline-block генерирует блочно-строчный элемент, который по сути является строчным, но сохраняет блочные свойства – позволяет изменять линейные размеры, задавать поля, отступы и т.д.

Блочно-строчный элемент имеет следующие свойства:

Рассмотрим пример создания простого навигационного меню, содержащего картинку и ссылку.

Ссылка меню 1 длиннее обычного Ссылка меню 2 Ссылка меню 3 Ссылка меню 4

.nav { display: inline-block; /*Задаем блочно-строчное отображение*/ width: 180px; /*задаем ширину блока*/ background: dodgerblue; }
  .string { text-align: center; /*Равняем текст по-горизонтали*/ }

Как видим, получилось кривовато… Но расстраиваться мы не намерены, по-этому применяем к нашим дивам CSS свойство vertical-align (подробнее см. ниже):

Теперь наша навигационная панель выровнялась по верхней линии:

Конечно, приведенный пример является примитивным, но я уверен, что на его основе вы сможете создать настоящий шедевр!!!

Табличный подход долгое время был стандартом верстки, что в первую очередь объяснялось простотой и интуитивной понятностью разметки. Скорее всего, именно это и послужило причиной появления табличного форматирования в CSS.

Свойства display: table (table-cell, inline-table), позволяют выполнять табличное форматирование элементов без применения HTML таблиц.

Для горизонтального размещения блоков нам понадобится родительский элемент, имеющий свойство display: table, и дочерние элементы (ячейки), имеющие свойство display: table-cell:

Строим табличный ряд из дивов .bblock { display: table-cell; font-size: 32px; width: 200px; height: 200px; background: gold; text-align: center; vertical-align: middle;
}
 
.wrap { display: table; border-spacing: 20px 20px; background-color: darkgray;
}

.

Горизонтальное меню представляет собой список разделов сайта, поэтому логичнее разметить внутри элемента

, а затем применить CSS-стили к его элементам. Такое расположение меню является наиболее распространенным в силу очевидных преимуществ в его позиционировании на веб-странице.Перейти на страницу с примерами

Как сделать горизонтальное меню: разметка и примеры оформления

HTML-разметка и базовые стили для горизонтального меню

По умолчанию все элементы списка

  • располагаются вертикально, занимая по ширине всю ширину элемента контейнера

    , который в свою очередь занимает всю ширину его блока-контейнера.

    HTML разметка для горизонтальной навигации

    • Пункт меню
    • Пункт меню
    • Пункт меню

    Горизонтальное меню, находящееся внутри тега

    , можно дополнительно помещать внутрь элемента … и/или . Благодаря этому html-разметке придается семантический смысл, а также появляется дополнительная возможность для форматирования блока меню.

    Существует несколько способов разместить их горизонтально. Для начала нужно сбросить стили браузера по умолчанию для элементов навигации:

    ul { list-style: none; /*убираем маркеры списка*/ margin: 0; /*убираем верхнее и нижнее поле, равное 1em*/ padding-left: 0; /*убираем левый отступ, равный 40px*/ } a {text-decoration: none; /*убираем подчеркивание текста ссылок*/}

    See the Pen GJxayB by Elena Nazarova (@nazarelen) on CodePen.

    Способ 1. li {display: inline;}

    Делаем элементы списка строчными. В результате они располагаются по горизонтали, с правой стороны между ними добавляется промежуток, равный 0.4em (вычисляется относительно размера шрифта). Чтобы убрать его, добавляем для li отрицательное правое поле li {margin-right: -4px;}. Дальше стилизуем ссылки по своему желанию.

    Способ 2. li {float: left;}

    Делаем элементы списка плавающими. В результате они располагаются по горизонтали. Высота блока-контейнера ul становится равной нулю. Чтобы решить эту проблему, добавляем для ul {overflow: hidden;}, расширяя его и позволяя ему таким образом содержать плавающие элементы. Для ссылок добавляем a {display: block;} и стилизуем их по своему желанию.

    Способ 3. li {display: inline-block;}

    Делаем элементы списка строчно-блочными. Они располагаются по горизонтали, с правой стороны образуется промежуток, как и в первом случае. Для ссылок добавляем a {display: block;} и стилизуем их по своему желанию.

    Способ 4. ul {display: flex;}

    Делаем список ul гибким контейнером с помощью модели CSS3 flexbox. В результате элементы списка располагаются горизонтально. Добавляем для ссылок a {display: block;} и стилизуем их по своему желанию.

    1. Адаптивное меню с эффектом подчёркивания при наведении на ссылку

    Выравнивание списков

    Автоматически центрировать список вне зависимости от длины строк достаточно просто

    /* — Стиль CSS —*/
    div.center_list{ text-align: center;
    }
    div.center_list > ul { display: inline-block; text-align: left; max-width: 70% /* не обязательно */
    }

    • пункт списка 1
    • пункт списка 2 большей длины
    • пункт 3

    Минус данного способа в необходимости дополнительной разметки — список должен быть заключен в содержащий контейнер, которому присвоен класс div.center_list.

    Горизонтальный список

    Иногда, например при использовании списка в качестве меню, нужно расположить элементы списка в строку.

    Вариант 1. Сделать элементы списка строчными

    /*— CSS. Строчный вариант —*/
     
    li { display:inline; padding:0 10px;
    }

    Получаем список такого вида:

    • элемент списка 1
    • элемент списка 2
    • элемент списка 3

    Вариант 2. Сделать элементы списка плавающими

    /*— CSS. Плавающий вариант —*/
     
    ul { list-style: none; /* убираем маркеры, если нужно */
    }
    li { float: left; /* для выравнивания по правому краю — right */ padding: 0 10px;
    }

    Получаем такой же список:

    • элемент списка 1
    • элемент списка 2
    • элемент списка 3

    На практике, в частности при создании меню на основе списка, чаще используется второй вариант.

    Плавающий список

    Заголовок не совсем точен; речь идет о списке, обтекающем плавающий элемент.

    И опять возвращаемся к плавающим элементам. Два понятия — «плавающий элемент» и «обтекание». Необходимо четко представлять что это такое, что где плавает и что обтекает:

    И плавает у соответствующей кромки содержащего блока или прижимается соответствующей кромкой к другому плавающему элементу.

    Следующие за ним, обычные блоки никого не обтекают! Они «тупо» не видят плавающий блок….

    Совет

    Подлость происходящего в том и состоит, что обтекает только текст (строчные элементы и элементы с установленным свойством display: inline или display: inline-block!

    Когда-то изначально свойство float именно для этого и было придумано!

    Все неприятности — от маркеров, которые не являются строчными элементами, и часто происходит следующее:

    Наверняка, многие тщетно пытались вытащить маркер из под плавающего блока, увеличивая margin и padding …

    Попытка увеличить правый отступ плавающего элемента выглядела бы более успешно, если бы не параграфы.

    Вот как это может выглядеть:

    плавающий блок
    margin-right: 25px

    Параграф до списка

    Параграф после списка

    Согласитесь, не очень красиво.

    Решение

    /*— CSS —*/
    /*— Cтиль, установленный по умолчанию —*/
    ul { margin: 0 0 10px 25px;
    }
    /*— Переопределяем стили —*/
    ul { margin: 0 0 10px 10px; padding-left: 15px; overflow: hidden;
    }

    В результате получаем:

    Параграф до списка

    Параграф после списка

    Особенности применения

    Чтобы оставить отступ обычных, не обтекающих списков неизменным, мы уменьшили margin и увеличилиpadding на одинаковую величину. Отступ маркера от начала текста равен размеру шрифта (14px), иpadding должен быть больше этой величины, иначе маркер обрежет.

    Мы определили свойства для тега ul. Т.е. для всех списков на сайте. Это не очень хорошо, так-как overfow: hidden, в некоторых случаях, может оказаться не безобидным. Поэтому нужно выбрать один из способов использования данного метода:

    1. Если обтекающий список — редкое исключение:

    Добавляем конкретным тегам ul класс, напримерul.folat_list, и прописываем свойства уже для класса.

    2. Обратная ситуация, когда свойство необходимо присвоить только спискам без класса:

    Используем следующую конструкцию (только для соврменных браузеров, поддерживающих CSS3)

    /*— CSS —*/
    /*— Для «деклассированных» списков —*/
    ul:not([class]) { margin: 0 0 10px 10px; padding-left: 15px; overflow: hidden;
    }

    Для всех остальных списков, с установленным значением атрибута class, будут применяться стили по умолчанию.

    Горизонтально центрированное меню с использованием только CSS

    Задача центрирования горизонтального меню может оказаться не такой уж простой, особенно для новичков в CSS.

    Поиск решений приводит к весьма ограниченному списку методов, основная часть которых полагается на трюки CSS, JavaScript или использование нестандартных правил, которые поддерживаются не всеми браузерами.

    В данном уроке мы разберем метод центрирования горизонтального меню, который использует только стандартные правила CSS и работает во всех браузерах.

    Пример центрированного меню

    Ниже приведено горизонтальное центрированное в данной колонке меню,  в котором активизирована вторая закладка. Можно попробовать изменить размер окна браузера или страницы, чтобы убедиться в том, что меню всегда остается центрированным и рабочим.

    На демонстрационной странице можно увидеть несколько вариантов оформления горизонтально центрированного меню. Любой из них можно использовать в своих проектах.

    Разметка HTML

    Все меню, примеры которых приводятся в данном уроке, используют простую структуру. Это обыкновенный неупорядоченный список ссылок, помещенный в элемент div.

    • Первая закладка
    • Вторая закладка
    • Третья закладка
    • Четвертая закладка

    Код CSS центрированного меню

    Ниже приводится полный код CSS, с помощью которого центрируется меню. А объяснения принципа работы приводятся далее в уроке.

    #centeredmenu { float:left; width:100%; background:#fff; border-bottom:4px solid #000; overflow:hidden; position:relative; } #centeredmenu ul { clear:left; float:left; list-style:none; margin:0; padding:0; position:relative; left:50%; text-align:center; } #centeredmenu ul li { display:block; float:left; list-style:none; margin:0; padding:0; position:relative; right:50%; } #centeredmenu ul li a { display:block; margin:0 0 0 1px; padding:3px 10px; background:#ddd; color:#000; text-decoration:none; line-height:1.3em; } #centeredmenu ul li a:hover { background:#369; color:#fff; } #centeredmenu ul li a.active, #centeredmenu ul li a.active:hover { color:#fff; background:#000; font-weight:bold; }

    Как работает метод центрирования

    Действие метода основано на относительном позиционировании плавающих блочных элементов один в другом. Для начала посмотрим, как изменяется размер элементов при смещении.

    Элемент div без смещения

    Элемент div (блочный) без смещения растягивается на всю доступную ему ширину.

    Элемент div со смещением влево

    Но если мы будем смещать элемент div влево, он автоматически будет ужиматься до размеров своего содержимого. Сжатие является ключевым моментом в реализации данного метода центрирования меню. Оно помогает перемещать меню в правильную позицию.

    Стандартное выровненное влево меню

    Возьмем стандартное выровненное влево меню и будем шаг за шагом его переделывать. Для наглядности пункты окрашены в разные цвета, так что сразу понятно, что куда вложено.

    Обратите внимание на следующие моменты:

    • Элемент centeredmenu div (голубой прямоугольник) смещается влево, но имеет ширину 100%, поэтому остается растянутым на всю страницу.
    • Элемент ul (розовый прямоугольник) находится внутри элемента centeredmenu div и смещается влево. Это означает, что он будет ужат до ширины своего содержимого, то есть до суммарной ширины всех закладок.
    • Все элементы li (зеленые прямоугольники) находятся внутри элемента ul и смещаются влево. Таким образом, они ужимаются до размеров ссылок в них и выстраиваются в одну горизонтальную линию.
    • Внутри каждой ссылки (оранжевые прямоугольники) выводится текст закладки: Закладка 1, Закладка 2 и так далее.

    Смещаем положение неупорядоченного списка

    Затем мы смещаем элемент ul вправо на 50% с помощью свойства position:relative;.

    Когда элемент смещается с указанием процента при таких условиях важно помнить, что суммарная ширина содержащихся в нем элементов не является его шириной.

    В нашем случае смещение происходит на половину окна браузера (или доступного для вывода пространства).В результате наше меню начинается на середине окна и частично выходит за его пределы. И переходим к следующему шагу.

    Сдвигаем положение всех элементов меню

    Осталось только сдвинуть все элементы li влево на 50%. Это 50% ширины нашего элемента ul (контейнера, который содержит меню). Таким образом, закладки смещаются точно на центр окна.

    Несколько важных замечаний

    При использовании данного метода центрирования надо помнить о нескольких важных моментах:

    • Так как элемент ul частично выходит за рамки окна, то это приводит к выводу полос прокрутки. Поэтому нужно использовать правило overflow:hidden; для элемента centeredmenu div. Таким образом, выступающая часть элемента div будет обрезана.
    • Так как элемент ul не выровнен по закладкам, то нельзя использовать никаких визуальных стилей для него. Оставьте элемент ul без фонового цвета и без рамки, чтобы он стал полностью невидимым. А стили для закладок нужно использовать только для элементов li.
    • Если нужно задать особенные стили для первой и последней закладки, нужно добавить класс для первого и последнего элементов li, чтобы можно было стилизовать их индивидуально.

    Заключение

    Предложенное решение совместимо со всеми браузерами, не использует JavaScript и поддерживает изменяемый размер текста.

    Расположение div по центру и другие тонкости позиционирования

    Левый блок

    Правый блок

    Теперь постараемся с помощью этого же свойства расположить третий div по центру страницы. Но, к сожалению, у float нет значения center. А при задании новому блоку значения выравнивания вправо или влево он сдвигается в указанную сторону. Поэтому остается лишь всем трем блокам задать float: left:

    Но и это не является оптимальным вариантом. При уменьшении окна все слои выстраиваются в один ряд по вертикали, а при увеличении размеров – прилипают к левому краю окна. Поэтому нужен более совершенный способ выравнивание div по центру.

    Центрирование слоев

    В следующем примере мы будем использовать слой-контейнер, в котором разместим остальные элементы. Это решает проблему смещения блоков друг относительно друга при изменении размеров окна. Центрирование контейнера посредине осуществляется с помощью задания свойствам margin нулевого значения отступам от верхнего края и auto по бокам (margin: 0 auto):

    Левый блок

    Центральный блок

    Правый блок

    Этот же пример показывает, как можно отцентровать div по горизонтали. А если немного отредактировать приведенный выше код, то можно добиться вертикального выравнивания блоков. Для этого нужно лишь изменить длину слоя-контейнера (уменьшить его). То есть после редактирования его css класс должен выглядеть вот так:

    #container { width: 200px; margin: 0 auto; }

    После изменения все блоки выстроятся строго в ряд посредине. И их положение не изменится при любых размерах окна браузера. Вот как выглядит такое центрирование div по центру по вертикали:

    Обратите внимание

    В следующем примере для центрирования слоев внутри контейнера мы использовали ряд новых свойств css:

    Краткое описание свойств css и их значений, которые мы использовали в данном примере для центрирования div внутри div:

    • display: inline-block – выравнивает блочный элемент в строку и обеспечивает его обтекание другим элементом;
    • vertical-align: middle – выравнивает элемент посредине относительно родительского;
    • margin-left – устанавливает отступ слева.

    Как из слоя сделать ссылку

    Как ни странно звучит, но такое возможно. Иногда div блок как ссылка может понадобиться при верстке различных видов меню. Рассмотрим практический пример реализации слоя-ссылки:

    Ссылка на наш сайт

    В данном примере с помощью строки display: block мы задали ссылке значение блочного элемента. А чтобы вся высота блока div стала ссылкой, установили height: 100%.

    Скрытие и отображение блочных элементов

    Блочные элементы предоставляют больше возможностей для расширения функционала интерфейса, чем устаревшая табличная верстка. Часто бывает, что дизайн сайта является уникальным и узнаваемым. Но за такой эксклюзив приходиться платить нехваткой свободного места.

    Особенно это касается главной страницы, стоимость размещения рекламы на которой является самой высокой. Поэтому и появляется проблема, куда бы «впихнуть» еще один рекламный баннер. И тут уж выравниванием div по центру страницы никак не отделаешься!

    Более рациональным решением является сделать какой-нибудь блок скрывающимся. Вот простой пример такой реализации:

    Это волшебная кнопка. Нажатие на нее скроет или отобразит скрывающийся блок.

    В данном примере расположение div блоков никак не меняется. Здесь используется простейшая функция JavaScript, меняющая значение свойства css display после нажатия на кнопку (событие onclick).

    Синтаксис display:
    display: block | inline | inline-block | inline-table | list-item | none | run-in | table | table-caption | table-cell | table-column-group | table-column | table-footer-group | table-header-group | table-row | table-row-group

    Как видите, данное свойство может принимать множество значений. Поэтому является очень полезным и может использоваться для позиционирования элементов. В одном из предыдущих примеров с помощью одного из его значений (inline-block) мы реализовали выравнивание div внутри div по центру.

    Для скрытия и показа слоя мы использовали два значения свойства display:

    • none – временно удаляет блочный элемент со страницы;
    • block – показывает элемент как блочный.

    Еще одним средством css, позволяющим скрывать и показывать элемент, является свойство visibility. Но оно обладает большим недостатком.

    Свойство visibility позволяет лишь скрыть элемент. Но практически он присутствует на странице. Поэтому расположить на его месте другой элемент не получится. В то время как свойство display полностью удаляет (на время) элемент и позволяет располагать на его месте другие блочные структуры.

    Мы с вами рассмотрели все основные слои настоящего сайта. Надеемся, что полученные знания позволят вам «испечь» по-настоящему вкусный ресурс.

    Как сделать навигационное меню — учебник CSS

    Навигация присутствует на любом хорошем сайте, даже если он одностраничный. В зависимости от ситуации, навигационные ссылки могут вести на различные разделы сайта либо отправлять к закладке (якорю), расположенной на текущей странице.

    Грамотное составление навигации, в которой не запутается пользователь, требует определенных знаний и опыта. К дизайну навигационной панели также нужно подходить с умом, и в этом уроке мы расскажем вам, как создать удобное навигационное меню.

    Создание навигации

    Что такое навигация? Это набор ссылок, зачастую упорядоченных и сгруппированных по смыслу. Навигационное меню часто создается с использованием HTML-тега списка

      , где в каждом пункте
    • содержится одна ссылка . В HTML5 для навигации ввели отдельный тег , куда можно просто помещать теги ссылок. После создания HTML-каркаса можно переходить к его стилизации с помощью CSS, где вы можете определять, каким будет ваше меню — вертикальным, горизонтальным, выпадающим и т. п.Допустим, у нас есть простая навигация с пятью ссылками, созданная в HTML на основе маркированного списка:
      • Home
      • About
      • Gallery
      • News
      • Contacts

      Изначально, без стилей наша навигация выглядит, как обычный список:

      Чтобы сделать этот элемент более похожим на навигационную панель, необходимо проделать несколько обязательных шагов. Во-первых, возле пунктов меню не нужны маркеры, а во-вторых, стандартные значения margin и padding, заданные браузером для списка, могут мешать, поэтому мы обнуляем их. В итоге получается следующее:

      .menu { list-style-type: none; margin: 0; padding: 0; }

      По сути, идентичные действия по отношению к спискам делает файл сброса стилей Reset.css, поэтому, если вы используете его на вашем сайте, то код выше можно не записывать.

      После обнуления стандартных стилей списка можно приступать непосредственно к созданию стилей для навигации. Мы покажем, как делать вертикальные и горизонтальные панели.

      Вертикальное меню

      Создание вертикальной навигационной панели считается более легким занятием, нежели создание горизонтального меню. Главным образом потому, что нет необходимости задавать горизонтальное расположение ссылок. Это просто вертикальный список страниц сайта. И всё же некоторые важные стили применить придется.
       

      Блочные ссылки

      Прежде всего нужно сделать все теги блочными элементами:

      .menu a { display: block; }

      Существует несколько причин для этого:

    • Вы сможете задавать отступы для ссылок.
    • Блочный элемент занимает всю ширину контейнера, тогда как ширина строчного элемента зависит от его содержимого. Из-за этого могут появиться проблемы, если вы, например, решите установить для ссылок фоновый цвет:

      GIF

      Строчные ссылки могут быть разной длины, что негативно отразится на внешнем виде.

    • Исходя из второго пункта, можно отметить еще один положительный момент. Когда ссылка является блочным элементом, область ее кликабельности расширяется: даже если кликнуть по месту, где нет текста, она все равно сработает. Это удобно, потому что не надо прицеливаться по маленькой ссылке. А с помощью вертикальных отступов padding можно увеличить область кликабельности еще и по высоте.
    • Ширина меню

      Следующее, что нам понадобится сделать — это задать ширину меню. Если у вас заранее не была определена ширина навигационной панели, и она не находится в контейнере, который ограничивает ее, то меню будет растянуто на всю ширину окна (как в нашем примере выше) — ведь блочный элемент по умолчанию ведет себя именно так. Вы можете задать необходимую ширину для элемента .menu, например:

      .menu { width: 300px; }

      Вместо этого можно установить ширину для пунктов

    • либо для ссылок — визуально эффект может быть одинаковый, но учтите, что в таком случае ширина элемента .menu всё равно останется 100%.
       

      Разделение пунктов

      Чтобы визуально разделить пункты меню, можно задать каждому из них нижнюю или верхнюю границу. В зависимости от того, какую из них вы используете, у вас будет не хватать границы сверху или снизу меню. Это можно исправить, добавив еще одну границу к самому блоку .menu:

      .menu a { border-top: 1px solid blue; } .menu { border-bottom: 1px solid blue; }

      Высота пунктов и вертикальное выравнивание

      Сейчас ссылки меню выглядят слишком низкими, расположенными близко друг к другу. Если текст каждой ссылки не будет занимать более одной строки, то увеличить их высоту и сохранить при этом текст вертикально по центру можно с помощью свойств height и line-height:

      .menu a { height: 30px; line-height: 30px; } GIF

      Как видно на анимации, свойство height влияет на высоту ссылки, а межстрочный интервал line-height изменяет уже высоту самой текстовой строки. Обязательно задавайте одинаковые значения для этих двух свойств, если хотите, чтобы текст ссылки был вертикально отцентрирован.

      Горизонтальное меню

      Основная задача при создании горизонтальной навигации — расположить пункты меню в один ряд. Это можно сделать несколькими способами.
       

      Способ первый

      Первый вариант — задать пунктам списка свойство display со значением inline либо inline-block:

      .menu li { display: inline; }

      При этом теги внутри

    • нельзя делать блочными, иначе пункты перестанут выстраиваться горизонтально и снова встанут в вертикальную позицию. Ссылкам можно также задать значение inline или inline-block. Выберите второе, если вы собираетесь в дальнейшем создавать отступы для ссылок.

      После этого можно заняться оформлением ссылок. Например, можно сделать такой стиль:

      .menu a { text-decoration: none; font-family: sans-serif; color: #5757a0; display: inline-block; padding: 10px 20px; background-color: lavender; border-bottom: 5px solid #5757a0; }

      Мы добавили фоновый цвет и нижнюю границу для каждой ссылки, а также увеличили ее размеры при помощи внутренних отступов padding.

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

      Они возникают, потому что браузер так воспринимает символ возврата каретки между закрывающим и открывающим тегами

    • . Эти промежутки можно убрать, записав HTML-код списка в одной строке:

      Однако это неудобно, ведь эти изменения придется вносить в HTML вручную, да и чтение кода затрудняется. Поэтому попробовать избавиться от промежутков можно с помощью отрицательного значения margin-right:

      .menu li { margin-right: -5px; }

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

      Если промежутки между пунктами не запланированы в вашем дизайне, лучше воспользоваться вторым методом горизонтального выстраивания элементов.
       

      Способ второй

      Возможно, вы уже догадались, что второй вариант создания горизонтального меню заключается в использовании свойства float. Для этого добавьте стиль для тегов

    • :

      .menu li { float: left; }

      Как видим, промежутков между пунктами уже нет. Все остальные стили работают, как и прежде. Но если вы добавите после навигации другой HTML-элемент (допустим,

      ), то на него повлияет обтекание и он встанет в один ряд с пунктами меню. Отменить это действие можно, добавив заголовку свойство clear: left. Но при разработке сайта с большим количеством разных страниц может стать сложно следить за тем, нигде ли вы не забыли указать данное свойство. Гораздо легче отменить обтекание со стороны навигации. В этом поможет такая запись:

      .menu { overflow: hidden; }

      Это также поможет вернуть нормальную высоту родителя плавающих элементов. Мы уже говорили об этой проблеме в предыдущих уроках, но тогда мы решали ее через специальный хак с использованием псевдоэлемента :after. Пример выше — это еще один способ решить вопрос с исчезнувшей высотой контейнера.

      GIF

      Примечание: если вы установите фон для элемента .menu, то вы не увидите его до тех пор, пока не примените к нему overflow: hidden. Логично, ведь как можно увидеть фон элемента, чья высота равна нулю?

      В следующем уроке мы более детально расскажем о возможностях селекторов атрибутов, с помощью которых можно задавать стили ссылкам в зависимости от атрибутов и их значений.

    • Как расположить элемент по центру при помощи CSS

      Здравствуйте уважаемые читатели блога mainview.ru. Думаю, каждый сейчас понимает, что создать современный сайт не так-то просто. Нужно не только обладать хорошими знаниями, но и иметь хороший опыт.

      Часто при разработке веб-сайта, можно столкнуться с рядом проблем, которые потребуют времени для нахождения решения, которые потребуют время на поиск и тестирование возможных решений.
      Именно поэтому я решил коснуться некоторых «маленьких больших проблем», с которыми веб разработчики сталкиваются постоянно.

      Сегодня хочу поговорить о том, как правильно расположить элементы внутри контейнера по центру.

      Проблема. Как расположить элементы по центру при помощи CSS

      Вы хотите расположить элемент по центру, относительно его родительского элемента. Чтобы внутри контейнера элемент располагался посередине. Для этого браузер должен выставить равную ширину полей справа и слева при указанной ширине самого элемента:

      Решение. Выравниваем элементы по центру при помощи CSS

      Чтобы расположить элемент по центру, укажите ширину элемента, а затем используйте значение «Auto» для обоих полей (левого и правого):

      #centered { margin-left:auto; margin-right:auto; width:800px; }

      Или можете записать правила в сокращённом виде, для того, чтобы выровнять элемент по центру контейнера:

      #centered { margin:0 auto; width:800px; }

      ПОСМОТРИМ НА ЗНАЧЕНИЕ «AUTO» ПОДРОБНЕЕ

      CSSсодержат 7 уникальных свойств, которые применяется для установки горизонтального формата элемента margin-left, border-left, padding-left, width, padding-right, border-right, margin-right.

      Их сумма составляет общее горизонтальное пространство, которое элемент занимает на данной странице.
      Из семи свойств, три могут принимать как регулярные значения (в процентах, пикселях, точках и т.д.), так и значение «Auto«.

      Это ширина элемента (width) , левая граница (margin-left) и правая граница (margin-right) .

      Исходя из этого, мы можем получить четыре возможных комбинации, которые будут выглядеть так:

    • Два свойства со значением «Auto», одно свойство с фиксированным значением.
    • Одно свойство со значением «Auto», два других свойства с фиксированным значением.
    • Все три свойства имеют фиксированные значения.
    • Все три свойства со значением «Auto».
    • 1. ОДНО СВОЙСТВО СО ЗНАЧЕНИЕМ «AUTO», ДРУГОЕ С ФИКСИРОВАННЫМ ЗНАЧЕНИЕМ

      Этот вариант представляет наибольший интерес. При установке обоих полей в автоматическое значение, а ширины элемента в фиксированное значение, браузер будет назначать полям равную ширину. Тем самым элемент будет расположен по центру относительно родительского контейнера. Например:

      … #centered { margin-left:auto; margin-right:auto; width:600px; }

      Также в этой комбинации возможен, как вы поняли, и другой вариант. Предположим, что одно поле имеет фиксированную длину, а другое поле установлено в значение «auto».

      Ширина элемента также установлена значение «auto».

      В этом случае ширина поля, установленного в значение «auto» будет установлена в ноль, а максимально возможное пространство будет установлено для ширины самого элемента. Это необходимо учитывать для этого варианта. Например:

      #centered { margin-left:200px; margin-right:auto; width:auto; }

      выглядеть это будет вот так:

      2. ОДНО СВОЙСТВО СО ЗНАЧЕНИЕМ «AUTO», ДРУГОЕ С ФИКСИРОВАННЫМ ЗНАЧЕНИЕМ.


      В этом случае браузер автоматически устанавливает ширину свойства со значением «auto», чтобы выдержать остальные два заданных значения. Например, если ширина элемента установлена в 960px, а левое поле в 200px, браузер автоматически рассчитает ширину правого поля.

      #centered { margin-left:200px; margin-right:auto; /* браузер вычислит оставщуюся ширину этого поля исходя из других значений */ width:960px; }

      По умолчанию все браузеры устанавливают значения полей в «auto». Вы можете убрать строку margin-right:auto;, и вы получите тот же результат.

      3. ВСЕ ТРИ СВОЙСТВА ИМЕЮТ ФИКСИРОВАННЫЕ ЗНАЧЕНИЯ.


      В этом случае, браузеры будут вынуждены установить правое поле (margin-right) в автоматическиое значение. А это возвращает нас к предыдущему случаю:

      #centered { margin-left:200px; margin-right:200px; /* браузер установит это поле в значение auto */ width:960px; }

      4. ВСЕ ТРИ СВОЙСТВА СО ЗНАЧЕНИЕМ «AUTO».


      В этом случае браузеры будет назначить элементу максимальную длину. То есть как правое так и левое поля будут обнулены.

      #centered { margin-left:auto; /* будет установлено в ноль */ margin-right:auto; /* будет установлено в ноль */ width:auto; }

      ДОПОЛНЕНИЕ: Я ПРИМЕНИЛ ЭТОТ МЕТОД ДЛЯ ИЗОБРАЖЕНИЯ, НО ЭТО НЕ РАБОТАЕТ, ПОЧЕМУ?

      Автоматические поля могут быть использованы только для блоковых элементов: таких как параграфы , «DIV», и списки, которые занимают всю строку, тем самым не позволяя добавлять пространство со стороны полей.

      Изображения, «span», «em», » strong», также известные как линейные элементы: элементы, которые не создают блок самостоятельно, они должны быть включены в блок элементов. Так как они считаются частями текста, «боковые» поля линейных элементов просто игнорируются веб-браузерами.

      Поэтому, для того, чтобы отцентрировать изображения, мы должны установить свойство » display » со значением » block «, так как это показано ниже .

      img { display:block; } Важно

      На этом сегодня остановлюсь. Если есть, что добавить, как всегда, комментарии открыты. Спасибо за внимание.

      +6-2

    Вертикальное выравнивание inline-block элементов

    Элементы inline-block с вертикальным выравниванием по умолчанию (baseline)

    Inline-block с текстом

    Inline-block с абзацем

    Inline-block с картинкой и абзацем

    Список внутри inline-block:

    • Пункт 1
    • Пункт 2
    • Пункт 3
    Inline-block с таблицей
    НомерДатаЗанятиеВремя
    114.янвHtml и css18:00
    223.янвPython18:30
    302.февJavascript18:00
    405.февAjax18:30

    Элементы inline-block с вертикальным выравниванием по нижней границе

    Inline-block с текстом

    Inline-block с абзацем

    Inline-block с картинкой и абзацем

    Список внутри inline-block:

    • Пункт 1
    • Пункт 2
    • Пункт 3
    Inline-block с таблицей
    НомерДатаЗанятиеВремя
    114.янвHtml и css18:00
    223.янвPython18:30
    302.февJavascript18:00
    405.февAjax18:30

    Inline-block, выровненные по верхней границе

    Inline-block с текстом

    Inline-block с абзацем

    Inline-block с картинкой и абзацем

    Список внутри inline-block:

    • Пункт 1
    • Пункт 2
    • Пункт 3
    Inline-block с таблицей
    НомерДатаЗанятиеВремя
    114.янвHtml и css18:00
    223.янвPython18:30
    302.февJavascript18:00
    405.февAjax18:30

    Вертикально центрированные inline-block

    Inline-block с текстом

    Inline-block с абзацем

    Inline-block с картинкой и абзацем

    Список внутри inline-block:

    • Пункт 1
    • Пункт 2
    • Пункт 3
    Inline-block с таблицей
    НомерДатаЗанятиеВремя
    114.янвHtml и css18:00
    223.янвPython18:30
    302.февJavascript18:00
    405.февAjax18:30

    Viewport — CSS: Адаптивность

    CSS: Адаптивность

    Первое, с чем необходимо познакомиться при создании адаптивной вёрстки, — мета-тег viewport. Созданный в компании Apple, он стал стандартом при создании вёрстки.

    До перехода к мета-тегу необходимо разобраться, чем является viewport в браузере. Вьюпорт (viewport) — видимая пользователю область страницы, которая доступна без прокрутки.

    На картинке ниже viewport обозначен красной границей.

    До появления смартфонов viewport был примерно одинаковым от монитора к монитору, поэтому создатели веб-страниц не сильно беспокоились о том, как их страница будет выглядеть на другом мониторе. С приходом мобильных устройств всё стало сложнее — появилось множество устройств с самыми разнообразными областями просмотра. Из-за этого почти все сайты, которые были созданы ранее, плохо отображались на мобильных устройствах. Зачастую появлялась горизонтальная прокрутка, которая мешала просмотру сайта. Думаю, вы тоже сталкивались с такими сайтами.

    Мета-тег viewport позволяет нам указать, какая область просмотра необходима для страницы. Чаще всего его используют для указания ширины области просмотра, так как вертикальный скролл является естественным при работе с веб-страницами. Ширина устанавливается через атрибут width:

    <meta name="viewport" content="width=700">
    

    После установки такого мета-тега, ширина области просмотра нашего сайта станет 700 пикселей.

    Чтобы увидеть, как это работает, возьмём эмуляцию экрана iPhone 5. Стандартный браузер Safari по умолчанию имеет viewport равный 980 пикселей. Добавим блок шириной 700 пикселей. Обратите внимание, что сейчас в HTML не указан мета-тег viewport.

    Если вся ширина нашего сайта равна 700 пикселей, то такой зазор между блоком и краем экрана нас не будет устраивать. Теперь добавим мета-тег viewport, указав ширину 700 пикселей.

    Выровнять элементы списка по вертикали в списке HTML с помощью CSS

    Списки HTML являются одними из наиболее часто используемых элементов HTML в веб-разработке, а также при написании страниц и содержимого публикаций. В WordPress списки имеют базовый стиль по умолчанию, применяемый темой. В большинстве случаев вам потребуется изменить стиль списка по умолчанию в соответствии с вашими требованиями к дизайну. В этой статье вы узнаете, как создавать списки HTML с помощью CSS и заставлять их выглядеть именно так, как вы себе представляли. Поэтому первое, что вам нужно сделать, это выровнять элементы списка по вертикали.

    Выравнивание списков HTML в WordPress

    Вы редактируете тему WordPress и стилизуете в ней список HTML? Самое главное, убедитесь, что не нарушает тему, редактируя таблицу стилей по умолчанию . Также убедитесь, что вы не потеряете собственный код после обновления темы.

    Лучше всего добавить собственный CSS-файл таблицы стилей к теме или дочерней теме, над которой вы работаете. Если вы еще этого не сделали, сначала прочтите нашу статью о добавлении пользовательских файлов CSS в темы WP.

    Как выровнять списки HTML по вертикали с помощью свойства CSS

    list-style-position ?

    Разработчики тем WordPress часто не уделяют слишком много внимания оформлению списков HTML. Это делает списки в содержании сайта довольно простыми. Добавив несколько простых свойств CSS к стилю списка, вы можете выделить его в содержании.

    Во многих темах WP по умолчанию не задано свойство aligment вертикального списка list-style-position. Это свойство определяет положение маркеров списка (•) по отношению к тексту.Если не задано, значение по умолчанию свойства list-style-position будет внутри. В этом случае весь список (маркеры и текст) будет полностью выровнен по левому краю. Этот стиль затрудняет чтение списков с элементами, состоящими из двух или более строк. Кроме того, визуально список выглядит не очень хорошо.

    Сравнение нестилизованного HTML-списка (слева) и вертикально выровненного HTML-списка (справа) .

    Вертикальное выравнивание элементов списка с помощью CSS с использованием

    list-style-position property

    Мы легко изменим вертикальное выравнивание HTML-списка , добавив CSS свойство list-style-position со значением вне его.Теперь маркеры будут выровнены абсолютно по левому краю, а элементы многострочного списка будут выровнены по вертикали после маркеров. Список уже выглядит лучше, и его легче читать.

    Теперь мы можем добавить еще несколько свойств CSS, чтобы, кроме того, улучшить базовое форматирование списка HTML. Давайте добавим padding слева от списка, чтобы немного отодвинуть список от края содержимого. Кроме того, добавление некоторого нижнего поля к элементам списка еще больше улучшит читаемость.

    Вот как выглядят свойства CSS для выравнивания списка HTML в нашем примере:

      ul {
    позиция в стиле списка: снаружи; / * Выравнивает список по вертикали * /
    отступ слева: 30 пикселей; /* По желанию */
    }
    
    ли {маржа-дно: 15 пикселей; /* По желанию */ }
      

    Этот стиль применяется как к неупорядоченным спискам

      , так и к упорядоченным спискам
        .В нашем примере мы стилизовали неупорядоченный список HTML. Если вы используете стиль для упорядоченного списка, замените селектор ul в приведенном выше коде на селектор ol.

        Стилизация списков HTML с помощью CSS

        Этот пример был лишь первым шагом на пути к идеальному оформлению списков HTML. Точно так же, добавив еще пару свойств CSS к стилю CSS списка, вы можете добиться гораздо большего. Вы можете отформатировать свои списки в столбцы или , изменить цвет и форму маркеров , чтобы список выделялся еще больше.

        Перейдите по ссылкам ниже, чтобы получить дополнительные советы по стилизации списков HTML:

        Списки стилей — Изучите веб-разработку

        Списки по большей части ведут себя как любой другой текст, но есть некоторые свойства CSS, специфичные для списков, о которых вам нужно знать, и некоторые передовые методы, которые следует учитывать. Эта статья все объясняет.

        Для начала рассмотрим простой пример списка. В этой статье мы рассмотрим неупорядоченные, упорядоченные и описательные списки — все они имеют схожие стили, а некоторые характерны для их типа списка.Пример без стиля доступен на Github (также посмотрите исходный код).

        HTML-код нашего примера со списком выглядит так:

           

        Список покупок (неупорядоченный)

        Абзац для справки, абзац для справки, абзац для справки, параграф для справки, параграф для справки, параграф для справки.

        • Хумус
        • Пита
        • Зеленый салат
        • Халлуми

        Список рецептов (упорядоченный)

        Абзац для справки, абзац для справки, абзац для справки, параграф для справки, параграф для справки, параграф для справки.

        1. Поджарить лаваш, дать остыть, затем нарезать края.
        2. Обжарьте халлуми на неглубокой сковороде с антипригарным покрытием до коричневого цвета с обеих сторон.
        3. Вымойте и нарежьте салат.
        4. Наполните лаваш салатом, хумусом и жареным халуми.

        Список описаний ингредиентов

        Абзац для справки, абзац для справки, абзац для справки, параграф для справки, параграф для справки, параграф для справки.

        Хумус
        Густой соус / соус, который обычно готовят из нута, смешанного с тахини, лимонным соком, солью, чесноком и другими ингредиентами.
        Пита
        Мягкие лепешки с легкой закваской.
        Халлуми
        Полутвердый, незрелый, рассоленный сыр с более высокой, чем обычно, температурой плавления, обычно изготавливаемый из козьего / овечьего молока.
        Зеленый салат
        Эта полезная зелень, которую многие из нас просто используют для украшения шашлыка.

        Если вы сейчас перейдете к живому примеру и исследуете элементы списка с помощью инструментов разработчика браузера, вы заметите несколько значений стиля по умолчанию:

        • Элементы
            и
              имеют верхнее и нижнее поле 16px ( 1em ) и padding-left 40px ( 2.5em .)
            1. Элементы списка (
            2. элементов) не имеют значений по умолчанию для интервала.
            3. Элемент
              имеет верхнее и нижнее поле размером 16px ( 1em ), но без заполнения.
            4. Элементы
              имеют левое поле 40px ( 2.5em .)
            5. Элементы

              , которые мы включили для справки, имеют верхнее и нижнее поле размером 16px ( 1em ), как и у разных типов списков.

          При стилизации списков вам необходимо настроить их стили таким образом, чтобы они сохраняли тот же вертикальный интервал, что и окружающие их элементы (например, абзацы и изображения, иногда называемый вертикальным ритмом), и тот же горизонтальный интервал, что и друг друга (вы можете видеть законченные стилизованный пример на Github, а также найдите исходный код.)

          CSS, используемый для стилизации текста и интервалов, выглядит следующим образом:

           
          
          html {
            семейство шрифтов: Helvetica, Arial, sans-serif;
            размер шрифта: 10 пикселей;
          }
          
          h3 {
            размер шрифта: 2rem;
          }
          
          ul, ol, dl, p {
            размер шрифта: 1,5 бэр;
          }
          
          li, p {
            высота строки: 1,5;
          }
          
          
          
          dd, dt {
            высота строки: 1,5;
          }
          
          dt {
            font-weight: жирный;
          }
            
          • Первое правило устанавливает шрифт по всему сайту и базовый размер шрифта 10 пикселей. Они наследуются всем на странице.
          • Правила 2 и 3 устанавливают относительные размеры шрифта для заголовков, различных типов списков (дочерние элементы элементов списка наследуют их) и абзацев.Это означает, что каждый абзац и список будут иметь одинаковый размер шрифта, а также верхний и нижний интервалы, что поможет сохранить согласованный вертикальный ритм.
          • Правило 4 устанавливает одинаковую высоту строки для абзацев и элементов списка — поэтому абзацы и каждый отдельный элемент списка будут иметь одинаковый интервал между строками. Это также поможет сохранить постоянный вертикальный ритм.
          • К списку описаний применяются правила 5 и 6 — мы устанавливаем ту же высоту строки для терминов и описаний списка описаний, что и для абзацев и элементов списка.Опять же, последовательность хороша! Мы также сделали термины описания полужирным шрифтом, чтобы они лучше выделялись визуально.

          Теперь мы рассмотрели общие методы расстановки интервалов для списков, давайте рассмотрим некоторые специфические для списков свойства. Есть три свойства, о которых вам следует знать для начала, которые могут быть установлены для элементов

            или
              :

              • list-style-type : Устанавливает тип маркеров для использования в списке, например, квадратные или круглые маркеры для неупорядоченного списка или числа, буквы или римские цифры для упорядоченного списка.
              • list-style-position : устанавливает, будут ли маркеры отображаться внутри элементов списка или вне их перед началом каждого элемента.
              • list-style-image : позволяет использовать пользовательское изображение для маркера, а не простой квадрат или круг.

              Стили маркеров

              Как упоминалось выше, свойство list-style-type позволяет вам установить, какой тип маркера использовать для маркеров. В нашем примере мы установили упорядоченный список для использования римских цифр в верхнем регистре:

                ol {
                тип-стиль-список: верхний римский;
              }  

              Это дает нам следующий вид:

              Вы можете найти намного больше вариантов, проверив справочную страницу list-style-type .

              Позиция маркера

              Свойство list-style-position устанавливает, будут ли маркеры появляться внутри элементов списка или вне их перед началом каждого элемента. Значение по умолчанию — за пределами , что приводит к тому, что маркеры находятся за пределами элементов списка, как показано выше.

              Если вы установите значение внутри , маркеры будут находиться внутри строк:

                ol {
                тип-стиль-список: верхний римский;
                позиция в стиле списка: внутри;
              }  

              Использование настраиваемого изображения маркера

              Свойство list-style-image позволяет использовать настраиваемое изображение для маркера.Синтаксис довольно прост:

                ul {
                изображение в стиле списка: URL (star.svg);
              }  

              Однако это свойство немного ограничено с точки зрения управления положением, размером и т. Д. Пуль. Лучше использовать семейство свойств background , о которых вы узнали в статье «Фон и границы». А пока вот дегустатор!

              В нашем законченном примере мы стилизовали неупорядоченный список следующим образом (поверх того, что вы уже видели выше):

                ul {
                padding-left: 2rem;
                тип-стиль-список: нет;
              }
              
              ul li {
                padding-left: 2rem;
                background-image: url (star.svg);
                background-position: 0 0;
                размер фона: 1,6 бэр 1,6 бэр;
                фон-повтор: без повторения;
              }  

              Здесь мы сделали следующее:

    Как видно из кода, я связал весь наш список элементы на общие HTML-страницы. Когда вы используете приведенный выше код в ваш сайт, вы, вероятно, захотите связать его с конкретными страниц на вашем сайте. Также обратите внимание, что мы дали списку id позвонил nav . Я скоро вернусь к именам идентификаторов, так что не беспокойтесь об этом сейчас. В любом случае, перейдем к Шаг 2 .

    Шаг 2: Начальный CSS

    В головной части, между вашими и разделах своей страницы, скопируйте и вставьте следующий код:

    <стиль type = "текст / css">
    .menustyling {
    ширина: 300 пикселей;
    маржа: 0 пикселей;
    отступ: 0 пикселей;
    цвет фона: #fff;
    }

    Вставленный вами код выглядит странно, если взглянуть на него. но если вы посмотрите на это в деталях, это довольно просто. Сначала я указываю свойства для ширины, поля, заполнения и цвет фона. Для каждого из этих свойств я назначаю их ценности. Объявление стиля - называется .menustyling - это только часть стилизации html-объекта.Тебе нужно называть это, и вы делаете это, используя имя id вместе с тегом div:

    Если вы замените тег div в HTML-коде вашего списка на приведенный выше код, вы, вероятно, не увидите больших изменений. Главный Преимущество обертывания списка вокруг тега div в том, что внесение будущих изменений в цвет фона вашего списка, margin, padding и т. д. очень просты. Вы просто меняете код в блоке меню. Вы никогда не касаетесь свойства списка.Это отделение стилевой информации от содержание - это то, что делает CSS очень мощным инструментом в вашем ящик для инструментов.

    Шаг 3: Удаление маркеров

    Затем вы захотите удалить эти маркеры из list, и мы можем также исправить отступы и поля для список тоже. Добавьте следующий код непосредственно под , чем раньше код, который вы вставили между тегами :

    .менустайлинг ul {
    стиль списка: нет;
    отступ: 0 пикселей;
    маржа: 0 пикселей;
    }

    Можете ли вы заметить разницу между тем, что вы наклеили выше а что ты уже наклеил? У них обоих одинаковые название - .менустайлинг. Но обратите внимание, что вторая версия В заголовке menustyling содержится тег ul . Что означает, что любое содержимое ul , помещенное в зонт Menustyling будет иметь стили, характерные для модели . .менустылинг ул кл.

    Теперь у вас должен быть простой список, показанный на изображение ниже:

    [как ваш список надо смотреть]

    Чтобы увидеть живую демонстрацию приведенного выше списка, щелкните

    здесь для просмотра списка в новом окне.

    Шаг 4: Больше стиля

    Хорошо, теперь вернитесь к тегам стиля, скопируйте и вставьте класс ниже над тегом :

    #nav li a {
    цвет фона: # A4DFF1;
    дисплей: блочный;
    ширина: 196 пикселей;
    высота строки: 20 пикселей;
    высота: 20 пикселей;
    маржа: 0 пикселей;
    Семейство шрифтов
    : Ариал, Helvetica, без засечек;
    размер шрифта: 8pt;
    font-weight: жирный;
    padding-left: 3px;
    padding-top: 7px;
    цвет: # 000000;
    }

    Во-первых, обратите внимание, что вся приведенная выше информация о стилях содержится под зонтиком #nav.С этим простым фактом в ум, позвольте мне объяснить каждую строчку:

    #nav li a {

    Это означает, что этот эффект изменит способ отображения элементов списка. (li) содержащий ссылки (a) в меню появится.


    цвет фона: # A4DFF1;

    Эта строка не требует пояснений. Фон Цвет всех элементов списка с гиперссылками установлен на небесно-голубой.


    дисплей: блок;

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


    ширина: 196 пикселей;
    высота: 20 пикселей;
    маржа: 0 пикселей;

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


    семейство шрифтов: Ариал, Helvetica, без засечек;
    размер шрифта: 8pt;
    font-weight: жирный;
    цвет: # 000000;

    В приведенных выше строках указаны стили шрифтов для вашего гиперссылка на текст списка. В общем, ничего сложного в этом нет. объясните здесь.


    текстовое оформление: нет;

    По умолчанию все ссылки подчеркнуты. Эта строка кода удалит подчеркивание из текста в вашем списке меню.


    padding-left: 3px;
    padding-top: 7px;

    Это просто отступ, чтобы шрифт располагался немного дальше слева и переместитесь в центр по вертикали.

    При предварительном просмотре списка вы должны увидеть усилия ваш труд, как показано на скриншоте:

    [ваш измененный список]

    Как и в предыдущем изображении, щелкните здесь , чтобы просмотреть приведенный выше пример вживую.

    Шаг 5: Завершение

    Теперь, не выходя из тегов стиля, вставьте следующий класс:

    #nav li a: hover {
    цвет: #FFFFFF;
    цвет фона: # 77B8CC;
    }

    Это придаст элементу списка стиль наведения. В другом слова, когда пользователь наводит курсор мыши на ссылку, внешний вид пункта меню, на который наведен курсор, изменится на основе того, что вы указали в приведенном выше коде. В нашем случае единственные изменения, которые вы увидите, соответствуют цвету и цвет фона вашего элемента списка.

    И все готово, теперь у вас есть рабочее меню списка CSS.

    Совет

    : чтобы получить больше от этого, вы можете изменить цвета в элемент списка для изображений, например, если я поменяю местами линия цвета фона в классе #nav li a: hover для следующая строка:

    фоновое изображение: url (buttons_over.jpg);

    Теперь вы должны увидеть, когда пользователь пролистывает меню, которое вы получаете изображения, а не цвет фона. Теперь у вас должно быть хорошее меню CSS без необходимости для использования JavaScript.

    Если у вас есть вопросы, пишите на форумы или свяжитесь со мной.

    RabBell
    .