Задать вопрос
Ответы пользователя по тегу CSS
  • «Миксины» в CSS?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    или PostCSS


    В CSSNext есть такая штука. Синтаксис похож на то, что вы ищете:
    :root {
      --danger-theme: {
        color: white;
        background-color: red;
      }
    }
    
    .danger {
      @apply --danger-theme;
    }
    Ответ написан
    3 комментария
  • Как верстать изображения с выносными названиями её элементов?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно картинкой вставить. Просто. Быстро. Размер шрифта начинает отличаться от остальной страницы при адаптивном уменьшении картинки. Печаль для дизайнера-перфекциониста. А еще буквы могут начать мылиться. Это вообще печаль. Если нужно добавить/убрать стрелки - придется перерисовывать картинку. Это неприемлемо, если к ним привязана какая-то еще логика и они показываются не всегда.

    Можно использовать связку SVG+CSS:
    - Берется SVG с viewbox='0 0 100 100'.
    - Основная картинка вставляется в виде image.
    - Стрелки рисуем в векторе (это просто дуги из одной точки в другую с маркером на конце).
    - Если нужно сделать их двухцветными, как в вашем примере - делаем маску по картинке и применяем ее к стрелкам.
    - Надписи верстаем отдельно (div`ами) и абсолютно позиционируем сверху. Координаты будут соответствовать им же в svg (от 0 до 100). Это нужно для того, чтобы сохранять размер шрифта при адаптивном уменьшении всего этого.

    Дальше при необходимости мы можем легко из css или js показывать или скрывать надписи и стрелки.
    Ответ написан
    5 комментариев
  • Как сделать эффект при наведении как в Windows 10?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    1. Набор элементов с бордерами (блоки-флексы-гриды по вкусу).
    2. Сверху абсолютно позиционированный элемент в 200vh/200vw с фоном в виде радиального градиента из прозрачного в цвет фона body или что там еще снизу находится.
    3. В вышеупомянутых элементах текстам задаем z-index и они ложатся сверху градиента.
    4. На событие mousemove вешаем обработчик, который меняет координаты градиента.

    Получаем что-то такое:
    5b5f2943a7553328112612.pngcodepen

    P.S.: И в перспективе вставляйте картинки сюда, а не на левый хостинг.
    Ответ написан
    Комментировать
  • Как сделать такой бордер?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Подобные бордеры легко рисуются линейными градиентами на одном элементе (пример).
    Ответ написан
    2 комментария
  • Бегущая линия по лендингу?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    бежит линия (ломаная), добегает до блока - он появляется и бежит дальше вниз по лендингу

    Если я правильно понял вопрос, то вам подойдет пример скролла из этой статьи, только линию нужно будет заменить на свою.
    Ответ написан
    Комментировать
  • Как в SVG PATH установить фоновый рисунок?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    1. Нарисуйте веревку как прямоугольник (не линию с толщиной, а именно замкнутый контур)
    2. Сделайте внутри SVG pattern с нужной картинкой (image)
    3. Используйте свойство fill, чтобы залить прямоугольник этим паттерном


    При возникновении трудностей - гуглите упомянутые термины.
    Ответ написан
    1 комментарий
  • Boilerplate для не SPA?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Без vue, react и прочих библиотек. Интересует как писать js компоненты типа табы, модалки и т.п. Как реализовать их взаимодействие. Хочется посмотреть на примеры и реализации.

    Если говорить о наборе компонентов интерфейса, особо не связанных между собой по данным (а в не-spa обычно это так и есть), то можете посмотреть мой велосипед. Там все просто, он сделан как раз для изучения. Убрав компоненты и утилиты получите почти готовый шаблон для сборки.

    для многостраничных сайтов

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

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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Как такую тень сделать?

    Использовать фильтр с feOffset и feGaussianBlur. Просто сдвинуть и размыть. Получится тень. Начать можно вот отсюда.

    Есть конечно и feDropShadow, но по сути это является укороченным синтаксисом для первого варианта и не работает в IE.
    Ответ написан
  • Сделать такую карту SVG?

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

    Слой номер два: Плашки с текстом. Их удобно не в картинку пихать, а верстать на html/css и располагать поверх картинки с помощью абсолютного позиционирования или трансформаций. Если сообразить для картинки viewbox='0 0 100 100', то даже считать ничего не нужно будет.

    Дальше на css на :hover/:focus по областям показываете плашки с текстом. Можно это на :nth-child построить или еще как-нибудь - смотрите, что будет удобнее. Ну и самим областям меняете fill на оранжевый.

    P.S.: Можно еще сделать, чтобы в плашках как бы вода с волнами наливалась при наведении мыши, но это уже совсем другая история...
    Ответ написан
    3 комментария
  • Как сделать круглый бордюр не до конца?

    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-масками или еще чем-нибудь.

    Ответ написан
    Комментировать