15/28; 28/28 прошу оценки!

 html,

body {
margin: 0;
padding: 0;
}

body {
width: 280px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu {
width: 200px;
padding: 0;
margin: 0;
list-style: none;
background: #2980b9;
}

.main-menu > li > a {
display: block;
color: #ffffff;
padding:10px 15px;
text-decoration: none;
border-bottom: 2px solid #2c3e50;
}
.main-menu ul {
padding: 10px 0;
list-style: none;
border-bottom: 2px solid #2c3e50;
background-color: #ffffff;
}
.main-menu ul a {
display: block;
padding: 5px 15px;
color: #2980b9;
}
.main-menu .active {
background-color: #1abc9c;
}

/

Хороший код, у меня замечаний нет.

Объясните пожалуйсто, почему когда в .main-menu ul убираем паддинг, блок смещается в право, а не в лево?

Что конкретно вы имеете в виду, то что стираете строчку со свойством padding из кода или то что обнуляете отступ?

Я так думаю, товарищ имеет ввиду - если убрать отступы слева и справа.
Смещается не контейнер (.main-menu ul), а его содержимое блоки (.main-menu ul a). А они - вложенный список. И этот отступ формируется автоматически.
Если я не прав поправьте.

Да, скорее всего он говорит об отступе по умолчанию. Посмотрим, что ответит.

Имею ввиду если стерет строку со свойством. Т.е. блок ул прилипает к правому краю, а не к левому, почему?

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

Спасибо! Тогда чему равно значеное авто? и почему оно смещает именно в правую сторону?

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

Будьте добры - гляньте.
Наверное можно было короче.

html,
body {
margin: 0;
padding: 0;
}

body {
width: 380px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu {
position: relative;
margin: 0;
padding: 0;
}
.main-menu > li {
width: 200px;
background: #2980b9;
border-bottom: 2px solid #2c3e50;
list-style: none;
}
.main-menu li a {
display: inline-block;
color: #ffffff;
text-decoration: none;
margin: 10px 15px;
}
.main-menu .sub-menu {
display: none;
position: absolute;
z-index: 10;
left: 180px;
padding :0 ;
margin: 0;
list-style: none;
}
.main-menu .sub-menu li {
width: 200px;
border-bottom: 2px solid #2ecc71;
}
.main-menu .opened:hover .sub-menu {
display: inline-block;
background: #1abc9c;
}
.main-menu .opened {
background: #1abc9c;
}

Codepen

1 лайк

Очень интересный ваш вариант. Сначала я не поняла, зачем здесь inline-block, но потом…
Гениальное решение, я бы сказала. Единственное, что margin: 10px 15px; я бы заменила на padding, чтобы ссылка была большего размера и width: 200px; задавала бы контейнеру, а не пункту списка li.

Спасибо!
Вы мне льстите.:slight_smile:
Я не знаю, что меня подвигло использовать inline-blocк, но с ним как-то всё просто сложилось.

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