За последние 24 часа нас посетили 22608 программистов и 1221 робот. Сейчас ищут 679 программистов ...

Градиент на border - отдельно для каждой стороны

Тема в разделе "HTML и CSS", создана пользователем TeslaFeo, 5 май 2017.

  1. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Доброе время суток, уважаемые форумчане!

    Ковыряю различные CSS хитрости, в частности, ленточки.

    Те, кто в теме, знают, что левый край ленточки - это псевдоэлемент :before c нулевой высотой и шириной, и широкими border, при этом левый border - прозрачный.

    Захотелось наложить на ленточку градиент.

    Задумал сделать так, чтобы градиент был вертикальный, трёхцветный, при этом верхний и нижний цвета - одинаковые. Потом на верхний и нижний border-ы before можно будет наложить двухцветные вертикальные градиенты, а на правый border - такой же градиент, как и на основной блок.
    И настроить всё это таким образом, чтобы они сливались с основным блоком.

    На основной блок градиент спокойно накладывается свойством backround-image (или просто bacground).

    Наложить его на border-ы before тоже можно свойством border-image.
    Но вот проблема: border-image нельзя прописывать отдельно для каждой стороны!
    У кого есть читы по этой теме?

    P. S. Из положения можно выйти, прописав radial-gradient.
    Получается, вполне себе, не принужденно, но всё же...
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Это вот тот самый момент, когда лучшее - враг хорошего, и проще использовать спрайты готовые, натягивая их на бэкграунд. Лайвхак в том, что для заливки градиентом нужно использовать градиентную полосу толщиной в 1 пиксель. При горизонтальном репите или скейле она будет давать идеальный градиент на всей протяженности элемента. Адаптивность не ломается. Ну а сам уголок можно сделать полностью автономным спрайтом.
     
    TeslaFeo нравится это.