html, body {
margin: 0;
padding: 0;
}
body {
width: 430px;
min-height: 280px;
padding: 10px;
font-family: Arial, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu li{
display:inline-block;
white-space:nowrap;
margin-left:-4px
}
.main-menu{
padding:0;
margin:0 0 0 4px;
width:426px;
background:#2980B9;
}
.main-menu a{
display:block;
padding:10px 15px;
background:#2980B9;
color:#fff;
text-decoration:none;
border-left:2px solid #2C3E50;
}
.main-menu .active a{
background:#1ABC9C;
}
li:nth-child(1) a{
margin-right:-1px;
}
li:nth-child(2) a{
margin-right:-1px;
}
li:nth-child(3) a{
margin-right:-1px;
}
если что это Мастерская: создаём меню / Испытание: горизонтальное меню [20/28]
Вот мой код:
.main-menu {
list-style: none; /* может и не нужен, когда проходил задание, писал на автомате */
margin: 0;
padding: 0;
background-color: #2980B9;
/* Указывать ширину для этого блока нет необходимости */
}
.main-menu li {
display: inline-block;
margin-right: -5px; /* Этот марджин применяется к элементам списка, поэтому селекторы вида: li:nth-child(n) a {} с марджинами — не нужны */
}
.main-menu a {
border-left: 2px solid #2C3E50;
display: block;
background-color: #2980B9;
padding: 10px 15px;
color: #fff;
text-decoration: none;
}
.main-menu .active a {
background-color: #1ABC9C;
}
На абсолютную истину не претендую.
У меня такой код получился на 100%:
html,
body {
margin: 0;
padding: 0;
}
body {
width: 430px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu{
margin: 0 ;
padding: 0 0 0 5px;
width:427px;
}
.main-menu li{
display: inline-block;
margin-left: -4px;
white-space:nowrap;
}
.main-menu a{
display: block;
text-decoration: none;
border-left:2px solid #2c3e50;
color: #ffffff;
background: #2980b9;
padding:10px 15px;
margin-left: -1px;
}
.main-menu .active a{
background-color: #1abc9c;
}
.main-menu li:nth-child(4){
width:135px}
Величина не кратна пяти. Отрицательный отступ в 5px разделили на два, зачем - не понятно.
Если этого не сделать, то последний элемент у меня “выпадает” на следующую строку- не вмещается. Поэтому немного увеличил. Можно сделать и больше, кратно 5, но главное - не меньше
а зачем вам вообще задавать ширину? ul - блочный элемент и по умолчанию растянется на всю ширину родителя.
Потому что, если не задавать, то не получится 100%
а как же у меня без ширины 100% получилось? наверное, магия и личное обаяние.
ну а если серьезно, то вот вы сами пишите:[quote=“armornik, post:6, topic:2873”]
Если этого не сделать, то последний элемент у меня “выпадает” на следующую строку- не вмещается. Поэтому немного увеличил. Можно сделать и больше, кратно 5, но главное - не меньше
[/quote]
ближайшее “больше чем 427, но при этом кратное 5” - это 430рх. А это в свою очередь - ширина, прописанная для боди. Т.е. та ширина, на которую ul и так растянется по умолчанию, если width не прописывать.
Мой код таков. Единственная трудность с которой столкнулся - нехватка ширины в последнем блоке. В итоге методом тыка дошёл до 136 px и тогда вышло 100%. Где я ошибся?
.main-menu{
list-style: none;
margin: 0;
padding: 0;
}
.main-menu li{
display: inline-block;
background-color: #2980B9;
margin-right: -5px;
}
.main-menu li:last-child{
width: 136px;
}
.main-menu .active{
background-color: #1ABC9C;
}
.main-menu a{
display: block;
color: #fff;
text-decoration: none;
padding: 10px 15px;
border-left: 2px solid #2C3E50;
}
а если точнее - нехватка окрашенной области в конце меню.
если вы зададите синий цвет не пунктам меню (li), а для всего списка ul, то вам не придется подбирать ширину последнего пункта
Мой 100% вариант решения задачи. Пользуйтесь!)
html,
body {
margin: 0;
padding: 0;
}
body {
width: 430px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu{
padding: 0;
background: #2980b9;
margin: 0;
}
.main-menu li{
display: inline-block;
margin-right: -5px;
}
.main-menu li a{
display: block;
padding: 10px 15px;
border-left: 2px solid #2c3e50;
text-decoration: none;
color: white;
}
.main-menu .active a{
background: #1abc9c;
}
Вроде самый минимальный код, 100% решение
/* Общий блок меню /
.main-menu {
width: 200px;
margin: 0;
padding: 0;
list-style: none;
}
/ Все ссылки меню /
.main-menu a {
padding: 10px 15px;
display: block;
color: white;
text-decoration: none;
background: #2980b9;
border-bottom: 2px solid #2c3e50;
}
/ Верхняя ссылка /
.main-menu .active > a {
background: #1abc9c;
}
/ Блок подменю /
.active ul {
list-style: none;
padding: 10px 0;
border-bottom: 2px solid #2c3e50;
background: white;
}
/ Ссылки блока подменю */
.active ul a {
padding: 5px 15px;
color: #2980b9;
background: white;
text-decoration: underline;
border: 0;
}
97 % и без ‘костылей’
Код
body,html{margin:0;padding:0}body{width:430px;min-height:280px;padding:10px;font-family:“Arial”, sans-serif;font-size:14px;line-height:1.4;background:#ecf0f1}body ul{margin:0;padding:0}body ul li{display:inline-block;background-color:#2980b9;padding:10px;border-left:2px solid #2c3e50;margin-left:-5px}body ul li a{text-decoration:none;color:#fff}body ul li:hover{background-color:#1abc9c}
просто не люблю попадать в пиксели
Следите за форматированием кода. В этой “каше” не разобраться.
Это препроцессор так скомпилировал )
Не знаю насколько правильно,но зато коротко получилось)
.main-menu {
margin-left: -40px;
margin-top: 0px;
}
li {
list-style: none;
display: inline-block;
border-left: 2px solid #2c3e50;
padding: 10px 15px;
margin-right: -5px;
background-color: #2980b9;
}
a {
color: white;
text-decoration: none;
}
.active {
background-color: #1abc9c;
}
li:last-child {
width: 89px;
}
display: block ???
20 минут решал проблему с последним блоком списка и только так получилось
html,
body {
margin: 0;
padding: 0;
}
body {
width: 600px;
min-height: 280px;
padding: 10px;
font-size: 14px;
line-height: 1.4;
font-family: “Arial”, sans-serif;
background-color: #ecf0f1;
}
.main-menu {
width: 400px;
margin: 0;
padding: 0;
list-style: none;
background: #2980b9;
}
.main-menu li {
display: inline-block;
margin-right: -5px;
}
.main-menu li a {
display: block;
padding: 10px 15px;
border-left: 2px solid #2c3e50;
text-decoration: none;
background-color: #2980b9;
color: #fff;
}
.main-menu .active a {
background-color: #1abc9c;
}
Кто то знает как решить его без 20 и 24 строки?