DevGang
Авторизоваться

Как эффект отражения побил рейтинг моего сайта в поиске Google

Давайте начнем с более подробного рассмотрения того, что именно представляет собой эффект отражения. Базовый эффект отражения текста можно создать с помощью CSS следующим образом:

.reflection {
  font-size: 50px;
  position: relative;
}

.reflection::after {
  content: attr(data-text);
  position: absolute;
  top: 100%;
  left: 0;
  transform: rotate(180deg) scaleX(-1);
  mask-image: linear-gradient(0deg, black 0%, transparent 100%);
  filter: blur(2px);
  line-height: 1;
  opacity: 0.6;
}

Полный код на проект.

И это работает нормально, но только для текста без каких-либо украшений и когда каждое слово имеет одинаковый цвет, поскольку оно использует атрибут data-text для содержимого отражения. Но что, если мы хотим создать подобное отражение?

Отражение с цветным текстом
Отражение с цветным текстом

Наиболее гибким способом было бы создать компонент React, который берет любые дочерние узлы и просто дублирует их, добавляя надлежащий стиль для создания «исходного» элемента и «отраженного» элемента.

.reflection-container {
  font-size: 50px;
  position: relative;
}

.reflection {
  position: absolute;
  top: 100%;
  left: 0;
  transform: rotate(180deg) scaleX(-1);
  mask-image: linear-gradient(0deg, black 0%, transparent 100%);
  filter: blur(2px);
  line-height: 1;
  opacity: 0.6;
}

Таким образом, мы даже можем сделать многострочный текст или изображения отзеркаленными!

Проект можно посмотреть здесь.

Это удивительно, не так ли? Так в чем же подвох и как это вообще связано с результатами поиска веб-сайта в Google?

* * *

Давайте начнем с анализа того, что происходит на всем протяжении.

Когда мы используем псевдоэлемент ::after для создания зеркального эффекта, любой текст, находящийся внутри content, не будет «видим» для бота Google и не будет проиндексирован, поскольку он не рассматривается как текст сам по себе.

НО если мы продублируем любой контент, который мы предоставляем нашему компоненту отражения React, и просто оформим его так, чтобы он выглядел как отражение, то бот Google увидит его как дублированный текст, подобный этому (используя пример выше):

Test text
Second line text
Test text
Second line text

И это проблема, потому что Google очень не любит дублированный контент.

При том же контенте веб-сайта и той же поисковой фразе, с дублированным контентом, созданный мной веб-сайт занимал примерно 50-60-е место, а без дублированного контента - около 6-7-го.

Хорошо, теперь мы знаем проблему, но каково решение?

* * *

Что ж… решение довольно очевидное и в то же время не совсем очевидное. По сути, вам нужно скрыть этот дублированный текст от бота Google, но вопрос «как» все равно остается.

Во-первых, я хотел сделать это элегантно и попробовал использовать aria-hidden="true" вместе с указанием того, что этот текст отражения на самом деле не является интерактивным элементом, с помощью CSS, но безрезультатно.

Во-первых, я хотел сделать это элегантным способом и попытался использовать aria-hidden="true" вместе с указанием, что этот отражающий текст на самом деле не является интерактивным элементом, используя CSS, но безрезультатно.

.reflection {
  /* ... */
  pointer-events: none;
  user-select: none;
}

Я потратил слишком много времени, пытаясь найти способ сделать это «правильно» (дайте мне знать, если он у вас есть). В какой-то момент я даже решил вернуть всё к простому отображению текста, используя ::after.

К счастью, как раз после того, как я начал все исправлять и возвращаться к этому решению, которое сводило на нет все крутые эффекты, которые можно было сделать, я сделал перерыв, во время которого мне в голову пришел самый простой, но эффективный метод — почему бы просто не спрятать div с отражением, когда navigator.userAgent указывает, что веб-сайт просматривается ботом?

В поисках золотого решения я автоматически отбросил очевидное, которое оказалось лучшим, хотя и не самым элегантным вариантом.

Несколько простых настроек в компоненте React, и рейтинг веб-сайта в поиске Google снова вернулся к норме, сохранив при этом полный визуальный опыт для пользователей.

* * *

На этом я заканчиваю свое знакомство с эффектом отражения и с тем, как он влияет на результаты поиска в Google. Лично мне очень нравится использовать этот эффект, потому что он создает ощущение, что ваш контент парит над поверхностью и встроен в какое-то пространство, а не просто лежит на экране. Итак, я рад, что нашел способ заставить это работать, не снижая рейтинг моего сайта в поиске и не ставя под угрозу его возможности.

Здесь вы можете увидеть несколько примеров того, как я это использую:

Использование эффекта отражения для создания иллюзии озера
Использование эффекта отражения для создания иллюзии озера
Использование эффекта отражения для создания иллюзии поверхности
Использование эффекта отражения для создания иллюзии поверхности
Анимированное отражение
Анимированное отражение

Дайте мне знать, каков ваш опыт использования эффекта отражения и используете ли вы его на создаваемых вами веб-сайтах или нет.

Источник

#CSS #React
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу