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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Ну строго говоря для решения задачи "на CSS добавить внутри квадрата квадраты меньше и другим цветом" достаточно одного div-элемента (нет нужды добавлять новый элемент на каждый декоративный квадрат).



    Но лучше все же уточнить у задавшего вопрос, что значит "не стереть локти" в его понимании.
    Ответ написан
    Комментировать
  • Обтекание текстом фиксированного блока?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    На CSS такое обтекание никак не сделать. Но можно пойти одним весьма хитроподвывернутым способом - продублировать текст и скроллить два блока с контентом одновременно. Как в этом примере, только в одной плоскости, без "перевернутой" трансформации:



    Это позволит сделать плавное движение, без рывков при перестроении элементов в DOM-дереве.
    Ответ написан
    3 комментария
  • Для каких проектов стоит подключать reset.css?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    У браузеров есть встроенные стили (user agent stylesheets), которые они применяют к элементам на страницах по умолчанию. И эти стили у разных браузеров разные. Это не сразу бросается в глаза, но отличий там довольно много. И эти отличия вынесут вам мозг при тестировании любой более-менее сложной верстки.

    Один вариант решения проблемы - normalize.css. Там переопределяются лишь некоторые свойства, которые отличаются в разных встроенных наборах стилей (ну и плюс некоторые детали, которые не так важны в этом контесте), но большая часть стилей по умолчанию (которые одинаковые в разных браузерах) остается на месте.

    Есть альтернативный вариант с ресетами, когда сбрасывается все подряд без разбора. Что лучше, normalize или ресеты - это больше вопрос личных предпочтений и привычек, но не использовать ничего из этого - это верный путь к поиску таинственных багов, когда в одном из множества браузеров что-то внезапно не работает, хотя по идее должно.
    Ответ написан
  • Как заставить взаимодействовать два соседних тега друг с другом?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вероятно вам нужно использовать "+":
    nav:hover + section
      left: 170px
    Ответ написан
    1 комментарий
  • Фигуры на чистом css или svg?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Давайте посмотрим с разных сторон:

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

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

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

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

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

    С шестой стороны есть вопрос производительности. Часто для имитации одного элемента в SVG нужен десяток-другой элементов, стилизованных с помощью CSS. А если таких элементов на странице сотни (и они превращаются в тысячи), то это начинает влиять на скорость применения стилей к странице.

    Итого: иногда CSS - это быстрый и надежный вариант. Но у него есть ограничения, так что на практике SVG используется для этих задач чаще. И да, проверять кроссбраузерность стоит в любом случае.
    Ответ написан
    Комментировать
  • Position: fixed; - фиксирует элемент не на экране, а в родительском блоке. Как исправить?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Без кода сложно говорить, но третий глаз подсказывает, что скорее всего у родительского блока задано свойство transform, filter или will-change. Уберите его и все встанет на свои места.
    Ответ написан
  • Как сверстать эту магию?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вариант, предложенный Максим Ленский не адаптивный и ломается при изменении контента, так что предложу свой.

    Треугольники можно было упустить, не в них суть)


    Ну ну совсем так. При верстке таких сайтов важно сохранять контекст, в котором был дизайнер (если с ним есть контакт, то лучше все обсудить с ним, но в нашем случае пример в вакууме, так что думаем сами). Конкретные размеры обычно не так важны, как контекст. Здесь его задает равномерная линия между треугольниками и ее важно сохранить. Исходя из этого соображения нужно посчитать, какого размера должны быть треугольники, чтобы все влезало и "было красиво", учитывая, что высоты всех блоков могут меняться. CSS у нас не дает возможности делать вычисления исходя из высоты соседних элементов, так что придется добавить щепотку JS. Ну а дальше - дело техники.

    5e202e499c905300447523.png

    codepen.io/sfi0zy/pen/zYxJNmG.
    Ответ написан
    5 комментариев
  • Периодическое мерцание элементов?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В postcss-trolling есть готовая CSS анимация под вашу задачу. Нужно лишь задать разный animation-delay элементам (возможно с помощью :nth-of-type или :nth-child).
    Ответ написан
  • Как реализовать такую расстановку блоков на FlexBox CSS?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    С помощью чего и как можно реализовать вот такую расстановку блоков?

    На ум сразу приходит masonry.
    Ответ написан
    Комментировать
  • Как реализовать такой эффект на изображение?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Посоветуйте пожалуйста какие-нибудь библиотеки.

    Библиотеки - не труъ. Здесь достаточно чистого JS и щепотки GLSL. Рекомендую почитать свое Введение в программирование шейдеров для верстальщиков, там аналогичный пример есть (если картинки не прогружаются, можно включить VPN, там что-то неладное бывает с ними иногда, видно происки фиксиков роскомнадзора). А прямо этот эффект делал Юрий Артюх на одном из стримов.
    Ответ написан
    Комментировать
  • Проблемы с анимацией в Safari?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    на айфонах

    caniuse.com/#feat=css-animation:
    iOS 6.1 and below do not support animation on pseudo-elements. iOS 7 and higher are reported to have buggy behavior with animating pseudo-elements.


    Обе лагающие анимации как раз связаны с псевдоэлементами. Имеет смысл их заменить на обычные div-элементы.
    Ответ написан
    1 комментарий
  • Оцените пожалуйста вёрстку(2)?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Замечание номер раз: код минифицирован, не смотрел.
    Замечание номер два: макеты не видел, возможно местами накосячил дизайнер.

    Беглый просмотр дал следующее:

    №1:
    - Шрифтыыыы... Arial - это боль. Вы, вероятно, забыли подключить нужный шрифт
    - Иконки социальных сетей слишком маленькие, сложно попасть, можно поболее сделать
    - Две иконки одинаковые, нехорошо, путает
    - В поле для поиска серым по серому написано - не видно
    - Гамбургер есть, но что он делает - не понятно
    - В карусели, при нажатии на точки появляется ненужный outline
    - В поле для поиска иконка съехала
    - Размер шрифта в одинаковых элементах скачет
    - Вертикальные отступы скачут
    - При адаптиве картинки плющатся
    - Какие-то ошибки в консоли

    №2
    - Такое впечатление, что навигация и текст под ней выровнены не по левому краю
    - Так и хочется, чтобы кнопка с рыжей границей при наведении стала вся рыжей, как это обычно и делают
    - Выпадающая выбиралка языка и валюты пропадает, ее нельзя использовать мышкой
    - Два поля для поиска на одном экране? Хотя это косяк дизайнера, ладно
    - Какие-то иконки с сердечками, вопросиками и.т.д. Нужно по крайней мере добавить всплывающие подсказки, что это вообще такое
    - Плюс и минус подсвечиваются как одна кнопка
    - Интерактив никакой не работает, нужно доделывать
    - Имеется непостоянство в подсвечивании элементов при наведении
    - Скидки в 70%, круто! Эээ.. А где тут кнопка "показать товары со скидкой"?
    - Внезапный шрифт с засечками
    - Внезапные серые бордеры, когда только что в такой же секции их не было
    - Вертикальные отступы опять везде пляшут
    - Белый по желтому не читается
    - Опять внезапное выравнивание влево, когда только что в такой же секции было по центру
    - Подпишитесь на рассылку! Ввожу почту и понимаю, что кнопки "подписаться" там нет. Fail.
    - На телефоне в подвале все выравнивание скачет влево-вправо

    Совет номер раз: почитайте про дизайн для недизайнеров и книги от Nick Kolenda, чтобы лучше понимать, где что-то явно не так и имеет смысл поправить.

    Совет номер два: старайтесь все в коде приводить к единой системе, чтобы одинаковые вещи действительно были одинаковыми. Этому способствуют препроцессоры и введение переменных с основными размерами + миксины для эффектов. Системная верстка всегда оставляет лучшее впечатление, чем бессистемная.

    Совет номер три: изучайте JS и доделывайте интерактивные элементы, чтобы ими можно было пользоваться. Не стоит это дело откладывать в черный ящик, работодателям чисто верстка без скриптов нужна очень редко.
    Ответ написан
    1 комментарий
  • Как сделать canvas в качестве фона для div?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    канвас добавить в качестве фона для div + background-size: cover

    Проверьте правильность позиционирования этого фона, может он у вас съехал куда-то и вы его не видите. Плюс не забывайте, что у png есть прозрачность, и, если канвас закрашен не полностью, а вы используете лишь его часть, то сложится впечатление, что на фоне ничего нет, хотя там что-то есть.

    Ответ написан
    Комментировать
  • При использовании пользовательского маркера у summary, на IOS маркер поворачивается через один. Как исправить?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Это очень похоже на баг флексбоксов №9. Суть в том, что некоторые элементы, в том числе summary, отображаются браузерами по-своему и их нельзя сделать flex-контейнерами - все конфликтует между собой. Там может любая магия происходить из-за этого. В некоторых браузерах это пофиксили, в некоторых - нет. Мораль: используйте флексы осторожно, особенно там, где и без них можно обойтись - display: block и inline-block никто не отменял.
    Ответ написан
    3 комментария
  • В чём отличие zoom от scale?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    У CSS-трансформаций есть такая штука, как transform-origin. В вашем примере эта точка находится по умолчанию в центре элемента. А у нестандартного свойства zoom аналогичная точка по умолчанию в левом верхнем углу элемента. Добавьте вашему workspace transform-origin: 0 0; и поведение станет схожим.
    Ответ написан
    Комментировать
  • Где и как вы проверяете кроссбраузерность?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Кроме BrowserStack есть еще сервис CrossBrowserTesting.
    Ответ написан
    Комментировать
  • Перестал срабатывать слайдер на клик, почему?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Все работает, просто вы полоску сделали слишком маленькой и по ней сложно попасть. Сделайте ее побольше:
    .irs-line {
        /* height: 2px; */
        /* background: #bababa; */
        height: 22px;
        background: 0 0 / 100% 2px linear-gradient(to right, #bababa, #bababa) no-repeat;
    }
    Ответ написан
    Комментировать
  • Как сверстать такую фичу?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В данном конкретном случае, поскольку текст в таких элементах не меняется, можно сделать все по-простому:
    Lorem ipsum dolor sit...
    <div class='or-line'>или</div>
    Lorem ipsum sit amet...

    .or-line {
        text-align: center;
        background: center / 3em 100% no-repeat linear-gradient(to right, #fff, #fff),
            center / 100% 2px no-repeat linear-gradient(to right, #ccc, #ccc);
    }
    Ответ написан
    Комментировать
  • Как в details сделать свою стрелочку?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно скрыть тот маркер, который есть, а вместо него использовать псевдоэлементы у summary, как-то так:
    summary {
      list-style: none;
    }
    
    summary::-webkit-details-marker {
        display: none;
    }
    
    details summary::before {
        content: ' ';
        display: inline-block;
        background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2l............);
        height: .8em;
        width: .8em;
        background-size: .8em .8em;
    }
    
    details[open] summary::before {
        transform: rotate(90deg);
    }

    Но не забывайте, что IE и Edge эти теги совсем не поддерживают.
    Ответ написан
    Комментировать
  • Как стащить такой эффект анимации?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    CSS трансформации: rotate пластинке - чтобы крутить, translate обертке - чтобы подвинуть на :hover.
    CSS анимации - чтобы крутить бесконечно долго.
    Ответ написан
    Комментировать