Русский
Русский
English
Статистика
Реклама

Верстка сайтов

Перевод Примеры применения переменных CSS на практике

30.04.2021 14:04:59 | Автор: admin

Когда я впервые попробовал использовать переменные CSS, у меня не было полного представления об их возможностях. Правильное их использование позволяет существенно сократить время и трудозатраты на решение определённых задач в CSS.


Если вы ещё не работали с переменными CSS, рекомендую прочитать эту статью, чтобы познакомиться с ними. Как только вы их освоите, работа станет намного проще. Цель этой статьи сосредоточить внимание на разных случаях практического использования переменных CSS помимо их применения для создания маркеров дизайна, таких как цвета.

Вы готовы? Тогда вперёд!

В чём основная проблема?

Если вы используете переменные CSS так же, как и препроцессоры CSS (например в Sass), то вы не полностью реализуете все их преимущества. Рассмотрите следующий пример:

:root {    --brand-primary: #7777e9;    --brand-secondary: #c96fde;}.title {    color: var(--brand-primary);}

И тут нет никакой разницы с нижеприведённым примером в Sass:

$brand-primary: #7777e9;$brand-secondary: #c96fde;.title {    color: $brand-primary;}

Да, применение переменных CSS в качестве переменных цвета ни в коей мере не является ошибкой. Но это всё равно, что покупать Apple MacBook M1 для посещения интернет-сайтов, хотя с этим и так хорошо справляется ваш старый настольный ПК, собранный в 2012 году. Какой смысл покупать ультрасовременный компьютер и делать на нём то же самое, никак не используя весь спектр его возможностей? Как вы понимаете, примерно так я и думаю об использовании переменных CSS для сохранения информации о цветах.

Цель этой статьи познакомить с различными вариантами практического применения, где полностью раскрываются возможности переменных CSS. Приступаем!

Примеры и случаи практического использования

Полные формы записи свойств

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

<!-- Base component --><header class="page-header">    <h2>...</h2>    <p>...</p></header><!-- Component variation --><header class="page-header page-header--compact">    <h2>...</h2>    <p>...</p></header>
.page-header {    --padding-start: 2.5rem;    --padding-block: 2rem;    padding: var(--padding-block) 1rem var(--padding-block) var(--padding-start);}.page-header--compact {    --padding-start: 1.5rem;    --padding-block: 1rem;}

Обратите внимание, для изменения заполнения нам потребуется всего лишь изменить значение переменной CSS. Без неё нам было бы необходимо вручную вводить полную форму записи свойства внутреннего отступа padding, чтобы изменить только одно значение в нём.

.page-header {    padding: 2rem 1rem 2rem 1.5rem;}.page-header--compact {    padding: 1rem 1rem 1rem 2.5rem;}

Всё вышесказанное применимо и для свойства внешнего отступа margin.

Свойства CSS background

Что касается свойств CSS для работы с фоном, то и здесь переменные CSS помогают сократить объём создаваемого нами кода. И даже больше того: благодаря их применению сам код CSS легче читать.

Хранение значений URL

При работе с интерфейсом пользователя вам может потребоваться добавить какое-либо изображение в декоративных целях. В таком случае хорошим решением будет использование элементов <div> и background-image. Если интерфейс должен быть динамическим, то значения для изображения нужно подставлять с помощью JavaScript.

Без применения переменных CSS соответствующий код HTML будет выглядеть так:

<section     class="newsletter"     style="background-image: url('/assets/ui/decoraitve/newsletter-lg-aj1891101.svg')"></section>

Но вместо того, чтобы напрямую изменять свойство background-image, мы можем сделать следующее.

<section     class="newsletter"     style="--thumb:url('/assets/ui/decoraitve/newsletter-lg-aj1891101.svg')"></section>
.newsletter {    background-image: var(--thumb);    background-size: cover;    background-position: 100% 50%;}

Обратите внимание, что необходимо включить элемент url() без переменной CSS.

Положение фонового изображения

В приведённом выше примере фоновое изображение помещается справа. Для макетов с направлением текста справа налево (RTL) положение фона следует перевернуть.

.newsletter {    --pos: 100% 50%;    background-image: var(--thumb);    background-size: cover;    background-position: 100% 50%;}html[dir="rtl] .newsletter {    -background-position: 0% 50%;}

Чтобы упростить эту задачу, мы можем воспользоваться переменными CSS.

.newsletter {    /* other styles */    background-position: var(--pos);}html[dir="rtl] .newsletter {    --pos: 0% 50%;}

Угловой градиент: часть 1

Угловой градиент также можно применять при создании макетов для нескольких языков. По умолчанию он может быть равен 45deg, и, возможно, потребуется изменить его на -45deg для макетов RTL.

.element {    --angle: 90deg;    background: linear-gradient(var(--angle), #4088vb, #C05858);}html[dir="rtl] .element {    --angle: -90deg;}

Угловой градиент: часть 2

В случае с угловым градиентом использование переменных CSS с радиальными градиентами действительно существенно упрощает настройку положения. В следующем примере положение градиента изменяется при помощи переменной --pos.

А здесь показано, как можно сделать то же самое без переменных CSS.

.card {    background: radial-gradient(        circle 200px at center top,        rgba(64, 136, 203, 0.5),        #f7f7f7    );}

Теперь предположим, что у нас есть какой-то вариант карточки .card-2 и он должен находиться в другом положении. Необходимо написать следующий код:

.card-2 {    background: radial-gradient(        circle 200px at center top,        rgba(64, 136, 203, 0.5),        #f7f7f7    );}

Таким образом, переписывается всё определение градиента. Можно ли сделать лучше? Определённо. Обратите внимание, что единственным настраиваемым значением для этого варианта является переменная --pos.

.card {    --pos: center top;    background: radial-gradient(        circle 200px at var(--pos),        rgba(64, 136, 203, 0.5),        #f7f7f7    );}.card-2 {    --pos: left top;}

Свойство clip-path

Весьма полезным случаем использования переменной CSS является изменение с её помощью значений clip-path: polygon() при переходе с настольных на мобильные устройства.

На показанном выше рисунке необходимо изменить положение вершин многоугольника. С помощью переменных CSS сделать это намного проще.

.hero {    --first: 4% 7%;    --second: 80% 0;    --thrid: 100% 95%;    --fourth: 10% 100%;    clip-path: polygon(var(--first), var(--second), var(--thrid), var(--fourth));}@media (min-width: 40rem) {    .hero {        --second: 96% 0;        --thrid: 92% 82%;    }}

Если вы хотите узнать больше о свойстве CSS clip-path, здесь вы найдёте статью за авторством вашего покорного слуги.

Элемент флажка

Великолепный пример использования переменных CSS это применение их в сочетании с функцией определения цветов hsla(). Таким образом мы можем создавать динамические компоненты, которые затем можно менять, корректируя одну или несколько переменных CSS.

Первое, что я сделал, это определил значения hsla() для корневого элемента компонента.

.form-item {    --primary-h: 240;    --primary-s: 56%;    --primary-l: 63%;    --primary-alpha: 100%;}

Теперь я могу использовать эти свойства в функции определения цветов hsla().

/* The circle that appears on hover */.form-item__label:after {    --primary-alpha: 0;    background-color: hsla(        var(--primary-h),        var(--primary-s),        var(--primary-l),        var(--primary-alpha)    );}.form-item__label:hover:after {    --primary-alpha: 15%;}

Код SVG, встроенный в CSS

Когда-то я работал над пользовательским интерфейсом для проекта одного клиента и столкнулся с такой ситуацией. У нас был раздел с двумя лентами (одна сверху, а вторая снизу). Мне необходимо было изменить цвет, угол поворота и размер этих лент, не создавая отдельный код CSS для каждой из них. Спасением стали переменные CSS!

Прежде всего я подготовил требуемый код SVG в Adobe Illustrator. Я разделил каждую ленту на три слоя:

  • светлые области;

  • тёмные области;

  • базовый слой.

Затем я экспортировал этот код SVG и поместил его в элементах <defs> так, чтобы легко можно было использовать его повторно. Обратите внимание, я также добавил ключевое слово currentColor! Это и есть то самое магическое значение, которое заставит всё работать.

Наконец, теперь нам необходимо определить размер и угол поворота в CSS.

.tape {    width: var(--size);    transform: rotate(var(--angle));}
<svg class="tape" style="--angle: 10deg; color: red; --size: 120px;" aria-hidden="true" focusable="false" viewBox="0 0 123 47">  <use href="#tape"></use></svg>

Готово. Мы создали собственный код SVG, который можно настраивать по мере необходимости. Впечатляет, не правда ли?

Создание миксинов (примесей-шаблонов), таких, как в Sass

Об этой интересной возможности я узнал из рекомендуемого мною к просмотру выступления Ли Веру (Lea Verou). Идея состоит в том, чтобы установить исходные переменные CSS для определённого свойства, а затем переопределять их, когда это понадобится.

Здесь показан пример, как мы можем использовать эту возможность. Очень часто мне необходимо, чтобы враппер был центрирован, для чего можно добавить margin: 0 auto к соответствующему элементу враппера. В тех случаях, когда необходимо отцентрировать какой-то свой элемент, мы можем выполнить следующее:

<div class="featured-section u-center"></div>
.u-center {  --mx: initial;  --my: initial;  margin: var(--my) var(--mx);}.featured-section {  --mx: auto;  --my: 2rem;}

Во-первых, я создал служебный класс .u-center с заданными по умолчанию значениями для горизонтальных и вертикальных внешних отступов. Я могу добавить этот класс к элементу и затем переопределить переменные CSS. Это может оказаться очень полезным, например, если элементу нужны определённые внешние отступы только с верхней и нижней сторон.

Использование функции calc()

Функция calc() в сочетании с переменными CSS может очень пригодиться. Мы можем создать какой-то базовый размер для компонента, а затем, меняя только одну переменную, можем делать его больше или меньше.

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

.c-avatar {  width: calc(var(--size, 32) * 1px);  height: calc(var(--size, 32) * 1px);}

Обратите внимание, я использовал функцию var(--size, 32). Если переменная --size не определена, то значение 32 будет использовано как резервное значение. Важно указать 1px, чтобы добавить px к результирующему числу.

Таким образом, мы можем создавать вариации классов, просто добавляя переменную CSS --size.

.c-avatar--medium {    --size: 64;}.c-avatar--large {    --size: 128;}

Псевдоэлементы

С помощью переменных CSS можно изменять свойство псевдоэлемента, поскольку оно наследуется от родительского элемента. Рассмотрите следующий пример:

В заголовке раздела содержится декоративная фиолетовая линия, которая является псевдоэлементом. Мы можем передать переменную CSS данному заголовку, и этот псевдоэлемент унаследует её.

.section-title {    --dot-color: #829be9;}.section-title:before {    content: "";    background-color: var(--dot-color);}

Но, кроме того, мы также можем имитировать изменение цвета псевдоэлемента с помощью Javascript.

Встроенные стили

Другим примером полезного применения переменных CSS является использование их в качестве встроенных стилей. И тут открывается множество возможностей для настройки какого-либо компонента путём изменения одной или нескольких переменных.

Рассмотрите следующий пример.

.o-grid {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(var(--item-width, 200px), 1fr);    grid-gap: var(--gap);}

У нас есть настроенный грид и заданное по умолчанию для ширины элемента грида значение 200px. В коде HTML мы можем переопределить его, переустановив значение для переменной CSS.

<!-- Example 1 --><div class="o-grid" style="--item-width: 250px;">     <div></div>     <div></div>     <div></div></div><!-- Example 2 --><div class="o-grid" style="--item-width: 350px;">     <div></div>     <div></div>     <div></div></div>

Ну разве это не полезно? Если вы хотите узнать больше о переменных CSS со встроенными стилями, я уже писал об этом более подробно.

Заключение

Как вы могли убедиться, существует множество примеров использования переменных CSS помимо определения цветов с их помощью. Уверен, то что я показал, это лишь самые поверхностные варианты их применения. Если вы придумали какой-то свой уникальный вариант использования поделитесь им в комментариях!

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

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Проверка разметки сайтов-участников W3C

15.07.2020 22:07:35 | Автор: admin
Учитывая возможные сложности с дорогой на собеседование в одну известную фирму, я запланировал один час как запас времени. Два поезда не пришли и запас времени быстро закончился. В приглашении вместо номера телефона и емейла была ссылка на корпоративный сайт, где можно отправить сообщение любому работнику.

Оказалось, что сайт живёт своей собственной жизнью, если его открыть с мобильного телефона. В результате, простая отправка сообщения об опоздании заняла у меня 20 минут и четверть заряда аккумулятора, которого до этого была только половина.

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

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

Интересно, что интернет также перегружен всевозможными советами, SEO, правилами, как делать правильно. Существует даже организация, призванная улучшать интернет.

Члены W3C клуба


Несмотря на критику в адрес организации, она занимается стандартизацией интернета и предоставляет много бесплатных ресурсов. Насчитывает более 400 участников.

Мне стало интересно, как относятся сами участники клуба к своим сайтам.
Ниже приведены результаты эксперимента по проверке их вёрстки с помощью валидатора validator.w3.org.

Результаты проверки разметки сайтов-участников W3C




Без проверки (значение -1) оказались адреса, которые внесены с ошибкой в список участников или не дали себя анализировать. Ко вторым относятся, например, facebook и google. Можно объяснить особенностью их бизнес-модели. Хотя Youtube можно проверить и показывает 53 ошибки, одна из них указана как фатальная.

Совсем без ошибок оказалось 23 сайта. Это около 5%. Подтверждает внутреннее ощущение того, что именно столько Интернета нормально работает.

Главная страница W3C свёрстана с одной ошибкой и похожий результат показывают ещё 88 сайтов её членов.

Остальных 297 участников, видимо, не сильно волнуют стандарты на своих сайтах. Может быть потому, что у гигантов нет времени на такие мелочи.

Например, проверка Хабра показывает 61 ошибку.

Вывод


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

Ссылки


Хорошим примером организации, которая действительно улучшает Интернет, можно назвать w3schools.
В разделе CSS шаблонов бесплатно можно скачать примеры оформления. Технологии хорошо структурированы и описаны.
Файл результатов эксперимента в формате csv.
Подробнее..

8 ошибок начинающего PSD дизайнера. Как упростить работу верстальщика

22.08.2020 04:15:43 | Автор: admin

Ситуация


Перед дизайнером стоит задача о создании psd-макета, который верстальщик будет переносить в HTML&CSS.
Умолчим о том, насколько это правильная ситуация, и что к ней привело.
Почти умалчиваем о дизайне как о таковом.
Поговорим о бюджетной разработке, заточенной под минимальное качество. Например, миримся с названиями слоёв фигура 14 копия 5 и ратуем за упрощения.
Расскажем о частых ошибках дизайнеров в psd-макетах, из-за которых верстальщики могут испытывать проблемы. С этими ошибками столкнулись мы. Порекомендуем как это исправить. Приведём также некоторые советы для дизайнеров, упрощающие работу верстальщика.
Статья следует из нашего опыта веб-разработки. Вот другой опыт и ещё.

Формат


Пишем кратко по формату:

Ошибка. Как исправить. Для чего это.


Ошибки


  1. Плохое начертание шрифта, например, ЖКД Windows. Не ошибётесь, если поставите резкое. Иначе шрифт не перенести.
  2. Логотип в PNG, на просьбу перевести в SVG, делают конвертацию в data:img/png;base64. Перевести в вектор или сказать, что не получится. Векторный формат показывает без размытий.
  3. Отсутствие шрифтов макета в папке с дизайном. Положить шрифты в папку, а лучше использовать бесплатные CDN шрифты или встроенные в OS. Без шрифта не выудишь и рыбку из пруда.


Предупреждения


  1. Ширина основного содержимого больше 1300px. Не ошибётесь если выберите от 940px до 1200px. Если десктопная версия одна, то её легче разрабатывать и поддерживать.
  2. Отсутствие реакций при наведении или реакции сделаны в разнобой. Нужно делать реакции, например, при наведении курсора на ссылку; стараться делать однотипные реакции для одинаковых действий. Реакции должны помогать пользователю взаимодействовать с сайтом, а не мешать.


Хотелки


  1. Маленькие иконки не из набора. Подойдут и распространены иконки Font Awesome версии 4.7 или 5. Для упрощения вёрстки рекомендуем использовать иконки из какого-либо готового набора.
  2. 24 битные цвета #abcdef. Использовать 12 битные цвета #ace. Упрощает вёрстку.

Критическая ошибка, рушащая всё на своём пути


  1. Наши покупатели выберают, расчитать стоимость и иные орфографические ошибки. В безударном положении в корне бер-/бир- пишется буква и, если после корня следует суффикс -а-, а если его нет, то пишется буква е. Филолог-верстальщик не будет метать икру.

Заключение


Хороший дизайн это как можно меньше дизайна
Дитер Рамс
Подробнее..

Перевод - recovery mode 41 термин в дизайне, полезный для UX-исследователя

05.09.2020 12:21:57 | Автор: admin


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



Flat Design (Плоский дизайн)


Flat Design это минималистский стиль дизайна пользовательского интерфейса. Он характеризуется фокусированием на использовании простых двухмерных элементов с яркими цветами.


Ник Бабич (Nick Babich) из UX Planet называет flat design более сложным кузеном минимализма, поскольку все элементы пользовательского интерфейса основаны на простоте.

Отличным примером плоского дизайна является целевая страница Dropbox Basic. Как видите, элементы пользовательского интерфейса настолько минимальны, что освещают содержание страницы.




Interaction Design (Интерактивный дизайн)


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




Material Design (Материальный дизайн)


Material Design, часто называемый просто материалом, это язык дизайна, разработанный Google и используемый на устройствах Android.


Вот краткое вводное видео об этом от Google:



Iterative Design (Итеративный дизайн)


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



Design sprints (Дизайн-спринты)


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



Brand Identity (Фирменный стиль)


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




Mood board (Доска настроения)


Mood board это набор материалов и полезностей, которые помогают определить определенный стиль продукта (например, веб-сайта или приложения) с помощью изображений, текста, цветов и других элементов брендинга. Это дает представление о голосе, направлении, языке и стиле конкретного проекта, дизайна или бренда. В отличие от большинства других пошаговых методов сбора данных, мудборд по своей природе свободен.


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



Storyboard (Раскадровка)


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



User Journey Maps / UX Flow / Flowchart


Карты пути пользователя (также иногда называемые UX-потоком или блок-схемой) представляют собой описательные документы, которые иллюстрируют шаги, которые пользователь может предпринять для выполнения задачи над продуктом. Они часто включают имя, шаги и описание того, что происходит на каждом шаге.



Есть ли различия между картами пути пользователя и потоками UX? Да.

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


В то время как UX-потоки имеют более формальные правила (вероятно, из-за их происхождения в виде блок-схем).



Wireframe (Каркас)


Думайте о каркасах как о проекте экрана. Они представляют собой низкокачественное представление макета и содержания веб-сайта.




Wireflow


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


Чуть больше про Wireflow
Wireflow это не скетч. Wireframe-ы специально никак не связаны с дизайном, чтобы демонстрировать как сайт/приложение будет работать, а не выглядеть. В wireframe все выглядит схематично, но за этими чертежами стоят многие часы раздумий. Каждый небольшой блок должен быть спланирован и расположен в нужном месте. Каждая ссылка должна куда-то вести. Каждая страница должна быть доступна по ссылке с другой страницы. Каждая кнопка должна быть там, где она нужна пользователю, и не быть там, где от нее нет толку. Лишь 10% создания wireframe-ов приходится на рисование; 90% занимает процесс продумывания.



Mockup (Макет)


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




MVP


MVP или минимально жизнеспособный продукт(minimum viable product) относится к основному набору функций, с которыми мы можем запустить продукт, чтобы начать работу. Это не означает, что мы не будем развивать дальнейшие элементы или части. Продукты часто запускаются как MVP для быстрого выпуска и сбора ценных отзывов пользователей.


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




Low and High-fidelity protos


Прототипы с низкой и высокой точностью


На ранних этапах вы можете создавать бумажные прототипы (с низкой точностью Low protos) карандашом и бумагой для проверки концепций или течений. Позже, после проверки алгоритмов и концепций, вы можете перейти на программное обеспечение для проектирования, такое как Sketch, для создания прототипа с высокой точностью (High-fidelity protos). Прототипы будут выглядеть не как каракули, а как приложения на вашем мобильном устройстве, и их можно будет использовать для точной настройки деталей вашего пользовательского интерфейса.




Adaptive design (Адаптивный дизайн)


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




Responsive design (Отзывчивый веб-дизайн)


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



Про разницу Адаптивного и Отзывчивого


Affordance (Ухватистость или провоцировательность)


Affordance это подсказки, которые говорят нам, как элемент может взаимодействовать с нами. Представьте себе дверь. Ручка это подсказка, которая сообщает нам, что её можно тянуть или толкать.



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



Picker (Сборщик)


Как видно из названия, сборщик позволяет пользователям выбирать цель из ряда опций. Обычно он включает один или несколько прокручиваемых списков различных значений, например часов, минут, дат, измерений, валют и т. д.




Bar (Панель навигации)



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


Панель вкладок (Tab bar) в различных приложениях устройства она отображается в нижней части экрана приложения и дает возможность быстро переключаться между различными разделами приложения.




UI Element


Элементы пользовательского интерфейса (UI) это все различные части интерфейса, которые нам нужны для запуска определенных действий или обхода приложения или веб-сайта. Подумайте о кнопках, полях ввода, переключателях и переключателях.



UI Pattern


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


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


Widget (Виджет)


Виджет это просто экранный элемент, с которым взаимодействуют пользователи. Примеры виджетов: ползунки, инструменты календаря, кнопки, контактные формы...



Pixel (Пиксель)


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



Hierarchy (Иерархия)


Иерархия это визуальное расположение элементов дизайна, подчеркивающее важность.




Breadcrumbs (Хлебные крошки)


Хлебные крошки это вспомогательные средства навигации, которые сообщают пользователям, где они находятся на веб-сайте. Это позволяет пользователям повторять свои шаги на многоуровневых веб-сайтах. Несмотря на свой второстепенный статус, крошки используются с 1995 года, помогая сделать дизайн более удобным для пользователя.




API


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




Onboarding (Адаптация)


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



Lorem Ipsum (Текст рыба)


Также известное как фиктивная копия, lorem ipsum это общий текст-заполнитель, используемый, когда настоящий текст недоступен. Он используется в качестве текста-заполнителя, чтобы продемонстрировать, как будет выглядеть дизайн после того, как будет добавлен реальный основной текст.




Legibility (Разборчивость)


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




Microcopy (Микрофотокопия)


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



Grid System (Сетка)


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




Scale (Масштаб)


Масштаб характеризует изменение размера объекта при сохранении его формы и пропорций. Большой масштаб может создать драму, а маленький может создать мелкие детали.



Color Theory (Теория цвета)



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



Cool Colors (Холодные цвета)




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



Warm Colors (Теплые цвета)




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



Gradient (Градиент)


Как видно на двух картинках выше, это постепенное изменение цвета от одного тона к другому.



Opacity (Прозрачность)


Степень прозрачности элемента. Чем ниже непрозрачность, тем прозрачнее элемент.



Resolution (Разрешение)


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




Contrast (Контраст)


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




Saturation (Насыщенность)


Степень интенсивности и яркости цвета. Например, цвет с низкой насыщенностью может казаться бледным и блеклым, тогда как более насыщенный цвет может казаться более ярким и красочным.




Ну вот и все. Это были одни из самых распространенных терминов, с которыми вы могли столкнуться при работе с UI, UX или графическими дизайнерами.

Подробнее..

CSS var в rgba или удобное использование цветов в Sass

15.12.2020 02:07:06 | Автор: admin

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

В итоге, такая запись:

body{  color: color(primary);  background: color(primary, 0.5);}

Будет эквивалентна такой:

:root {  --color-pink: #E20071;  --color-pink--rgb: 226, 0, 113;}body {  color: var(--color-pink);  background: rgba(var(--color-pink--rgb), 0.5);}

Но, при этом в управлении вы используете только HEX формат цвета. Конвертация происходит в автоматическом режиме. Никаких танцев с бубном. Смотрим:

Автоматическое создание CSS переменных

Почему лучше использовать CSS, а не Sassпеременные, можно почитать на Хабре в этой статье.

Первое, создадим массив с нужными цветами.

$colors : (  "pink"  : #E20071,  "blue"  : #00A3DA,  "gray"  : #939394,  "white" : #FFFFFF,  "black" : #1B1B1B,);

Далее, создадим CSS переменные,перебрав в цикле созданный выше массив $colors и запишем их впсевдокласс:root.

:root{  @each $key, $value in $colors {    --color-#{$key} : #{$value};  }}

На выходе, получим это:

:root {  --color-pink: #E20071;  --color-blue: #00A3DA;  --color-gray: #939394;  --color-white: #FFFFFF;  --color-black: #1B1B1B;}

Прозрачность цвета

Для использования прозрачности в Sass необходимо использовать цвет в RGB формате, но переменные созданные выше написаны в HEX. Чтобы это исправить, напишем простую функцию:

@function HexToRGB($hex) {  @return red($hex), green($hex), blue($hex);}

Далее,запишем цвет в переменную

:root {  --color-pink-rgb: #{HexToRGB(#E20071)};}

И воспользуемся функцией rgba, где первый параметр нужный цвет, а второй прозрачность. Значение прозрачности может находиться в диапазоне от 0 (полностью прозрачный) до 1 (полностью непрозрачный):

body{  background: rgba(var(--color-pink-rgb), 0.5);}

Сокращенная запись CSS переменной

Для ускоренного написания CSS переменной, напишем функциюcolor.

@function color($name) {  @return var(--color-#{unquote($name)});}

Теперь запись:

body{  background: color(pink);}

Равнозначна такой:

body{  background: var(--color-pink);}

Простая магия

Теперь покажу пример, как используя 3 этих подхода, можно управлять цветами (CSS переменными) так, используя массив как тему:

body{  color: color(primary);  background: color(primary, 0.5);}

Вот сам код:

$colors_theme : (  "primary"   : "pink",  "secondary" : "blue");$colors : (  "pink"  : #E20071,  "blue"  : #00A3DA,  "gray"  : #939394,  "white" : #FFFFFF,  "black" : #1B1B1B,);@function HexToRGB($hex) {  @return red($hex), green($hex), blue($hex);}@function color($name, $opacity: false) {  @if $opacity {    @return rgba(var(--color-#{unquote($name)}--rgb), $opacity);  } @else {    @return var(--color-#{unquote($name)});  }}:root{  @if $colors {    @if $colors_theme {      @each $key, $value in $colors_theme {        --color-#{$key} : var(--color-#{$value});        --color-#{$key}--rgb : var(--color-#{$value}--rgb);      }    }    @each $key, $value in $colors {      --color-#{$key} : #{$value};      --color-#{$key}--rgb : #{HexToRGB($value)};    }  }}

Ну вот и все, в качестве вывода можно сказать, что благодаря подобным функциям упрощается и ускоряется работа с цветами.

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

Прошу строго не судить это первая статья на Хабре.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru