Ответы пользователя по тегу CSS
  • Как сделать круглый бордюр не до конца?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    круглый бордюр

    Можно хоть звездочкой его сделать - habr.com/post/349988/.
    Ответ написан
    Комментировать
  • Не броская на первый взгляд сущность – как реализовано это шаманство?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно сделать на SVG:
    <svg viewBox="0 0 100 100">
      <defs>
        <filter id="noise">
          <feTurbulence id="js-turbulence" type="fractalNoise" baseFrequency="30" result="noisy"></feTurbulence>
          <feColorMatrix type="saturate" values="0"></feColorMatrix>
          <feBlend in="SourceGraphic" in2="noisy" mode="multiply"></feBlend>
        </filter>
        <clipPath id="the-object">
          <circle cx="50" cy="50" r="50" fill="currentColor"></circle>
        </clipPath>
      </defs>
      <circle cx="50" cy="50" r="50" fill="#5FDDD1" filter="url(#noise)" clip-path="url(#the-object)"></circle>
    </svg>

    Только вместо круга взять path, который вам нужен. Изменяя значение baseFrequency получите "анимированный" шум - codepen.
    Ответ написан
    1 комментарий
  • Как изменить курсор на картинку при наведении?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Пытаюсь установить вместо курсора фотографию размером 500 на 500 пикселей и у меня не получается... нужно чтобы он менялся от секции к секции

    Еще пару лет назад в FF было ограничение на размер в 128px, полагаю и в других современных браузерах ситуация схожая. Так что кроссбраузерно вы такую большую картинку туда не впихнете. Альтернативный подход - наоборот, заменять курсор на маленькую прозрачную точку, а сверху вашей страницы класть картинку в виде img, делать ей position: fixed , pointer-events: none и top/left соответствующие координатам мыши. На событие "mousemove" добавить логику, которая будет выбирать и показывать картинку в зависимости от вашей секции и обновлять ее координаты.
    Ответ написан
    Комментировать
  • Как быть - учить GreenSock или чистую CSS Animation?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Кто нибудь из серьёзных верстальщиков делает анимацию самостоятельно, вот чтобы без плагинов писать весь код с нуля?

    Да, вполне. Тут нужно понять такую вещь: есть задача и есть инструмент под задачу. Если вам нужно посадить кактус в горшок - экскаватор будет не к месту. И не всегда универсальный набор шестигранников подойдет под треугольный болт.

    Вопрос : нужно ли вообще заморачиваться над серьёзным изучением анимации, джаваскрипта, или же забить и учить документацию гринсок?

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

    P.S.: И да, не зацикливайтесь на каком-то конкретном инструменте (например GSAP) только потому, что кто-то сказал, что это "стандарт". Всегда есть альтернатива. Например anime.js. То, что инструмент активно не развивается, не значит, что он вдруг перестал решать свою задачу. Старая добрая классическая zippo работала, работает и вас переживет.
    Ответ написан
    Комментировать
  • Как сделать эффекты как на сайте примере?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Что ж вас всех так тянет к этому канвасу? (риторический вопрос)

    1. Анимации буквы под ней фото. Как это делается? Подозреваю что canvas используется

    Если вы про большие "прозрачные" буквы, через которые видны фотографии, то никакой канвас там не нужен. Это делается на svg-масках - просто и производительно. Соответственно при перемещении мышки добавляется transform:translate для маски. Задача тривиальная, но оставлю пример для ознакомления. Переход между слайдами делается аналогично.

    2. Листание мышкой (зажимаешь появляются направляющие вверх-вниз, вправо-влево).

    На нажатие мышки вешаете обработчик, показывающий эти элементы (думаю не стоит говорить о том, как поменять им opacity). Далее точно так же - на событие "перетаскивания" добавляете transform:translate для всех этих линий и transform:scale для кружков. При переходе между слайдами добавляете еще больше трансформаций по вкусу.

    Остальные эффекты тоже интересуют. Понятно что css3, js, canvas

    Для рисования линий можно опять взять svg и..... Это вообще мощный прием, много куда его можно приткнуть. Появление надписей можно сделать на CSS-анимациях. Вариантов много, можно начать с вот этого примера (только делать все в обратную сторону) или поиграть с размерами псевдоэлементов, положенных поверх текстов. Еще там есть постраничный скролл, но это легко загуглить.
    Ответ написан
    5 комментариев
  • Используем google fonts?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Или где-то какая-нибудь подлость всё же всплывёт?

    Роскомнадзор может заблокировать адреса, с которых гугл раздает шрифты. И будет печалька.
    Ответ написан
    1 комментарий
  • Префиксы для кроссбраузерности, насколько сегодня актуально?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    на сколько сегодня актуально? Все браузеры поддерживают самые распространенные св-ва flex...

    Не забывайте про телефоны, там все не так хорошо, как на десктопах. Какие-нибудь ios 6 или android 4.3 все еще существуют. Не посылать же их в известном направлении просто потому, что нам лень поставить пару префиксов?

    По поводу предыдущих ответов
    Использование автоматизации для добавления префиксов - не требуется

    emmet все дописывает

    Первое выражение как минимум странно. Оно имеет право на существование в некоторых случаях, но в целом - зачем что-то помнить и делать руками? Скажите автопрефиксеру какие браузеры вам нужно поддерживать, и он сам все сделает. Где надо добавит префиксы, где не надо - не добавит. И даже уберет лишние, там, где они уже не нужны. Штука с emmet тоже не всегда будет хороша. Главная ее проблема - захламление кода, который видит разработчик.
    Ответ написан
    1 комментарий
  • Как быстрее конвертировать из пикселей в rem?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Есть плагин для PostCSS - postcss-pxtorem.
    Ответ написан
    Комментировать
  • Как сделать кастомные тултипы в определённых областях изображения?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Или можно всё сделать проще?

    Так у них [на сайте, на который вы ссылку дали] и так все просто:
    1. Есть SVG, в которую через image воткнули картинки. Это обычные png с прозрачным фоном. Каждый человек - отдельная картинка. Можно еще сделать маску вокруг каждого человека, чтобы буквально вырезать его по контуру и определять наведение не по прямоугольнику (как у них), а по силуэту
    2. Зная положение каждого человека, можно нарисовать текст над ним. Это можно как внутри SVG сделать (но тогда адаптировать сложно будет), так и с помощью обычных div`ов и абсолютного позиционирования из CSS. Если сделать viewbox='0 0 100 100' у SVG, то считать будет проще.
    3. При наведении на человека (думаю про addEventListener вы знаете):
      • Берем большой прямоугольник в SVG, заливаем его черным полупрозрачным, таким образом делается затемнение. Показываем его.
      • Человека можно заменить другим человеком (как сделано на том сайте), или применить к нему какой-нибудь фильтр, чтобы цвета изменить. В любом нормальном графическом редакторе вы найдете кучу фильтров.
      • Показываем текст

        Когда я говорю "показываем" я имею в виду, что есть миллион способов сделать это, от банального отключения display:none или изменения прозрачности и до хитрых анимаций с SVG-масками или еще чем-нибудь.

    Ответ написан
    Комментировать
  • Как масштабировать SVG так, чтобы сохранить радиус окружностей?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Используя чисто SVG так сделать не получится. Тут есть два пути решения проблемы:
    1. Первый - убрать preserveAspectRatio и сделать все на скриптах, то есть все координаты на SVG будут рассчитываться по ходу дела. Этот способ будет хорошим выбором, если у вас данные постоянно меняются и нужно все перерисовывать, на лету менять тип графика и.т.д.
    2. Второй путь - поверх SVG положить еще один слой и на нем расположить точки, текст и все, что там еще нужно. Этот вариант можно набросать по-быстрому (пример) и он хорош в случае, когда данные сильно не меняются (или вообще не меняются - только один раз с сервера прилетают) и нужно простое решение без особой js-логики.
    Ответ написан
    Комментировать
  • User agent stylesheet и цвет орфографической ошибки?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В отдаленном светлом будущем скорее всего у нас будут псевдоэлементы ::spelling-error и ::grammar-error, мы будем из CSS переопределять стандартное подчеркивание. На данный момент вот так просто из CSS ничего сделать не получится.

    куда копать

    В девелоперской версии Хрома есть chrome.automation API, в котором по идее с помощью метода getTree() можно получить некое дерево, похожее на DOM, но на самом деле им не являющееся, и опять же по идее в нем должны быть элементы типа AutomationNode для слов, которые содержат ошибки, и у них есть некоторые свойства вроде цвета и подчеркивания. Сам я этим никогда не пользовался, но интуиция подсказывает, что стоит копать в эту сторону.

    P.S.: Если вам нужно решение для сайта "здесь и сейчас", то думаю лучше будет совсем отключить проверку орфографии со стороны браузера и вместо нее вставить кастомную, в сети есть готовые решения.
    Ответ написан
    2 комментария
  • В macOS San Francisco, windows Segoe UI?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    На маке и под виндой, нужно отображение контента шрифтом по умолчанию

    Не стоит забывать и о других операционных системах. Есть более глобальная версия этого заклинания:
    font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif


    Здесь примерно такой расклад:
    • -apple-system - для macOS
    • BlinkMacSystemFont - обратно для macOS
    • Segoe UI - Windows (начиная с Висты)
    • Roboto - Ведроид
    • Oxygen - Линуксы с кедами
    • Ubuntu - Собственно Ubuntu и некоторые ее производные
    • Cantarell - Линуксы с гномами
    • Fira Sans - Шрифт от мозиллы (был сделан для Firefox OS, теперь не очень понятно, нужно это или нет, я так ни разу и не видел вживую устройства с этой ОС)
    • Droid Sans - Старый ведроид
    • Helvetica Neue - Еще немного старых маков
    • sans-serif - На всякий случай

    Emoji в этом варианте не включаются (обычно они и не нужны), но можно добавить так, как вы написали (в конце, после sans-serif). В отдаленном светлом будущем у нас еще будет system-ui, но пока будущее еще не до конца наступило.

    При использовании таких заклинаний нужно помнить о том, что "-apple-system" не стоит использовать в свойстве font, только в font-family, а то все может внезапно сломаться. Про проблемы с SEO ни разу не слышал, скорее будет небольшой положительный эффект за счет уменьшения скорости загрузки страниц. А может и не будет.
    Ответ написан
    Комментировать
  • Есть ли у вас похожие проекты?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Как разумнее такое реализовать? По идеи полоски и синие точки должны крутиться в разные стороны, с keyframes верстать?

    1. Рисуете все эти дуги, точки и иконки в SVG.
    2. Дуги и точки анимируете с помощью transform:rotate и keyframes (поворот от 0 до 1turn, в этом нет ничего сильно замороченного, но оставлю пример для изучения), каждой ставите свое время полного оборота по вкусу.
    3. Иконки винды, ведра и айоси подвергаете извороту "туда-обратно" (как в этом примере). Обертку крутите в одну сторону, а иконку в другую - будет выглядеть, как будто они летают по кругу.
    Ответ написан
    Комментировать
  • SVG и анимация - как собрать в кучу и сделать?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Смысл такой: из точки в верхнем левом углу выходит линия, которая переходит в какую либо другую точку на карте. Следующая линия также выходит из первоначальной точки, но уже переходит в другую точку на карте и т.д. Вообщем, как возможно сделать такое

    Рисуете эти линии в векторном графическом редакторе (каждую по отдельности); затем действуете по принципу, описанному в этой статье, чтобы эти линии прорисовывались от начала до конца.

    Если нужно сделать переменную толщину линий, как на картинке, то принцип будет тот же, но с дополнением: толщина линий делается довольно большой, а сверху к ним применяется SVG-маска (как с ними работать описано вот в этой статье), состоящая из кривых вытянутых треугольников (не знаю, как описать по-русски изогнутую линию переменной толщины, но по вашей картинке понятно, о чем речь).
    Ответ написан
  • Как верстают такой фон?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    И вообще может уже что-то появилось, чтобы не ставить жирные картинки в качестве бекграунда?

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

    Как верстают такой фон?

    Можно по-разному подходить к вопросу. Как вариант три слоя:
    1. Левый контент, у него фон в виде левого круга (чтобы не париться с его размером на разных размерах экрана - ведь там по идее контент должен помещаться в круг). Тут главное все аккуратно расположить и не забывать про critical css.
    2. Коптер (поскольку он жирный, его можно подгружать асинхронно и выдвигать с помощью CSS-анимации из-за правого края экрана - будет и красиво и производительно; я бы еще какой-нибудь эффект к тексту добавил, но это уже другая история). Его размер видимо должен зависеть от ширины экрана и размера контента слева. Надо заранее сообразить, как это все должно адаптивиться.
    3. Меню, которое справа вверху, оно должно быть поверх коптера (опять вопрос про адаптивность).
    4*. Фон, который самый-самый большой фон можно просто поставить на background у хидера. Поскольку он в векторе, его можно сделать гораздо выше, чем на картинке, чтобы опять же не париться, что он вылезет из скругления внизу секции на телефоне. Само это скругление можно сделать тысячей способов, на тостере уже не раз спрашивали.

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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно поиграть с stroke-dasharray у этой линии (наводящий пример и статья вдогонку, чтобы понимать контекст).
    Ответ написан
    Комментировать
  • Как сделать шестиугольник в который потом вставить картинку?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно сделать несколько оберток на CSS (пример). Это немного костыльный вариант. Можно взять SVG (пример, уберите анимацию границы и останется чисто шестиугольник). Этот вариант поуниверсальнее будет.
    Ответ написан
    Комментировать
  • Как сделать полосу разных цветов?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    background: linear-gradient(to right, #f77 0%, #f77 30%, #fff 30%, #fff 100%);
    Ответ написан
    Комментировать
  • Что использовать для адаптивной вёрстке?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    для адаптивной вёрстке?

    В современной практике нет разделения на резиновую/адаптивную/отзывчивую верстку - это все единый процесс создания компонентов, которые хорошо выглядят на разных размерах экрана. Ответ на ваш вопрос очевиден: используйте тот инструмент, который хорошо решает вашу конкретную задачу. Не нужно вообще всегда использовать вот этот или вот тот инструмент, потому что кто-то в интернете так сказал. Смотрите на логику поведения/применения ваших конкретных компонентов и выбирайте:
    1. px - если нужно жестко задать размер
    2. % - если размер привязан к чему-то в процентном отношении
    3. vw - если нужно привязать что-то к размеру вьюпорта (например размер шрифта)
    4. vh - то же самое (ну и vmin/vmax туда же)
    5. em - если нужно привязать размер чего-то к размеру шрифта (текущему или родительскому)
    6. rem - то же самое, но глобально (можно использовать везде и для всего)
    7. cm, mm, in, pt, pc - если нужно красиво выводить на печать
    8. ex, ch - не сильно удобные единицы измерения в текущих реалиях
    Ответ написан
    Комментировать
  • Как сделать анимацию стирания кода?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Посмотрите пример с сердечком из статьи SVG маски и вау-эффекты: о магии простыми словами. Он должен навести на правильные мысли.
    Ответ написан
    Комментировать