<style>
@media screen and (min-width: 980px){
/* Общие настройки контейнера */
.t-feed__post-popup__container.t-container {
display: flex;
flex-direction: row;
gap: 40px; /*Отступ между колонками*/
}
}
/* Стили популярных новостей */
.js-feed-relevants.t-feed__post-popup__relevants {
height: fit-content; /*Высота блока подстраивается под контент внутри*/
min-height: 40dvh; /*Минимальная высота блока*/
max-height: calc(100dvh - 220px);
width: 440px !important; /*Ширина блока*/
padding: 30px; /*Отступы внутри блока */
box-sizing: border-box;
background-color: #f6f6f6; /*Фоновый цвет*/
border-radius: 16px;/*Скругление углов*/
position: sticky;
top: 100px; /*Отступ сверху, когда начинается прилипание блока*/
overflow-y: auto;
}
/*Заголовок популярных новостей*/
.t-feed__post-popup__relevants-title-wrapper {
padding: 0 !important;
margin: 0 !important;
}
.t-feed__post-popup__relevants-title {
margin: 0 0 30px 0; /*Отступ снизу у заголовка*/
font-size: 20px !important; /*Рамзер заголовка*/
}
/*Карточки популярных новостей*/
.t-feed__post-popup__relevants-wrapper {
display: flex;
flex-direction: column; /*Располагаем элементы в колонку*/
gap: 10px; /*Отступ между карточками*/
}
.t-feed__post-popup__relevants-item {
padding: 0 !important;
margin: 0 !important;
}
.t-feed__post-popup__relevants-content,
.t-feed__post-popup__relevants-item a{
display: flex;
flex-wrap: wrap;
flex-direction: column;
gap: 15px; /*Отступ от изображения до текста*/
}
.t-feed__post-popup__relevants-textwrapper {
width: 100%;
padding: 0 10px 10px 10px; /*Отступы у текста*/
box-sizing: border-box;
}
.t-feed__post-popup__relevants-imgwrapper {
width: 100% !important;
height: 100px !important;
margin: 0 !important;
border-radius: 10px; /*Скругление картинки*/
overflow: hidden;
padding-bottom: 0 !important;
}
.t-feed__post-popup__relevants-item-wrapper,
.t-feed__post-popup__relevants-item{
padding: 5px !important; /*Отступы вокруг всей карточки популярной новости*/
background-color: #ffffff; /*Фоновый цвет популярной новости*/
border-radius: 12px; /*Скругление углов*/
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box;
}
/*Заголовок популярной новости*/
.t-feed__post-popup__relevants-item-title{
font-size: 14px; /*Размер текста*/
overflow:hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /*Количество строк текста, которое будет отображаться*/
-webkit-box-orient: vertical;
}
/*Описание популярной новости*/
.t-feed__post-popup__relevants-item-descr {
font-size: 12px; /*Размер текста*/
overflow:hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3; /*Количество строк текста, которое будет отображаться*/
-webkit-box-orient: vertical;
}
/*Стили самой новости*/
.t-feed__post-popup__content-wrapper {
width: 100%;
padding: 40px; /*Отступы*/
background-color: #f6f6f6; /*Фоновый цвет*/
border-radius: 16px; /*Радиус скругления*/
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.t-feed__post-popup__content {
max-width: 100%;
margin: 0 !important;
}
/*Скрываем лишний блок с комментариями*/
.t-feed__post-popup__content-wrapper:has(.js-feed-comments) {
display: none;
}
/*Стили хэдера статьи*/
.dbmHeaderNew .t-feed__post-popup__img {
max-width: 100%;
height: 300px; /*Высота картинки*/
width: 100%;
object-fit: cover;
object-position: center;
}
.dbmHeaderNew {
padding: 10px; /*Отступы*/
background-color: white; /*Фоновый цвет*/
border-radius: 16px; /*Радиус скругления углов*/
}
.dbmHeaderNew .t-feed__post-popup__cover-wrapper{
border-radius: 12px; /*Скругление углов картинки*/
overflow: hidden;
}
.dbmHeaderNew .t-feed__post-popup__title-wrapper {
padding: 10px 20px 0 20px; /*Отступы у заголовка*/
}
.dbmHeaderNew .t-feed__post-popup__date-parts-wrapper{
padding: 0 20px 20px; /*Отступы у даты и раздела*/
}
/*Стили блока, который появляется при скроле*/
.dbmHeaderNew.sticky {
display: grid;
grid-template-columns: 80px auto; /*80 – ширина картинки*/
grid-template-rows: auto auto;
gap: 10px 20px; /*Отступы между рядами и колонками*/
padding: 10px; /*Отступ вокруг*/
border-radius: 16px; /*Радиус скругления*/
background-color: #232323 !important; /*Цвет фона плашки*/
}
.dbmHeaderNew.sticky {
position: sticky;
top: 100px; /*Отступ сверху, когда начинается прилипание блока*/
}
/*Заголовок внутри плашки*/
.dbmHeaderNew.sticky .t-feed__post-popup__title-wrapper {
grid-column: 2/3;
height: auto;
align-self: flex-end;
padding: 0 !important;
}
.dbmHeaderNew.sticky .t-feed__post-popup__title-wrapper h1 {
color: white !important;
font-size: 18px !important;
}
/*Дата и раздел внутри плашки*/
.dbmHeaderNew.sticky .t-feed__post-popup__date-parts-wrapper{
grid-column: 2/3;
align-self: flex-start;
padding: 0;
}
.dbmHeaderNew.sticky .t-feed__post-popup__date-parts-wrapper span {
color: white; /*Цвет даты и раздела*/
opacity: 1 !important;
}
.dbmHeaderNew.sticky #feed-cover {
margin: 0;
grid-row: 1/3; /*Фото внутри плашки занимает всю высоту*/
}
.dbmHeaderNew.sticky .t-feed__post-popup__img {
height: 100%;
width: 100%;
}
@media screen and (max-width: 979px){
/* Общие настройки контейнера */
.t-feed__post-popup__container.t-container {
flex-direction: column;
gap: 40px; /*Отступ между колонками*/
}
/* Стили популярных новостей */
.js-feed-relevants.t-feed__post-popup__relevants {
height: 100% !important;
min-height: 100%;
max-height: 100%;
width: 100% !important; /*Ширина блока*/
}
/*Карточки популярных новостей*/
.t-feed__post-popup__relevants-wrapper {
display: grid;
grid-template-columns: 1fr 1fr; /*Количество карточек популчрных новостей*/
gap: 10px; /*Отступ между карточками*/
}
}
@media screen and (max-width: 560px){
.dbmHeaderNew.sticky #feed-cover{
display: none; /*Скрываю фото в плашке на мобилках*/
}
/*Заголовок внутри плашки*/
.dbmHeaderNew.sticky .t-feed__post-popup__title-wrapper {
grid-column: 2 span;
}
/*Дата и раздел внутри плашки*/
.dbmHeaderNew.sticky .t-feed__post-popup__date-parts-wrapper{
grid-column: 2 span;
}
/*Стили самой новости*/
.t-feed__post-popup__content-wrapper {
padding: 20px; /*Отступы*/
gap: 30px;
}
.dbmHeaderNew .t-feed__post-popup__title-wrapper h1{
font-size: 18px; /*Размер заголовка статьи на мобилке*/
}
.dbmHeaderNew .t-feed__post-popup__img {
max-width: 100%;
height: 200px;
}
/*Карточки популярных новостей*/
.t-feed__post-popup__relevants-wrapper {
grid-template-columns: 1fr; /*Количество карточек популчрных новостей*/
}
.dbmHeaderNew.sticky .t-feed__post-popup__title-wrapper h1 {
font-size: 14px !important; /*Размер заголовка в выпадающей плашке*/
}
}
</style>
<script>
// Создание нового div, который будет общим контейнером
let containerDiv = document.createElement('div');
containerDiv.className = 'dbmHeaderNew';
// Находим все элементы по заданным классам
let elementsToWrap = document.querySelectorAll('.t-feed__post-popup__title-wrapper, .t-feed__post-popup__date-parts-wrapper, .t-feed__post-popup__cover-wrapper');
// Находим блок, в начале которого нужно разместить containerDiv
let targetBlock = document.querySelector('.t-feed__post-popup__content-wrapper:first-child');
// Перемещение элементов и создание наблюдателя добавляется в DOMContentLoaded, чтобы обеспечить, что DOM полностью загружен
document.addEventListener('DOMContentLoaded', () => {
// Убедитесь, что targetBlock существует, чтобы избежать ошибок при попытке вставить перед несуществующим элементом
if (targetBlock) {
// Вставляем containerDiv в самое начало targetBlock
targetBlock.insertBefore(containerDiv, targetBlock.firstChild);
// Перемещаем найденные элементы в общий контейнер
elementsToWrap.forEach(element => {
// Перемещение каждого элемента в containerDiv
containerDiv.appendChild(element);
});
// После того как элементы перемещены, настраиваем наблюдатель IntersectionObserver
const header = document.querySelector('.dbmHeaderNew');
if (!header) return;
let headerClone = null;
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (!entry.isIntersecting) {
// Если исходный блок не виден и его клон еще не создан
if (!headerClone) {
headerClone = header.cloneNode(true); // Клонируем элемент
headerClone.classList.add('sticky'); // Добавляем класс 'sticky'
header.parentNode.insertBefore(headerClone, header.nextSibling); // Вставляем клон сразу после оригинала
}
} else {
// Если исходный блок снова виден, удаляем его клон
if (headerClone) {
headerClone.remove();
headerClone = null;
}
}
});
}, {
threshold: 0,
rootMargin: '0px'
});
observer.observe(header);
} else {
console.log('Целевой блок .t-feed__post-popup__content-wrapper не найден.');
}
});
</script>