Настройка адаптивного фона в WordPress (UPD: 02.02.18)
Всем хорош WordPress, но некоторые вещи на нем сделать несколько сложней, чем на самописном сайте или чем-то подобном. Ну, или по крайней мере, они не столь очевидны.
Пост о том, как сделать фон «резиновым» (растягивающимся по размеру экрана).
Проблема.
Столкнулся с проблемой с фоном. Текущий фон — планета Земля, имеет разрешение моего монитора: 1366×768, и если зайти на сайт с большего разрешения — фон будет либо повторяться (если включена опция «Замостить»), либо фон просто закончится (картинка будет не на весь экран, а все остальное будет залито цветом фона). И всё, всего два варианта: либо повтор (что смотрится некрасиво, этакая куча планеток, да еще и обрубленных в моем случае), либо цвет фона вокруг этого обрубка планетки (черный смотрится еще более менее). И да, планета обрублена потому, что если ставить целую — из-за колонки контента ее будет вовсе не видно. А не потому, что я или Лисий Департамент любят рубить планетки.
Решение.
Решение сперва было довольно извращенным, хотя и действенным. Найти в коде формирование стиля для body.custom-background, именно там формируется отображение основного фона, и поправить его, внеся свойство background-size:cover (именно оно растягивает фон по размеру экрана). Данная строчка кода была найдена в файле /wordpress/wp-includes/theme.php в функции _custom_background_cb, к переменной $style после ее окончательного формирования можно добавить необходимое свойство:
$style.="background-size:cover;";
И подобное решение работает, к тому же, таким образом можно дописать в стиль фона что угодно (например, задать две картинки для фона и т.п., об этом, возможно, позже напишу) . Одно НО: после обновления или переустановки WordPress — файл примет исходное значение и придется делать всё сначала. Внести изменения недолго, но всё же уже бубнопляски немного. Для избежания таких проблем и были придуманы плагины для WordPress. И такой плагин был найден, называется он Add background-size to Customizer, скачать можно, найдя его по названию (в админке WP) или с официального сайта. Плагин добавляет на страницу редактирования фонового изображения параметры для настройки размера. Выбираем заветное background-size:cover и радуемся появившейся адаптивности фона нашего WordPress сайта.
Появившийся параметр в настройке фона сайта
Послесловие.
Странно, что в WordPress из коробки не идет подобной функциональности (возможно, оно и есть в какой-нибудь из тем, но это не то + плагин универсальней), штука-то необходимая.Данный плагин, однако, не позволяет, к примеру, поставить два фоновых изображения или же настроить иные свойства фона, но пока что мне это и не нужно.P.S. Надеюсь, сее когда-нибудь кому-нибудь да поможет, ибо я не смог нагуглить (да, возможно, гуглер из меня никакой) данное решение. В код полез от безысходности, а плагин нашел уже потом, чисто перебирая их все, включающие в название слова «bacground» и «custom».
Важное Обновление от 02.02.2018 г.
В последних версиях (в 4.9.2 точно) WordPress таки появился нужный функционал «из коробки». Кликайте «Настроить» на админ панели сайта, переходите в «Фоновое изображение», выбирайте «Набор предустановок: Заполнить экран» и применяйте изменения.
Все вышеперечисленные изменения кода или плагин рекомендуется удалить (плагин уже давно не поддерживается и потенциально может содержать в себе дыры безопасности).
Настройка адаптивного фона средствами WordPress
Метки: Add background-size to Cusomizer, background-size, background-size:cover, WordPress, адаптивный фон WordPress, дизайн, исходный код, код wordpress, плагины wordpress, резиновый фон, сайт. Закладка Постоянная ссылка.
Адаптивное видео для фона блока
Подключаем библиотеку jQuery и плагин jquery. vide.js и просто добавляем атрибут data-vide-bg=»path/video» к нужному блоку.
Где: path — папка с файлами video.jpg, video.mp4, video.ogv и video.webm
Пример:
<div data-vide-bg=»/demo/vide/video»> <div> Адаптивное видео для фона </div> </div>
<div data-vide-bg=»/demo/vide/video»> <div> Адаптивное видео для фона </div> </div> |
Также можно использовать атрибут data-vide-options для настроек видео. По умолчанию они выглядят так:
volume: 1 | громкость (от 0 до 1) |
playbackRate: 1 | скорость видео (медленнее быстрее) |
muted: true | отключение звука (true, false) |
loop: true | повтор (true, false) |
autoplay: true | автопроизведение (true, false) |
position: ‘50% 50%’ | позиционирование видео, также как background-position для CSS |
posterType: ‘detect’ | Тип постера («detect» — автоматически; «none» — без постера; «jpg», «png», «gif»,. .. — точное расширение. |
resizing: true | масштабирование видео под размеры блока (true, false) |
bgColor: ‘transparent’ | цвет для фона блока с видео |
className: ‘ ‘ | класс для блока с видео |
Пример:
<div data-vide-bg=»/demo/vide/video» data-vide-options=»playbackRate: 0.1, position: ‘0 100%'»> <div> Адаптивное видео для фона </div> </div>
<div data-vide-bg=»/demo/vide/video» data-vide-options=»playbackRate: 0.1, position: ‘0 100%'»> <div> Адаптивное видео для фона </div> </div> |
Для того чтобы сделать видеофон на весь экран, нужно прописать атрибут data-vide-bg к тегу body и задать ему 100% высоту и ширину:
Пример:
<!doctype html> <html> <title>Адаптивный видеофон во весь экран / Atuin</title> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ /> <script src=»http://code. jquery.com/jquery-1.12.4.min.js» type=»text/javascript»></script> <script src=»http://atuin.ru/demo/vide/jquery.vide.js»></script> <style> html, body{ height:100%; width:100%; margin:0; display:table; } div { font-size:42px; text-align:center; vertical-align:middle; font-family:verdana; color:#BFE2FF; display:table-cell; } </style> <body data-vide-bg=»/demo/vide/video»> <div>Адаптивный видеофон во весь экран</div> </body> </html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<!doctype html> <html> <title>Адаптивный видеофон во весь экран / Atuin</title> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ /> <script src=»http://code. jquery.com/jquery-1.12.4.min.js» type=»text/javascript»></script> <script src=»http://atuin.ru/demo/vide/jquery.vide.js»></script> <style> html, body{ height:100%; width:100%; margin:0; display:table; } div { font-size:42px; text-align:center; vertical-align:middle; font-family:verdana; color:#BFE2FF; display:table-cell; } </style> <body data-vide-bg=»/demo/vide/video»> <div>Адаптивный видеофон во весь экран</div> </body> </html> |
Выглядеть будет так
Автор скрипта: VodkaBears
Файлы и подробное описание тут
Как установить адаптивное полное фоновое изображение с помощью CSS?
|
Ответные изображения | Проект Odin
Введение
Изображения требуют особого внимания на адаптивных веб-сайтах. В этом уроке будут представлены некоторые проблемы, возникающие при работе с адаптивными изображениями, и варианты, которые у вас есть при работе с ними.
Результаты обучения
- Вы узнаете, как заставить изображения работать правильно при изменении их размера с помощью CSS.
- Вы узнаете, как отображать различные изображения в зависимости от размера экрана.
Основы
Самая основная проблема, с которой вы столкнетесь при работе с адаптивными изображениями, — это соотношение сторон или соотношение между шириной и высотой. Если вы уменьшите ширину изображения на небольших экранах, а также не измените высоту, изображение будет искажено!
Решение этой проблемы невероятно простое, и мы уже упоминали его в предыдущем уроке: просто не определяйте одновременно ширину и высоту. Если изображению задана гибкая ширина, а для высоты установлено значение auto
, тогда оно должно правильно сохранять соотношение сторон.background-size, background-position и object-fit
Что делать, если вы не хотите, чтобы ваше изображение просто уменьшалось (как по высоте, так и по ширине)? background-size
и object-fit
— это два свойства, которые могут обеспечить немного большую гибкость (каламбур) в том, как обрабатываются соотношения сторон.
background-position
и background-size
— это свойства, которые работают с элементами с фоновым изображением и не работают с обычными тегами img
. Позже вы увидите некоторые примеры и особенности в задании на чтение, но вы можете получить достаточно большой контроль над отображением и размещением фоновых изображений, работая с этими свойствами. Например,
гарантирует, что изображение всегда центрируется в своем контейнере, даже если контейнер слишком мал для размещения всего изображения. background-size: обложка
изменит размер изображения так, чтобы оно всегда полностью заполняло свой контейнер, обрезая его как можно меньше.
Вот небольшая демонстрация, с которой вы можете поиграть:
См. перо фон | Отзывчивость CSS от TheOdinProject (@TheOdinProjectExamples) на КодПене.
object-fit
работает аналогично, но предназначен для тегов img
. С помощью свойства object-fit
вы можете указать ширину и высоту для ваших изображений, а затем указать изображению, как оно должно соответствовать этим размерам. Значение по умолчанию для object-fit
равно fill
, которое просто растягивает изображение, чтобы оно соответствовало размерам, но так же, как background-size
, вы также можете указать cover
или contains
изображение.
Вот демонстрация объектно-подгонки
на изображении. Откройте это на CodePen и измените размер браузера, чтобы увидеть, как изображение реагирует.
См. перо подгонка объектов от TheOdinProject (@TheOdinProjectExamples) на КодПене.
Еще больше контроля!
Также можно буквально использовать object-fit
, чтобы держать объект фотографии в кадре, вы можете представить его обрезанную версию на небольших экранах. Есть два способа добиться этого, но наиболее гибким является использование тега
, который вы увидите в задании на чтение.
Задание
- Сначала ознакомьтесь с документацией по параметрам background-size, background-position и object-fit. Демонстрации на этих страницах должны прояснить их использование.
- Адаптивные изображения MDN — это введение в работу с адаптивными изображениями в формате HTML.
- CSS Tricks’s Guide to the Responsive Images Syntax in HTML — отличная статья, в которой более подробно рассматривается, как реализовать адаптивные изображения.
Проверка знаний
Этот раздел содержит вопросы для проверки вашего понимания этого урока. Если у вас возникли проблемы с ответом на приведенные ниже вопросы самостоятельно, просмотрите материал выше, чтобы найти ответ.
- В чем основное отличие
объектной подгонки
иразмер фона
? - Как можно определить ширину и высоту на
img
не искажая его? - Зачем вам предоставлять разные изображения при разных разрешениях экрана?
- Когда вы захотите использовать
img
сsrcset
по сравнению сpicture
?
Дополнительные ресурсы
Этот раздел содержит полезные ссылки на другой контент.