Jump to content
  • 0

Вопрос от блондинки


Bizon4ik
 Share

Question

Доброе время суток.

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

Edited by Bizon4ik
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Помогите плз со следующей бедой. Пытаюсь сделать горизонтальное меню. Пока получилось следующее:

2854317m.jpg

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

2847149m.jpg

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

Мой код HTML:

<body>
<div class="header">
<ul>
<li class="li_header_first"><a href="#">All Clients</a></li>
<li class="li_header"><a href="#">Regions</a></li>
<li class="li_header"><a href="#">Board</a></li>
<li class="li_header"><a href="#">New Client</a></li>
<li class="li_header_last"><a href="#">Search</a></li>
</ul>
</div>
</body>

Код СSS:

*{
margin:auto;
padding:0;

}
.header{
margin:auto;
width:805px;
}
ul{
list-style:none;
width:804px;
height:40px;
background:url(images/bg_header.gif) top left repeat-x;
}
ul li{
float:left;
display: inline-block;
width: 160px;
}
.li_header {
border-right:1px solid #333;
}
.li_header_first {
border-right:1px solid #333;
background:url(images/li_header_first.png) top left no-repeat;
}
.li_header_last {
background:url(images/li_header_last.png) top right no-repeat;
}

.header ul li a{
display:block;
height:40px;
font-size: 15px;
font-family: sans-serif;
color:#fff;
text-decoration:none;
text-align:center;
vertical-align:middle;
}

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

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

Link to comment
Share on other sites

  • 0

Я со списками "не дружу" да и сам новичок:) удобней делать через <nav> со ссылками) никаких проблем не было

http://codepen.io/FELZ/pen/fjgKx

А у вас в коде высоту <a> надо уменьшить на 10px и добавить padding-top: 10px

тогда бордер не будет выходить за границу

посмотреть можно тут (background изменил потому-что гифки вашей нет у меня )

http://codepen.io/FELZ/pen/Jgtqi

Link to comment
Share on other sites

  • 0

Я со списками "не дружу" да и сам новичок:) удобней делать через <nav> со ссылками) никаких проблем не было

http://codepen.io/FELZ/pen/fjgKx

А у вас в коде высоту <a> надо уменьшить на 10px и добавить padding-top: 10px

тогда бордер не будет выходить за границу

посмотреть можно тут (background изменил потому-что гифки вашей нет у меня )

http://codepen.io/FELZ/pen/Jgtqi

Спасибо за ответ. У меня сейчас нет возможности протестировать ваш совет по коректировки моего кода, поэтому о нем отпишусь поже ).

А ват метод с использование nav заитересовал. Подскажите, пожалуйста, а если необходимо меню с закругленными краями сделаными из рисунка то мне необходимо вначале меню и в конце добавить еще два пустых пункта меню небольшой ширины и в них вставить закругления, а текст по горизонтале выравнивать с помощю padding?

Link to comment
Share on other sites

  • 0

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

Параметр Padding'а не входит в вычисление размеров элементов. То есть, если у тебя в CSS прописано для элемента, например, height: 50px; и padding-top: 15px, то высота элемента будет = 65px. Тоже относиться и к border.

Свойство box-sizing(-moz-box-sizing для FF) со значением - border-box, позволяет добавляться padding и border к заданному параметру высоты/ширины.

Edited by Viper
Link to comment
Share on other sites

  • 0

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

Параметр Padding'а не входит в вычисление размеров элементов. То есть, если у тебя в CSS прописано для элемента, например, height: 50px; и padding-top: 15px, то высота элемента будет = 65px. Тоже относиться и к border.

Свойство box-sizing(-moz-box-sizing для FF) со значением - border-box, позволяет добавляться padding и border к заданному параметру высоты/ширины.

Спасибо за обяснение.

Link to comment
Share on other sites

  • 0

Поставьте line-height:40px; а паддинги уберите.

Спасибо за ответ, он действительно помог.

Я в этой части кода

.header ul li a{
display:block;
height:40px;
font-size: 15px;
font-family: sans-serif;
color:#fff;
text-decoration:none;
text-align:center;
vertical-align:middle;
}

поменял height:40px; на line-height:40px; и получил жилаемый вариант 2829631m.jpgВроди бы результат достугнут но понимание не пришло. Обясните мне, пожалуйства вот что:

1. Почему в выше указаном коде не работатет vertical-align? (если удалить его или прописать что то типа vertical-align:10px; то нечего не меняется, тоесть текст не двигается)

2. Второй вопрос вытикает из первого: если vertical-align не работает то как в случае необходимость в этом меню выранивать текст по вертикали (допустим прижать его к нижней границе миню)

Для наглядности вот http://jsfiddle.net/Bizon4ik/VernX/

Заранее спасибо за ответ.

Edited by Bizon4ik
Link to comment
Share on other sites

  • 0

1. Почему в выше указаном коде не работатет vertical-align? (если удалить его или прописать что то типа vertical-align:10px; то нечего не меняется, тоесть текст не двигается)

2. Второй вопрос вытикает из первого: если vertical-align не работает то как в случае необходимость в этом меню выранивать текст по вертикали (допустим прижать его к нижней границе миню)

Может вопросы не понятные? Вы напишите в какой части, я попробую перефразировать.

Edited by Bizon4ik
Link to comment
Share on other sites

  • 0
1. Почему в выше указаном коде не работатет vertical-align? (если удалить его или прописать что то типа vertical-align:10px; то нечего не меняется, тоесть текст не двигается)

Из-за display: block. Vertical-align работает только в инлайновом контексте, для инлайновых элементов, либо для элементов с display: table-cell.

2. Второй вопрос вытикает из первого: если vertical-align не работает то как в случае необходимость в этом меню выранивать текст по вертикали (допустим прижать его к нижней границе миню)

Как вариант, делать меню псевдотаблицей, с display:table у контейнера и table-cell у пунктов. Иначе, пожалуй, в общем случае — только с помощью дополнительных оберток.

В частных случаях (когда текст гарантированно в одну строку и т.п.) можно «поиграть» с верхним паддингом. В очень скором будущем появятся новые CSS-механизмы (напр. flexbox), с которыми это станет проще.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy