Ответы пользователя по тегу CSS
  • Можно ли как то объединить несколько CSS файлов без повтора кода?

    @BelkinVadim
    Frontend разработчик
    Используйте какой-нибудь оптимизатор стилей.
    Можно найти сервис, например, либо если стили собираются сборщиками найти подобный плагин для вашего сборщика, например csso
    Ответ написан
    Комментировать
  • Как узнать высоту клавиатуры и нижнего бара на iOS Safari?

    @BelkinVadim
    Frontend разработчик
    Сам мучался с этой проблемой. На iOS клавиатура никак не влияет на размер окна и вьюпорт. Она просто открывается поверх окна и страницу при этом может как бы проскроллить вверх если место куда вводится текст находится в том месте где появится клавиатура. Причем скроллится на страница (html, body теги), а фиг знает что, т.к. событие скролла не отлавливалось.
    Пришлось выкручиваться так, я отлавливал событие фокус на полях ввода (вообще на всем что вызывает открытие клавиатуры), и по setTimeout в 500ms (клавиатура появлялась плавно и можно было правильно вычислить её размер только после открытия) выполнял следующее
    const innerHeight = window.innerHeight;
    document.body.style.height = innerHeight + 'px';
    document.documentElement.style.height = innerHeight + 'px';
    window.scrollTo(0, 0); // вообще по-хорошему тут к нужному элементу нужно скроллить, нули я для примера поставил


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

    Ну и соответственно при закрытии клавиатуры (blur того же поля) нужно примененные стили сбрасывать
    document.body.style.height = '';
    document.documentElement.style.height = '';
    Ответ написан
    Комментировать
  • Почему может не появляться горизонтальный скролл в сафари?

    @BelkinVadim
    Frontend разработчик
    Помог бы живой пример, а так только догадки:
    1. Тупо нет переполнения ширины, ничто не выходит за границы ширины и не вызывает появление горизонтального скролла
    2. Даже есть внутри есть очень широкий контент, может быть такое что у него есть доп.обертка с overflow: hidden которая просто скрывает неуместившееся и переполнения по ширине в блоке с overflow: auto; не происходит
    3. Может где-то overflow: auto; переназначается другими стилями на overflow: hidden

    И инфа на всякий случай, если вы вдруг ожидаете появление скролла без переполнения контентом - его не будет без переполнения, чтобы обязательно был скролл без переполнения нужно использовать  overflow: scroll
    Ответ написан
  • CSS: ширина в зависимости от высоты?

    @BelkinVadim
    Frontend разработчик
    Можно подробнее про требования, для чего и как это будет использоваться?
    Мне пока на ум пришла идея только с распоркой в виде картинки с нужными пропорциями, минимального размера и максимально ужатого качества, например белые jpg/png размерами 16x9px и 4x3px которые по высоте 100% и с автоматической шириной и сделанные невидимыми, а самим блокам задаем высоту и делаем их инлайн блоками. Задав фиксированную высоту блоку картинка находящаяся внутри растягивается на всю высоту блока и её ширина увеличивается пропорционально, растягивая сам блок по ширине на пропорции картинки. Плюс внутри можно создать доп.блок для размещения контента растянув и отпозиционировав его поверх всего.
    Пример
    Ответ написан
  • Как сделать в кастомном radio круг ровным?

    @BelkinVadim
    Frontend разработчик
    Могли бы вы приложить скриншот? У меня ваш пример отображается нормально. Вы же про круг чекнутой радиокнопки? Неровное выравнивание может быть из-за того что сам символ круга имеет нечетные размеры, а контейнер относительно которого он выравнивает - четные. Отсюда и смещение в 1 пиксель. Символ который вы используете в чекнутой радиокнопке размером не 30px, 30 - это размер текста, а размер данного символа меньше, фактический размер этого символа как раз и может быть нечетным
    Ответ написан
    Комментировать
  • Насколько в современной верстке важен pixel perfect?

    @BelkinVadim
    Frontend разработчик
    Все зависит на сколько важен для заказчика пиксель перфект и насколько дизайнер ответсвенно подошел к отрисовке макета. Если у пунктов списка слева один отступ, а справа другой - это не косяк дизайнера, с чего вы решили что отступы обязательно должны быть одинаковые со всех сторон. Другое дело когда список из одинаковых элементов и у пунктов могут отличаться отступы с одной и той же стороны - тут уже стоит выяснить почему так.
    Хорошо когда дизайн-система продумана от и до, систематизированы все отступы и размеры, такие макеты в пиксель перфект верстать легко. Но другое дело когда в разных макетах есть погрешности в размерах одних и тех же компонентов, а заказчик требует пиксель перфект ну потому-что ему так хочется и проверять соответствие для него легко.
    Просто научитесь оценивать сложность верстки по макетам для пиксельного соответствия и уже сами решайте стоит ли овчинка выделки (если конечно у вас есть возможность отказываться от заказов)
    Ответ написан
    Комментировать
  • Какую библиотеку для анимации использовать?

    @BelkinVadim
    Frontend разработчик
    Смотря какая анимация вам нужно и что под анимацией вы подразумиваете.
    Кто-то путает анимацию с плавными переходами между состояниями (CSS transition), в этом случае обходится все без библиотек, вы указываете стили элемента в одном состояние и указываете какие свойства должны плавно меняться, затем пишите стили для другого состояния где изменены плавноизменяемые свойства. При изменении состояния будет плавное изменение свойств.
    Есть именно CSS animation, где вы описываете саму анимацию и применяете её к нужным элементам. Есть разные библиотеки с наборами анимаций которые вы можете использовать у себя просто подключив или скопировав себе стили самой анимации и применив её в нужном месте. Например
    Бывают случаи когда анимация может создаваться динамически в зависимости от положения элемента, координат клика и прочих изменяемых и вычисляемых параметров. В таких случаях можно комбинировать JS и CSS для получения нужного результата, на JS вычисляете необходимые параметры и на их основе либо задаете свойства для анимации или плавных переходов.
    Ответ написан
  • Какую ширину воспринимает тег?

    @BelkinVadim
    Frontend разработчик
    Если фактическая ширина экрана в пикселях у вас 1125 и Device Pixel Ratio = 3, то делите фактическую ширину на ratio и получите ширину которую будет браузер как бы эмулировать.
    Т.е. если вы используете указанный метатег и добавите на страницу два блока с фиксированными ширинами , один 1125, а второй 375, то первый блок выйдет за границы экрана и появится горизонтальный скролл, а второй блок будет ровно по ширине экрана
    Ответ написан
    2 комментария
  • Как решить проблему с IE и EDGE при верстке на Flex?

    @BelkinVadim
    Frontend разработчик
    EDGE поддерживает флексы, IE поддерживает флексы с 10 версии, но с префиксами (поможет автопрефиксер). Но в IE есть особенности использования флексов, связанны с размерами элементов флекс-контейнера. Просто верстать под Хром и надеяться что в IE автопрефиксер все сделает как нужно не стоит, есть шанс что результат вас удивит. По этому рекомендую проверять сразу все наработки связанные с флексами
    Ответ написан
    1 комментарий
  • В чём проблема разницы расчёта ширины экрана?

    @BelkinVadim
    Frontend разработчик
    Возможно это поможет разобраться
    Ответ написан
    Комментировать
  • Можно ли с помощью flexbox переместить элемент из одного блока в другой?

    @BelkinVadim
    Frontend разработчик
    Нет, на флексах нельзя перемещать элементы между разными контейнерами. Как вариант, лучше продумать структуру верстки и возможность перестраивания порядка элементов
    Ответ написан
  • Почему растягивается элемент?

    @BelkinVadim
    Frontend разработчик
    По-умолчанию элементы флекс-контейнера растягиваются на всю его высоту, за это отвечает свойство align-items у флекс-контейнера, по-умолчанию оно имеет значение stretch. Вам нужно просто переназначить его на нужное значение, например flex-start
    Ответ написан
    Комментировать
  • Существует ли список css свойств, которые начали подддерживаться в ios 11?

    @BelkinVadim
    Frontend разработчик
    Ответ написан
    Комментировать
  • Как задать ширину 100% блоку?

    @BelkinVadim
    Frontend разработчик
    Вам нужно растянуть контейнер на весь экран, самый простой вариант это ширина 100%, затем сами слайды так же должны быть на весь экран - так же 100% ширина. А следующий шаг это сделать слайды в одну строку и скрыть те что не умещаются - тут вариантов несколько, можно на флексах с запретом переноса (он по-умолчанию), можно на инлайн блоках с запретом переноса.
    Ответ написан
    Комментировать
  • Как грамотно выровнять сетку товаров?

    @BelkinVadim
    Frontend разработчик
    Поддерживаю Дмитрий Кузнецов, либо на флексах и сетку и сами колонки делать, чтобы сами колонки растягивались по максимальной в ряду, и внутри колонки сама фотка расстягивалась на большу часть. Но тут есть нюансы, при появлении многострочного текста.
    Я бы все же сделал фиксированную область под фотки (пропорциональная и квадратная), а само изображение отцентровать в этой области и не давать ему растягиваться большой любой из сторон этой области. Тем самым все блоки с фотками будут одного размера. Пример
    Ответ написан
    1 комментарий
  • CSS подключение шрифта - font-weight: Extrabold - не работает, а вот font-weight: 800 - работает. Почему так?

    @BelkinVadim
    Frontend разработчик
    Вам тут все написали, что для CSS не существует значения Extrabold для font-weight. Имеено CSSзначения, а не шрифта с таким начертанием. Шрифты с таким начертанием есть, но в  CSS текстового значения этого начертания нет, только числовое - font-weight: 800;
    Текстовые значения данного свойства могут быть только normal | bold | bolder | lighter

    В первом варианте вашего кода все становится Extrabold из-за того что для подключенного Extrabold начертания font-weight указан с ошибкой (не существует значения font-weight), по этому данный шрифт применяется к normal/400 начертанию
    Ответ написан
    Комментировать
  • Как убрать крестик у input type="date"?

    @BelkinVadim
    Frontend разработчик
    Обычно все эти доп.контролы сделаны через псевдоэлементы. В каждом браузере они могут называться по разному и обычно с префиксом данного браузера.
    Пример
    В хроме и вебкитовых браузерах отключается через псевдоэлемент ::-webkit-clear-button, а для Firefox не знаю к сожалению, вроде как поддержка type="date" в мозиле появилась не так давно, по этому информации о её контролах я не нашел
    Ответ написан
    Комментировать
  • Как сверстать такую плитку?

    @BelkinVadim
    Frontend разработчик
    Пример. Подобный результат нужен?
    1. Создаете адаптивную сетку
    2. Для картинок добавляете обертку с трюком для пропорциональных размеров через вертикальный padding и располагаете картинку внутри такого блока
    Ответ написан
    Комментировать
  • Как заставить работать стили в Safari в iOS?

    @BelkinVadim
    Frontend разработчик
    У вас сам номер телефона (тот что написан текстом), не является ссылкой, просто текст внутри span. А сафари "умный", он распознает в тексте номера телефонов и оборачивает их в ссылки (<a href="tel:номер">номер</a>). А к ссылке уже стандартные стили применяются.
    Выход:
    1. Отключить метатегом замену на ссылки в сафари.
    <meta name="format-detection" content="telephone=no">

    2. Просто сразу сделать этот номер ссылкой и стилизовать её как нужно
    Ответ написан
    Комментировать
  • Как растянуть flexbox (.container) на всю высоту?

    @BelkinVadim
    Frontend разработчик
    .middle нужно сделать флексом чтобы контейнер внутри так же растянулся https://jsfiddle.net/d8amj3hw/3/
    Ответ написан
    Комментировать