28/28, Мастерская: создаем меню . Интересно Ваше мнение, задание сделано на 100%.


#1

Постарался не дублировать свойства, чтобы было меньше CSS. Но, может все таки можно сделать еще лучше?

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

body {
width: 380px;
min-height: 280px;
padding: 10px;

font-size: 14px;
line-height: 1.4;
font-family: “Arial”, sans-serif;

background-color: #ecf0f1;
}

.main-menu {
position: relative;
list-style: none;
margin: 0;
padding: 0;
}

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

.main-menu a {
width: 170px;
color: #ffffff;
display: block;
padding: 10px 15px;
}

.main-menu > li > a {
background-color: #2980b9;
border-bottom: 2px solid #2c3e50;
text-decoration: none;
}

.main-menu .sub-menu a {
background-color: #1abc9c;
border-bottom: 2px solid #2ecc71;
text-decoration: none;
}

.main-menu .sub-menu {
position: absolute;
/* display: none; /
z-index: 10; /
по сути тут можно и без него, но решил для полноты оставить */
top: 41px;
left: 180px;
}

.main-menu .open > a {
background-color: #1abc9c;
}

/* .main-menu li:hover .sub-menu {
display: block;
} убираем комментарии и получаем работающий псевдокласс */


И очень интересно Ваше мнение в части позиционирования, в своем примере подменю я позиционировал относительно “главного” меню и поэтому получился top: 41px;, что не совсем подходит под правило - “все размеры и отступы кратны 5;”.
Того же эффекта и без нарушения требований можно добиться банальным позиционированием относительно элемента с классом “.open”. (top тогда будет 0). есть и другие способы.
Что думаете?


#2

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

body {
width: 380px;
min-height: 280px;
padding: 10px;

font-size: 14px;
line-height: 1.4;
font-family: “Arial”, sans-serif;

background-color: #ecf0f1;
}
.main-menu{
background:#2980b9;
margin:0;
padding:0;
list-style:none;
width:200px;
position:relative;
}
.main-menu >li{
border-bottom: 2px solid #2c3e50;

}
.main-menu li a{
display:block;
padding: 10px 15px;
color:white;
text-decoration:none;
}
.sub-menu{
margin:0;
padding:0;
position:absolute;
width:200px;
list-style:none;
background-color:#1abc9c;
top:41px;
left:180px;
}
.sub-menu li{
border-bottom: 2px solid #2ecc71;
}
.open{
background-color:#1abc9c;
}
Вот проще;)