Ответы пользователя по тегу CSS
  • Как с помощью css подстроить размер текста под размеры блока?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В общем случае на CSS так сделать нельзя. В некоторых случаях можно привязать размер шрифта к ширине вьюпорта (статейка по теме), но вашу проблему это скорее всего не решит и придется использовать JS.
    Ответ написан
    Комментировать
  • Z-index: over9999 - зачем?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Z-index over9000 не нужен вообще. Это костыль, который некоторые люди, не понимающие css, используют для того, чтобы быть уверенными в том, что их элемент будет "сверху". При этом цивилизованные люди ограничиваются небольшими значениями z-index, с которыми проще работать. Иногда используют логические схемы вроде таких:
    • 0-9 - в пределах компонента
    • 10-19 - для всплывающих менюшек, подсказок и.т.д.
    • 20-25 - для выезжающих меню, модалок и.т.д.

    Можно ограничиться только диапазоном 0-9, но такая схема, хоть и является избыточной, позволяет проще ориентироваться в коде.

    А те, кто говорит "Но если используются сторонние плагины, в которых элементы имеют большой z-index, а их надо перекрыть, то ничего другого не остается" в ответах выше ( mletov ) просто решают один костыль подпереть другим. Не стоит утверждать, что ничего другого не остается - в большинстве случаев предпочтительнее в такой ситуации использовать обертку (пример упрощен для наглядности):

    <div class="my-div">My element</div>
    <div class="wrapper">
        <div class="over9000">over9000</div>
    </div>


    div { position: absolute; width: 100%; }
    
    .my-div   { background: #0f0; z-index: 2; }
    .wrapper  { z-index: 1; }
    .over9000 { background: #f00; z-index: 9999 !important; }


    В такой ситуации "мой элемент" будет выше, чем "over9000".
    codepen
    Ответ написан
    2 комментария
  • Как заставить все элементы станицы наследовать размер шрифта с body а не с непосредственного родителя в единицах em?

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

    1em = размер шрифта родительского элемента
    1rem = размер шрифта корневого ( :root ) элемента, в данном случае - это html

    Вероятно вам необходимо использовать единицы rem.
    Ответ написан
    Комментировать
  • Как ускорить анимацию?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Полагаю, will-change: transform присутствует. Можно еще попробовать на время анимации добавлять к списку pointer-events: none, как в том хаке с плавным скроллом. Если не поможет, то стоит подумать о том, что из большого списка при движении в горизонтальном направлении часть групп не будет видна. Соответственно можно анимировать по отдельности те, которые видны (с небольшой задержкой у каждой следующей - как на ведроиде центр уведомлений очищается), а остальные (скрытые) просто вставлять в нужное место при завершении анимации у первых.
    Ответ написан
    1 комментарий
  • Как сделать такую фигуру?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Just Do It!

    Вообще идея использовать clip-path - это хорошая идея, ноо... если фон у вас и правда белый....
    (размеры взял из головы, не в них смысл)
    .test {
        margin: 100px;
        height: 200px;
        width:  600px;
        transform: perspective(600px) rotateY(45deg);
        border-top-left-radius:    50px 100px;
        border-bottom-left-radius: 50px 100px;
        overflow: hidden;
        background: #000;
    }
    
    .test::after {
        background: #fff;
        content: '';
        display: block;
        height: 120%;
        width: 30%;
        transform: translateX(75%) translateY(-10%);
        float: right;
        border-radius: 50%;
    }


    273d37ed0c98421996e1600752619040.pngCodePen
    Ответ написан
    1 комментарий
  • Как создать подложку на ::before?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Немного поправил ваш код:
    .arrow {
      position: relative;
    }
    
    .arrow::before {
      content: '';
      display: block;
      width:  650px;
      height: 600px;
      background: blue;
    }
    
    .arrow::after {
      content: '';
      display: block;
      position: absolute;
      top:  0;
      left: 0;
      width:  600px;
      height: 400px;
      background: url(http://cliparting.com/wp-content/uploads/2016/05/Arrow-clipart-arrow-graphics-clipartcow-2.png);
    }
    Ответ написан
    Комментировать
  • Как сделать кнопку со с резаными углами?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Иван Карпущенко верно говорит, можно использовать transform:skew, но вот по поводу использования псевдоэлемента для текста - очень спорная мысль, точнее сказать не универсальная. Или придется этот текст передавать через data-атрибут, что будет довольно странным решением. Гораздо практичнее просто в button добавить span с текстом - codepen.
    Ответ написан
    Комментировать
  • Какой порядок обучения веб-верстке вы посоветуете?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    По вашим словам кажется, что вы понятия не имеете о том, какой инструмент для чего нужен. Так что рекомендую следующий план:

    HTML: практика -> Pug или любой другой препроцессор -> понять зачем он нужен -> микроданные -> wai-aria
    CSS: практика -> каждый день выкладывать один сверстанный компонент на CodePen -> всякое разное -> изучить внутренности normalize.css -> использовать autoprefixer -> изучать хорошие практики -> написать свою сетку -> познакомиться с БЭМ, RSCSS -> осознать полезность методологий -> препроцессоры (LESS проще, SASS моднее, есть еще много разных) -> PostCSS -> осознать разницу между пре-процессором и пост-процессором
    JS: ES6+ -> Babel -> понять смысл инструмента -> писать много велосипедов -> много велосипедов -> больше велосипедов богу велосипедов -> паттерны проектирования -> тестирование
    Gulp/Grunt и Webpack/Browserify: осознать разницу -> использовать по мере надобности -> научиться автоматизировать все, что можно автоматизировать
    Git, NPM: без комментариев

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

    Есть еще один дельный совет: читайте ответы на тостере и изучайте решения, которые народ предлагает. Разбирайтесь с тем, как они что-то делают. В перспективе сами отвечайте. Метод утенка рулит.

    Ну и умение задавать вопросы тоже лишним не будет.
    Ответ написан
    Комментировать
  • Как перестроить дерево в Media запросах?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Если я вас правильно понял, то SASS тут не при чем. Почитайте про специфичность селекторов в CSS (это легко гуглится). В крайнем случае можно было бы использовать !important в вашей ситуации, но это только в том случае, если вы понимаете то, зачем вы это делаете, и есть какая-то система его использования во всем проекте.

    Но разумнее будет использовать методологии вроде популярного БЭМ или не очень популярного RSCSS. Это будет гораздо лучшим решением по сравнению с попыткой одну бяку закостылить другой.
    Ответ написан
    Комментировать
  • Как сделать угл у блока с разным background через css?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно совместить идею использования градиентов на ::before и ::after и старый хак с padding в процентах, чтобы получить универальную конструкцию, которая работает на любой ширине родительского элемента и при любом содержимом: codepen.

    Также можно использовать calc для вычисления переходных точек этих градиентов (если вам нужно сохранять ширину полоски одинаковой при изменении ширины элемента), но нужно помнить про IE, который не очень это умеет, и в таком случае придется подставлять подпорку для него.
    Ответ написан
    Комментировать
  • Как сделать такой градиент?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно делать фон, состоящий из нескольких градиентов:
    background:
        radial-gradient(circle at center, #fff 50%, transparent 55%),
        linear-gradient(-45deg, #001510, #00bf8f);


    codepen
    Ответ написан
    Комментировать
  • Как выровнять текст в ol?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Проще всего вытащить сами цифры абсолютным позиционированием, как в этом примере, а текст сам по себе выровняется. В качестве бонуса этот подход должен спокойно работать в IE9+ без полифиллов и костылей.
    Ответ написан
    Комментировать
  • Как создавать анимации?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В целом такие анимации обычно не предполагают какую-то их поддержку (сделали, порадовались, на новый год сделали новую, с елочкой, а старую выбросили). Поэтому можно не заморачиваться и сделать все по-быстрому на чистом CSS (можно добавить пре/пост-процессор по вкусу). Пример вашей анимации (я не старался повторить один в один и не проверял в чем-то, отличном от хрома, но мысль должна быть ясна).
    Ответ написан
    Комментировать
  • Где можно найти лёгкие макеты .psd для новичка в вёртке?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Сходите на psdrepo.com. Там много приятных глазу макетов (часть из них была замечена в рассылке htmlacademy). Есть целые страницы, есть просто наборы элементов интерфейса.
    Ответ написан
    Комментировать
  • Как правильно использовать в html единицу измерения em?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вы задаете :root значение размера шрифта (кстати познакомьтесь с вот этой идеей - сам пользуюсь постоянно, замечательная вещь). По умолчанию обычно размер шрифта для :root в браузерах равен 16px. Задавать для :root размер шрифта в rem/em бессмысленно - это как масло масляное.

    1rem (1 root em) будет равен тому размеру шрифта, который задан для :root и будет одинаковым для всех элементов на странице. Если вы вложите кучу элементов с font-size: 1.1rem друг в друга, то все они будут иметь один и тот же размер шрифта.

    1em у каждого элемента будет свой, равный размеру шрифта родительского элемента. Если вы вложите кучу элементов с font-size: 1.1em друг в друга, то каждый следующий будет иметь размер шрифта больше, чем предыдущий.

    ---

    Сам я стараюсь все, что можно, делать в rem (включая все размеры на странице, отступы, border-radius, брейкпоинты и.т.д.) в сочетании с адаптивной типографикой из вышеприведенной статьи, а единицу em использую очень редко. А размеры в пикселях - вообще редкость, только если 1-2px в местах, где округление может сломаться. Такой подход не является общепринятым, но может быть очень удобным, я его описывал в статье на хабре. Демка там получилась так себе, но с тех пор идея обкаталась и успешно применяется.
    Ответ написан
    1 комментарий
  • Как правильно поставить canvas-анимацию на фон сайта?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Имеете в виду particles.js? (чувствую, что да, вы уже задавали сегодня этот вопрос).

    Подскажите, может какие нюансы есть...

    Полезно прочитать инструкцию по использованию.

    P.S.: Описание "не хочет работать" не дает представления о вашей проблеме. Соответственно не ожидайте, что кто-то угадает, что именно у вас не так.
    Ответ написан
    2 комментария
  • Как бы вы сверстали такой блок?

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

    Можно взять базовую разметку:
    .project-timeline
        .step
            .number 1
            .content Lorem ipsum dolor sit amet.
        .step
            .number 2
            .content Lorem ipsum dolor sit amet.
        ....


    С помощью CSS-трансформаций перевернуть половину элементов, а их содержимое перевернуть еще раз.
    получится что-то такое
    a3d02b15825a4eb58aa11fd45a526e2b.png


    На маленьких экранах все повернуть еще раз.

    получится вот так
    3bd5d493f63e43fd98b845854a6ba5e9.png


    ---
    CodePen
    Ответ написан
    Комментировать
  • На разных страницах по разному работает css?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    На главной странице в 728 строке stylesheet_custom.css подключается второй раз.
    Ответ написан
    Комментировать
  • Как в less сделал арифметическую прогрессию?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    .generate-styles(3);
    
    .generate-styles(@n, @i: 1) when (@i =< @n) {
      .style-@{i} {
        left: 50px + @i * 15px;
      }
      .generate-styles(@n, (@i + 1));
    }


    На выходе даст это:
    .style-1 {
      left: 65px;
    }
    .style-2 {
      left: 80px;
    }
    .style-3 {
      left: 95px;
    }
    Ответ написан
    1 комментарий
  • Как сделать такой фон на чистом css?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    на чистом css?

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