Notice: Undefined offset: 0 in /var/www/html/spargo/wp-content/themes/spargo/templates/content/entry-post-news.php on line 13

Notice: Trying to get property 'name' of non-object in /var/www/html/spargo/wp-content/themes/spargo/templates/content/entry-post-news.php on line 17
Медиазапросы в SCSS: создаем миксин для удобной реализации адаптивного интерфейса

Медиазапросы в SCSS: создаем миксин для удобной реализации адаптивного интерфейса

Как UI специалист, я являюсь приверженцем адаптивных интерфейсов и с особой любовью отношусь к адаптивной верстке. С появлением таких технологий, как flex и grid CSS, разрабатывать адаптивную версию веб-приложения становится в разы быстрее и проще. Обеспечить доступность потребления контента через мобильные и планшетные устройства на сегодняшний день является важной задачей каждого веб-разработчика. На одном из проектов, над которым я работал, был проведен большой редизайн, в том числе были внесены существенные изменения в адаптивную версию веб-приложения. Учитывая, что адаптивность должна была пройти несколько стадий тестирования (с последующей корректировкой), было принято решение создать SCSS миксин, который бы помог в последующем внести изменения в параметры breakpoint'ов один раз для изменения адаптивной верстки во всем приложении сразу. Этим же миксином я и решил поделиться с вами. В структуре проекта создадим .scss файл, в котором пропишем наш миксин (не забудьте потом подключить созданный .scss файл). Первым делом создадим переменную, в которую пропишем наши параметры адаптивности. Все они индивидуальны под каждый проект, и, как правило, их определяет команда дизайнеров. Предположим, что в нашем случае их будет 4: $breakpoints: ( sm: 576px, md: 768px, lg: 1024px, xl: 1440px, ); Далее, напишем миксин, в который передадим ключевой параметр разрешения экрана и ищем его значение среди объявленных переменных. @mixin from($breakpoint) { $size: map-get($breakpoints, $breakpoint); @if ($size == 0) { @content; } @else { @media screen and (min-width: $size) { @content; } } } В SCSS таблице стилей задействовать данный миксин нужно следующим образом: @include from('md') { /*стили для разрешения ОТ 768px*/ } В некоторых случаях необходимо указывать стили для разрешений ДО определенных значений. В данном случае миксин будет выглядеть следующим образом: @mixin before($breakpoint) { $size: map-get($breakpoints, $breakpoint); @if ($size == 0) { @content; } @else { @media screen and (max-width: ($size - 1px)) { @content; } } } Через математическую функцию мы уменьшаем значение на 1px, чтобы избежать конфликта разных стилей для разрешений ДО и ПОСЛЕ определенных значений. Такие кейсы тоже имеют место быть. Использование в SCSS следующее: @include before('md') { /*стили для разрешения ДО 767px*/ } Как быть в случае, когда стили нужны для определенных диапозонов экранов? Например, начиная 576px и заканчивая 1024px. Для этих целей существует другой миксин: @mixin from-to($from, $to) { $min: map-get($breakpoints, $from); $max: map-get($breakpoints, $to) - 1px; @if ($min == 0) { @media screen and (max-width: $max) { @content; } } @else { @media screen and (min-width: $min) and (max-width: $max) { @content; } } } Использование в SCSS: @include from-to('md', 'lg') { /*стили для разрешения ОТ 768px ДО 1024px*/ } Данный миксин удобно использовать в крупных проектах, его удобно поддерживать и дорабатывать. Например, можно добавить миксины для изменения интерфейса в зависимости от ориентации экранов. Все индивидуально и зависит от конкретных проектов и дизайнов.
Навигация
Используя данный сайт, вы даете согласие на использование файлов cookie, данных об IP-адресе и местоположении, помогающих нам сделать его удобнее для вас.>