Как заставить WordPress работать с адаптивными изображениями

Автор: Louise Ward
Дата создания: 6 Февраль 2021
Дата обновления: 18 Май 2024
Anonim
Адаптивные изображения. Практические приемы верстки картинок. CSS object-fit HTML picture.
Видео: Адаптивные изображения. Практические приемы верстки картинок. CSS object-fit HTML picture.

Содержание

  • Знания необходимы: Базовый PHP и CSS
  • Требует: Установка WordPress, текстовый редактор по выбору
  • Время проекта: 10 минут

Если вы подпишетесь на печатную версию журнала .net (если нет, почему бы и нет !?), вы увидите, что в номере этого месяца есть отличная статья на тему «Адаптивный дизайн с WordPress».

В статье автор Джесси Фридман обрисовывает в общих чертах множество действительно полезных методов, позволяющих максимально использовать и преодолеть встроенную функциональность WordPress для создания действительно эффективного адаптивного веб-сайта. Если вы думаете о создании адаптивного сайта на WordPress, вам обязательно стоит взять копию его статьи. Это обязательно к прочтению.

Недавно перестроив свой личный блог на WordPress с использованием адаптивного подхода, ориентированного на мобильные устройства, я был знаком с некоторыми методами, описанными в статье. Однако единственным моментом, который мне особенно понравился, был подход Джесси к включению плавных изображений через jQuery.


Проблема с WordPress и «плавными изображениями»

Как я уверен, вы все знаете, что для «жидких изображений», в которых используется max-width: 100%, требуется, чтобы изображения не имели фиксированной ширины или высоты, чтобы их можно было масштабировать до размера своего контейнера. К сожалению, WordPress автоматически вычисляет размеры изображений, созданных из библиотеки Media, и добавляет соответствующие атрибуты ширины и высоты к любым тегам img>.

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

Это проблема.

Решение, отличное от jQuery

В своей статье Джесси предлагает использовать jQuery для удаления атрибутов ширины и высоты из всех тегов img> на странице после ее загрузки. Это определенно работает, но при создании своего сайта мне не понравилась идея полагаться на JavaScript для достижения этой цели, особенно если на рассматриваемой странице было много изображений.


Здесь на помощь пришли фильтры WordPress.

Кодекс WordPress определяет фильтр как:

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

Оказывается, это именно то, что нам нужно. Настроив фильтр для запуска на всех изображениях в качестве последнего действия перед их отображением на странице, мы можем использовать PHP для удаления атрибутов ширины и высоты, тем самым устраняя необходимость (потенциально) дорогостоящих манипуляций с DOM через JavaScript.

Код

  1. /**
  2. * ФУНКЦИИ ОТВЕТСТВЕННОГО ИЗОБРАЖЕНИЯ
  3. */
  4. add_filter (’post_thumbnail_html’, ’remove_thumbnail_dimensions’, 10);
  5. add_filter (’image_send_to_editor’, ’remove_thumbnail_dimensions’, 10);
  6. функция remove_thumbnail_dimensions ($ html)
  7. $ html = preg_replace (’/ (ширина

В приведенном выше коде мы добавляем два фильтра с помощью функции add_filter. Первый аргумент - это фильтр, к которому мы хотим подключиться, а второй указывает функцию, которую мы хотим запускать при вызове фильтра.


В нашем коде мы подключаемся к двум малоизвестным функциям:

  1. post_thumbnail_html - изображения, полученные с помощью post_thumbnail ()
  2. image_send_to_editor - изображения добавлены в редактор

Затем мы используем регулярное выражение для удаления атрибутов ширины и высоты из тегов изображений. Теперь, когда наши изображения отправляются в браузер, они могут быть полностью «плавными», как сказал нам г-н Маркотт.

Признание

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

После долгих поисков я, наконец, наткнулся на чрезвычайно полезный пост Натаниэля Тейнтора на Wordpress Stack Exchange, который предоставил информацию о двух необходимых мне фильтрах.

Предостережения

Насколько мне известно, единственным серьезным недостатком этого подхода является то, что он не удаляет атрибуты ширины и высоты из всех изображений на вашем сайте. Я обнаружил, что это проблема, особенно с изображениями Gravatar, которые WordPress использует в комментариях.

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

Я надеюсь, что это было полезно и продемонстрировало альтернативу использованию JavaScript для реализации «плавных изображений» на веб-сайтах WordPress.

Слова: Дэвид Смит

Дэйв Смит - дизайнер фасадов, живущий недалеко от прекрасного города Бат, Великобритания. Когда он не работает над новыми захватывающими веб-проектами, его можно встретить играющим на трубе во всем, от джазовых групп Big Band до симфонических оркестров. Вы можете связаться с Дэйвом в Твиттере как @get_dave.

Рекомендовано вам
Картина на холсте для начинающих: лучшие советы
Далее

Картина на холсте для начинающих: лучшие советы

Добро пожаловать в руководство Creative Bloq по рисованию на холсте для начинающих. Если вы до сих пор в основном работали в своем альбоме для рисования или на бумаге, переход на холст может оказаться...
Должны ли британские дизайнеры работать за границей после Brexit?
Далее

Должны ли британские дизайнеры работать за границей после Brexit?

Миллениалам вроде меня невероятно повезло. Взаимосвязанный мир, в котором мы живем, предоставляет ощутимые глобальные возможности, в отличие от всего, что когда-либо испытывало какое-либо поколение.Я ...
iPad Pro против MacBook Air: что покупать?
Далее

iPad Pro против MacBook Air: что покупать?

iPad Pro против MacBook Air может показаться легким выбором. Если вы ищете ноутбук Apple стоимостью 1000 фунтов стерлингов / 1000 долларов США, MacBook Air выглядит как единственный вариант… но разве ...