Испытание 18/18 (98% - не бьет .post-stats)


#1

html,
body {
margin: 0;
padding: 0;
}
body {
width: 280px;
min-height: 250px;
padding-top: 50px;
padding-left: 10px;
padding-right: 10px;
font-size: 12px;
font-family: “Arial”, sans-serif;
line-height: 1.2;
color: #7f8c8d;
background: #ecf0f1;
}
.post-title {
color: #2980b9;
font-size: 20px;
position: relative;
left: 75px;
width: 205px;
}
.post-date {
position: absolute;
top: 50px;
border-bottom: 5px solid #bdc3c7;
width: 55px;
height: 55px;
line-height: 55px;
background: #ffffff;
font-weight: bold;
font-size: 15px;
text-align: center;
}
.post-type {
position: absolute;
top: 100px;
margin-top: 20px;
width: 55px;
height: 55px;
border-bottom: 5px solid #bdc3c7;
background: #7f8c8d url(/assets/course14/quotes.png) no-repeat 50% 50%
}
.post-author {
position: relative;
left: 75px;
padding: 5px 0;
color: #7f8c8d;
font-size: 12px;
}
.post-author a {
color: #2980b9;
text-decoration: none;
position: relative;
}
.post-stats {
display: inline;
position: relative;
left: 75px;
margin-right: 10px;
}
.post-stats .icon,
.post-stats a {
display: inline-block;
position: relative;
}
.post-stats a {
color: #2980b9;
text-decoration: none;
font-size: 12px;
position: relative;
vertical-align: top;
}

.post-stats .icon {
width: 16px;
height: 16px;
}
.icon-tags {
background: url(/assets/course14/post-challenge.png) no-repeat ;

}
.icon-comments {
background: url(/assets/course14/post-challenge.png) no-repeat -20px 0;
}
.post-text {
position: relative;
left: 75px;
top: -5px;
width: 165px;
padding: 10px 15px;
background-color: #ffffff;
color: #7f8c8d;
font-size: 12px;
border-bottom: 5px solid #bdc3c7;
}

Прокомментируйте, пожалуйста, код и подскажите в чем ошибка?


#2

Первое, что бросается в глаза - хаос кода=)
Во-первых, для начала код можно и сократить: вот это правило
color: #2980b9;
text-decoration: none;
достаточно прописать 1 раз для тега - а
Во-вторых, относительное позиционирование лучше будет прописать для всего контейнера .post и от этого уже отталкиваться по позиционированию.
В-третьих, в .post-stats .icon размеры 15на15 =) (Плюс здесь присутствует абсолютное позиционирование.) В этом испытании, вообще, всё кратно 5.


#3

спасибо за отзыв. совсем-совсем недавно начал изучать эту тему.
прошу прощение за тупой вопрос, но что значит “хаос кода” и как этого избежать?


#4

И еще: размер текста нужно указать только для .post-date и для .post-title
В остальном: font-size прописан в body - и всё=)


#5

Много лишнего кода=) Чем короче код - тем он лучше и быстрее будет обрабатываться браузером или сервером (да и приятней, и понятней его визуализация). Старайтесь правила по-возможности объединять в один селектор. Вот как здесь для тега а.


#6

Огромное спасибо за советы!


#7

попытался внести меньше хаоса. в целом все сошлось.
Можете прокомментировать решение?
html,
body {
margin: 0;
padding: 0;
}

body {
width: 280px;
min-height: 250px;
padding-top: 50px;
padding-left: 10px;
padding-right: 10px;
font-size: 12px;
font-family: “Arial”, sans-serif;
line-height: 1.2;
color: #7f8c8d;
background: #ecf0f1;
}
.post {
position: relative;
}
.post-stats .icon {
position: absolute;
width: 15px;
height: 15px;
}
.post a {
text-decoration: none;
color: #2980b9;
}
.post-date,
.post-type {
top: 0;
width: 55px;
height: 55px;
border-bottom: 5px solid #bdc3c7;
position: absolute;
}
.post-date {
background: #ffffff;
line-height: 55px;
text-align: center;
font-weight: bold;
font-size: 15px
}
.post-type {
top: 70px;
background: ;
background: #7f8c8d url(/assets/course14/quotes.png) no-repeat 50% 50%;
}
.post-title,
.post-author,
.post-stats,
.post-text {
position: relative;
left: 75px;
}
.post-title {
color: #2980b9;
font-size: 20px;
}
.post-author {
margin: 5px 0;
}
.post-stats {
display: inline-block;
margin-right: 30px;
left: 95px;
}
.post-stats .icon-tags {
background: url(/assets/course14/post-challenge.png) no-repeat;
left: -20px
}
.post-stats .icon-comments {
background: url(/assets/course14/post-challenge.png) no-repeat -20px 0;
left: -20px
}
.post-text {
width: 165px;
background: #ffffff;
padding: 10px 15px;
border-bottom: 5px solid #bdc3c7;
}


#8

Координаты для позиционированных элементов задаются по двум точкам, например: left: 5px; top: 5px; - т.е. за точку отсчета берется левый верхний угол. Вы почему-то по одной пишете.

.post-type {
top: 70px;
background: ;
background: #7f8c8d url(/assets/course14/quotes.png) no-repeat 50% 50%;
} - лишний пустой background

Если бы делали реальный сайт, для позиционированных элементов отступы по умолчанию лучше обнулять, чтобы не вышло неожиданностей.


#9

Спасибо за ответ.
left:0 не писал из-за мысли, что оно по умолчанию left:0. Это не так?


#10

Хотела найти объяснения, но что-то не получилось=) Да, по умолчанию - 0, но всё-таки прописывать его надо, нельзя использовать координаты не парно - просто запомните это. Если найду объяснение этому, напишу. Могу предположить, что это связано с браузерами, ведь такая штука, как “по умолчанию” - вроде их прерогатива=)


#11

Возможно, дело в том, что какой-нибудь браузер может иметь свои представления о том, что есть “по умолчанию”? Так что лучше просто перестраховываться и прописывать даже нули, чтобы не получилось неожиданностей