Задание 15

Правильно ли написан код (с точки зрения профессионала) ?
Как можно упростить данный код?

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: 0px;
margin: 0px;
}

.main-menu .active>a {
display: block;
border-bottom: 2px solid #2C3E50;
background-color: #1ABC9C;
padding: 10px 15px;
}

.main-menu>li {
background-color: #2980B9;
border-bottom: 2px solid #2C3E50;
list-style: none;
padding: 0px;
}

.main-menu ul {
list-style: none;
margin: 0;
background-color:#FFFFFF;
padding: 0px;
padding: 10px 15px;
}

.main-menu>li>a {
display: block;
text-decoration: none;
color:#FFFFFF;
padding: 10px 15px;
}

.main-menu ul li {
padding:5px 0px;
}

.main-menu ul a {
color:#2980B9;
}

1 лайк

Всё хорошо написано, даже придираться не к чему. Ну разве что если величина отступа равна нулю, то единица измерения не пишется: padding: 0; padding: 5px 0;

2 лайка

Мне кажется ваш код можно упростить

Вместо
.main-menu .active>a {
display: block;
border-bottom: 2px solid #2C3E50;
background-color: #1ABC9C;
padding: 10px 15px;
}

оставить лишь
**.main-menu .active>a { **
background-color: #1ABC9C;
}
т.к. все остальные свойства переходят от .main-menu>li>a {

и логичней, border-bottom: 2px solid #2C3E50; указать

  1. не в пунктах меню, а в ссылках (т.е. в .main-menu>li>a {, тогда не надо задавать дополнительно нижнюю границу для активного блока) и
  2. блоку подменю, т.е. в .main-menu ul {

Здесь
.main-menu ul {
list-style: none;
margin: 0;
background-color:#FFFFFF;
padding: 0px;
padding: 10px 15px;
}

и здесь
.main-menu>li {
background-color: #2980B9;
border-bottom: 2px solid #2C3E50;
_list-style: none; _
padding: 0px;
}

убрать margin и padding с нулевыми значениями.

т.о. весь код сократится до:
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: 0px;
margin: 0px;
}

.main-menu .active>a {
background-color: #1ABC9C;
}

.main-menu>li {
background-color: #2980B9;
list-style: none;
}

.main-menu ul {
list-style: none;
background-color:#FFFFFF;
padding: 10px 15px;
border-bottom: 2px solid #2C3E50;
}

.main-menu>li>a {
display: block;
text-decoration: none;
color:#FFFFFF;
padding: 10px 15px;
border-bottom: 2px solid #2C3E50;
}

.main-menu ul li {
padding:5px 0px;
}

.main-menu ul a {
color:#2980B9;
}

1 лайк

Получилось сделать на один селектор короче)
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 {
padding:0px;
margin:0px;
width:200px;
}
.main-menu>li {
background-color:#2980B9;
}
.main-menu>li>a {
text-decoration:none;
color:#FFFFFF;
display:block;
padding:10px;
border-bottom:2px solid #2C3E50;
padding-left:15px;

}
.main-menu .active >a {
background-color:#1ABC9C;
}
.main-menu ul {
list-style:none;
background-color:#FFFFFF;
padding: 10px 15px;
border-bottom: 2px solid #2C3E50;
}
.main-menu a {
display:block;
padding:5px;
padding-left:0px;
color:#2980B9;
}

2 лайка

Забавно, я тоже использовала .main-menu > li но для другого селектора - выходит от него можно избавиться (background в .main-menu).

.main-menu {
    width: 200px;
    margin: 0;
    padding: 0;
    background: #2980b9;
}

.main-menu > li {
    border-bottom: 2px solid #2c3e50;
}

.main-menu li a {
    display: block;
    text-decoration: none;
    list-style: none;
    padding: 10px 15px;
    color: #fff;
}

.main-menu .active {
    background: #1abc9c;
}

.main-menu ul {
    padding: 10px;
    list-style: none;
    background: #fff;
    border-top: 2px solid #2c3e50;
}

.main-menu li li a {
    padding: 5px;
    color: #2980b9;
    text-decoration: underline;
}

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: 0px;
margin: 0px;
list-style: none;
}
.main-menu>li {
background-color: #2980b9;
}
.main-menu>li>a {
text-decoration: none;
color: #ffffff;
display: block;
padding: 10px 15px;
border-bottom: 2px solid #2c3e50;
}
.main-menu ul {
display: block;
border-bottom: 2px solid #2c3e50;
padding: 10px;
list-style: none;
background: #ffffff;
}
.active li {
padding: 5px 5px;
}
.active li a {
color: #2980b9;
}
.main-menu>li:hover {
background: #1abc9c;
}
.main-menu>li:nth-child(1) {
background: #1abc9c;
}

а почему вы в случае основного меню паддинги прописали ссылкам, а в случае подменю - уже для li? чем ссылки в подменю хуже, что вы их отступами обделили?

По другому не получалось и, основываясь на визуализации, я нашел такое решение, как всегда оригинальное )))

а если из вот этого правила:

 .active li {
padding: 5px 5px;
}

паддинги перенести вот сюда:

   .active li a {
color: #2980b9;
}

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

Тут я уже думал о цвете, т.к. отступы пришли в норму ))) Я не волшебник!!! Я только учусь )))