Постарался не дублировать свойства, чтобы было меньше 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). есть и другие способы.
Что думаете?