Одним из достаточно распространенных шаблонов проектирования дизайна, с которым вы, вероятно, сталкивались, являются блоки с угловым переходом градиентных цветов. Это выглядит примерно так, как показано на изображении ниже.
Угловой градиент внутри прямоугольника
Я столкнулась с этим во время работы над одним из наших проектов и вместо реализации такого эффекта с помощью изображения или SVG, мы решили использовать линейный градиент, преимуществом которого было то, что впоследствии достаточно легко менять угол наклона, градиентные цвета и т.п. непосредственно в CSS.
Рисунок 2: зазубренные границы углового градиента
Результат выглядел так, как отображено на рисунке 2. Как вы можете видеть, что появились довольно заметные выступающие зазубрины на границе перехода цветов градиента.
К счастью, существует очень простой способ решить эту проблему! Обычно, когда вы хотите создать линию резкой смены цветов в линейном градиенте, записываете код примерно так:
Это означает, что в диапазоне от 0 до 75% размера блока цвет заливки будет белым, а начиная с 75% – чёрным. Это создаёт достаточно сильно зазубренную линию. К сожалению, при определенном угле градиента и размере блока, может получиться достаточно уродливый зигзаг.
Исправление этого требует весьма небольших изменений – добавить десятичную часть второму проценту, который создаст небольшое размытие у линии перехода цветов. В зависимости от вашей конкретной ситуации может потребоваться подбор необходимого значения, чтобы размытие было не очень заметно – но визуально сглаживало её.
Сравнение зазубренной и сглаженной линии градиента
Пример на CodePen:
Надеюсь, в будущем это поможет вам в решении возникших проблем
Угловой градиент внутри прямоугольника
Я столкнулась с этим во время работы над одним из наших проектов и вместо реализации такого эффекта с помощью изображения или SVG, мы решили использовать линейный градиент, преимуществом которого было то, что впоследствии достаточно легко менять угол наклона, градиентные цвета и т.п. непосредственно в CSS.
Рисунок 2: зазубренные границы углового градиента
Результат выглядел так, как отображено на рисунке 2. Как вы можете видеть, что появились довольно заметные выступающие зазубрины на границе перехода цветов градиента.
К счастью, существует очень простой способ решить эту проблему! Обычно, когда вы хотите создать линию резкой смены цветов в линейном градиенте, записываете код примерно так:
background:
linear-gradient(176deg, white, white 75%, black 75%, black 100%);
Это означает, что в диапазоне от 0 до 75% размера блока цвет заливки будет белым, а начиная с 75% – чёрным. Это создаёт достаточно сильно зазубренную линию. К сожалению, при определенном угле градиента и размере блока, может получиться достаточно уродливый зигзаг.
Исправление этого требует весьма небольших изменений – добавить десятичную часть второму проценту, который создаст небольшое размытие у линии перехода цветов. В зависимости от вашей конкретной ситуации может потребоваться подбор необходимого значения, чтобы размытие было не очень заметно – но визуально сглаживало её.
background:
linear-gradient(176deg, white, white 75%, black 75.3%, black 100%);
Сравнение зазубренной и сглаженной линии градиента
Пример на CodePen:
Надеюсь, в будущем это поможет вам в решении возникших проблем
Комментарии (9)
aamonster
14.11.2019 23:41+1Трудней всего было догадаться, где же на картинке градиент :-)
А как только он там появился (пусть и шириной в 1 пиксель) – всё стало хорошо :-D
Кстати, добавляемое значение можно не подбирать, а вычислить, исходя из 1 пиксела ширины полоски градиента.
Error1024
16.11.2019 10:30Это костыль, при изменении размера элемента с градиентом можно получить как обратное «зазубривание», так и размытие на несколько пикселей
pansom
16.11.2019 15:25Вы сейчас о CSS говорите, тут везде костыли и для любого верстальщика это стандартные вещи. Так то медиа выражения есть.
pansom
Эм… дальше что? Статья про transition: color .3s на ховер?
Это любой верстальщик своей головой додумывает тут же как увидит эти зубы.
hisbvdis Автор
Я своей головой не смог додумать, поэтому посчитал информацию потенциально полезной для других, кто так же не знал про такой способ
pansom
В 5 классе нам задачу задали, указать любое число между 2 и 1. Я её запомнил на всю жизнь, ибо на неё тогда не ответил и это был столь огромный удар, что я запомнил до сих пор, а меж тем уже 34 годика.
Думаю у вас также такого рода задача была.
Делайте выводы.