Анонс курса! Сложно, знаете ли!))

Уважаемые специалисты и асы, оцените пжл верно ли я вообще мыслю.
Обязательно ли задавать . post относительное позиционирование?
Спасибо!
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 .post-title {
position: absolute;
left: 85px;
font-size: 20px;
color: #2980b9;
}
.post .post-date {
width: 38px;
height: 20px;
background: white;
font-size: 15px;
font-weight: bold;
border-bottom: 5px solid #bdc3c7;
padding: 20px 10px 15px 8px;

}
.post .post-author {
position: absolute;
left: 85px;
top: 80px;
}
.post .post-author a, .post-stats a {
text-decoration: none;
color: #2980b9;
}
.post .post-stats {
display: inline-block;
}

.post-stats > .icon-tags ~ a {
position: absolute;
left: 105px;
top: 100px;
}
.post-stats > .icon-tags ~ a:last-child {
position: absolute;
left: 162px;
top: 100px;
}
.post-stats > .icon-comments ~ a {
position: absolute;
left: 260px;
top: 100px;
}
.post-stats .icon-tags {
background-image: url("/assets/course14/post-challenge.png");
background-repeat: no-repeat;
background-position: 0 0;
position: absolute;
left: 85px;
top: 100px;

}
.post-stats .icon-comments {
background-image: url("/assets/course14/post-challenge.png");
background-repeat: no-repeat;
background-position: -20px 0;
position: absolute;
left: 240px;
top: 100px;
}
.post-stats .icon {
width: 15px;
height: 15px;
}
.post .post-text {
background: white;
width: 165px;
padding: 15px;
border-bottom: 5px solid #bdc3c7;
position: absolute;
left: 85px;
top: 114px;
padding: 15px;
}
.post .post-type {
margin-top: 10px;
background-image: url("/assets/course14/quotes.png");
background-position: center;
background-repeat: no-repeat;
background-color: #7f8c8d;
width: 55px;
height: 55px;
border-bottom: 5px solid #bdc3c7;
}
/*
Все размеры, отступы, координаты, размеры шрифтов (не заданные в body) кратны 5 или 10.
Адреса картинок:
/assets/course14/quotes.png
/assets/course14/post-challenge.png
Картинка «кавычки» выровнена по центру
*/

Что-то у вас слишком много абсолюта вышло.
position: absolute должно применяться в исключительных случаях - например, чтобы аккуратно разместить декоративный элемент, приписывать его всем элементам не нужно. Абсолютно спозиционированные элементы вырываются из потока, соседи о них ничего не знают. А у вас получились практически все абсолютные и независимые. А теперь представьте, что будет, если у вас текста в заголовке или в абзаца станет чуть больше, или ссылка из “интенсива” превратится в “базовый интенсив” - размер элемента увеличится, но его “соседи” ничего об этом знать не будут и место ему уступать не станут. И получится, что один блок наезжает на другой.

1 лайк

по поводу относительного позиционирования: задавая относительное позиционирование родительскому элементу, мы создаем новую точку начала координат для дочернего “абсолютного” элемента, мы “связываем” родителя и дочерний элемент - и если положение родителя изменится, то положение дочернего элемента изменится вслед за ним.

Да, конечно, спасибо, за разъяснения. Пойду переделывать)

А вот использовать абсолютное позиционтрование только в исключительных случаях - а какой тогда способ передвижения элемента универсальный или предпочтительный?

смотря какой вы элемент двигаете: если декоративный (например, разместить иконку рядом со ссылкой) - то позиционирование; если разметить сетку страницы - например, разместить элементы в несколько колонок - то флоаты или ещё лучше флексы

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 {
position: relative;
}
.post .post-title {
font-size: 20px;
color: #2980b9;
float: right;

}
.post .post-date {
width: 55px;
background: #ffffff;
font-size: 15px;
font-weight: bold;
border-bottom: 5px solid #bdc3c7;
line-height: 55px;
text-align: center;

}
.post .post-author {
position: absolute;
left: 80px;
top: 30px;
}
a {
text-decoration: none;
color: #2980b9;
}
.post .post-stats {
display: inline-block;
}

.post-stats > .icon-tags ~ a {
position: absolute;
left: 100px;
top: 50px;
}
.post-stats > .icon-tags ~ a:last-child {
position: absolute;
left: 155px;
top: 50px;
}
.post-stats > .icon-comments ~ a {
position: absolute;
left: 250px;
top: 50px;
}
.post-stats .icon-tags {
background-image: url("/assets/course14/post-challenge.png");
background-repeat: no-repeat;
background-position: 0 0;
position: absolute;
left: 80px;
top: 50px;
}
.post-stats .icon-comments {
background-image: url("/assets/course14/post-challenge.png");
background-repeat: no-repeat;
background-position: -20px 0;
position: absolute;
left: 230px;
top: 50px;
}
.post-stats .icon {
width: 15px;
height: 15px;
}
.post .post-text {
background: white;
width: 165px;
padding: 10px;
border-bottom: 5px solid #bdc3c7;
padding: 15px;
display: inline-block;
float: right;
margin-top: 5px;

}
.post .post-type {
margin-top: 10px;
background-image: url("/assets/course14/quotes.png");
background-position: center;
background-repeat: no-repeat;
background-color: #7f8c8d;
width: 55px;
height: 55px;
border-bottom: 5px solid #bdc3c7;
float: left;

}
/*
Все размеры, отступы, координаты, размеры шрифтов (не заданные в body) кратны 5 или 10.
Адреса картинок:
/assets/course14/quotes.png
/assets/course14/post-challenge.png
Картинка «кавычки» выровнена по центру
*/

ох, давайте разбираться ещё раз. Абсолют используем только для декоративных элементов. Что у нас здесь декоративного? Это во-первых, иконки. Дальше, к декоративным можно отнести квадратики с датой и кавычками - у них заданы фиксированные размеры и можно надеяться, что они не будут меняться и влиять на поток документа. Всё. На этом декоративные элементы закончились.
Абсолютно спозиционированные элементы нужно “привязать” к своим родителям - чтобы при смещении той же ссылки, иконка двигалась вместе с ней. Находим родителей и задаем им относительное позиционирование.

Дальше, если теперь посмотреть на наш пост без декоративных элементов (без квадратиков) - то это просто блок информации с пустым полем слева (на это пустое поле мы и позиционировали квадратики). Это одна колонка, поэтому никакие флоаты не нужны. Представьте, что у вас есть див с текстом - как сделать, чтобы текст был смещен вправо, а слева была пустая область? Задать внутренний отступ слева - и все содержимое сместиться вправо. Точно так же и здесь: у нас есть див-обертка .post и есть его содержимое (заголовок, ссылки, текст), которое нужно сместить вправо, чтобы слева осталось пустое поле. (иконки рядом ссылками мы будем размещать по точно такой же схеме: задаем падинг родителю, чтобы отодвинуть содержимое-ссылку и освободить место под иконку)

3 лайка

Tala, большое спасибо! Вроде теорию выучила но в голове как то не улеглось как это применять на практике…спасибо за подсказку или даже за целый урок)))!

вообще оно само как-то укладывается в голове по мере прохождения курсов. А после интенсива - так вообще: раскладывается по полочкам и достается только нужное.

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 {
padding-left: 75px;
position: relative;
}
.post .post-title {
font-size: 20px;
color: #2980b9;
margin-bottom: 5px
}
.post .post-date {
width: 55px;
background: #ffffff;
font-size: 15px;
font-weight: bold;
border-bottom: 5px solid #bdc3c7;
line-height: 55px;
text-align: center;
position: absolute;
left: 0px;
top: 0px;
}
a {
text-decoration: none;
color: #2980b9;
}
.post .post-stats {
padding-left: 20px;
margin-right: 10px;
margin-top: 5px;
position: relative;
display: inline-block;
}
.post-stats .icon-tags {
background-position: 0 0;
left: 0px;
}
.post-stats .icon-comments {
background-position: -20px 0;
left: 0px;
}
.post-stats .icon {
width: 15px;
height: 15px;
background-image: url("/assets/course14/post-challenge.png");
background-repeat: no-repeat;
position: absolute;
}
.post .post-text {
background: white;
width: 165px;
padding: 10px 15px;
border-bottom: 5px solid #bdc3c7;
}
.post .post-type {
margin-top: 10px;
background-image: url("/assets/course14/quotes.png");
background-position: center;
background-repeat: no-repeat;
background-color: #7f8c8d;
width: 55px;
height: 55px;
border-bottom: 5px solid #bdc3c7;
position: absolute;
left: 0px;
top: 60px;
}
/*
Все размеры, отступы, координаты, размеры шрифтов (не заданные в body) кратны 5 или 10.
Адреса картинок:
/assets/course14/quotes.png
/assets/course14/post-challenge.png
Картинка «кавычки» выровнена по центру
*/