Автоматическая реклама AdSense заставляет сдвиг макета CLS
мы используем автоматические объявления AdSense и в целом очень им довольны. К сожалению, у нас возникла проблема с CLS (Cummulative Layout Shift) на нашем мобильном (!) Сайте. Мы проверили это, и проблемы определенно вызваны автоматической рекламой. После дальнейшего тестирования мы смогли определить, что именно липкие якорные объявления в области заголовка страницы запускают CLS. Важно: сдвиг происходит не при загрузке страницы, а при прокрутке вниз и вверх после того, как анкорное объявление появилось вверху. На этом этапе AdSense добавляет некоторые атрибуты стиля ко всем элементам на нашей странице, например. "высота: авто! важно;" У кого-нибудь тоже есть такая проблема? Что мы можем сделать? Мы не хотели бы обойтись без липких якорных объявлений. Важно: проблема только мобильная! Google AdSense работает над этим? Спасибо!
3 ответа
Поскольку нет реального способа "заставить" размер автообъявлений в AdSense
Установить максимальную высоту адаптивного рекламного блока AdSense
Что касается меня, я обнаружил, что Google всегда показывает рекламу высотой 200 пикселей на мобильных телефонах и 280 пикселей на настольных компьютерах, поэтому я «резервирую» это место в своем адаптивном макете над сгибом:
<div style="height:200px"> or if Desktop detected using PHP echo
<div style="height:280px">
Adsense Code
</div>
пример:
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-#####"
crossorigin="anonymous"></script>
<div style="height: <?php
if(stripos($http_user_agent,'iPhone') || stripos($http_user_agent,'iPad') || stripos($http_user_agent,'Android') || stripos($http_user_agent,'Mobil'))
{echo('200');} else {echo('280');}
?>px;">
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-#####"
data-ad-slot="#####"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
поскольку реклама Google (особенно верхний якорь) АНИМАЦИЯ НАПОЛНИТЕЛЯ на ТЕЛЕ после прокрутки страницы вниз, появляется реклама, и вы прокручиваете вверх, нет способа избежать CLS, только для создания фиксированных
<style>
body {
padding: 120px 0px 0px !important;
}
</style>
поэтому, как только объявление добавит свой "стиль" с отступом к телу и начнет его изменять, ничего не произойдет из-за тега "!important" в нашем стиле ... вы можете сделать оператор IF, чтобы использовать его, только если ваша страница отображается на мобильном устройстве (не уверен, что это происходит и на широких якорях ПК, нужно проверить это, но я вижу, что мой CLS падает и на ПК, может быть)
У нас была та же проблема со стилем вставки Adsense: auto !important; - это ломало нашу прокрутку и заставляло меню отображаться за пределами экрана на наших мобильных страницах.
Мы решили эту проблему с помощью небольшого javascript, который позволяет AdSense загружать свои объявления со стилем: auto !important; и скрипт быстро переназначит ваш стиль div обратно к тому, который вам нужен, чтобы ваша страница работала нормально. Посмотреть статью можно здесь
Надеюсь, поможет.