Как определить пользовательскую утилиту с медиа-запросами в Tailwind?

Итак, я пытался найти способ сделать свои пользовательские утилиты, например padding-root-inline, отзывчивыми к размерам экранов. Пока что я знаю, что могу сделать что-то вроде этого:

@layer utilities {
    .padding-root-inline { ... }
    .padding-root-inline-sm { ... }
}

а затем используйте модификаторы экрана, подобные этому:

<section class = "padding-root-inline max-sm:padding-root-inline-sm"></section>

Но это по-прежнему кажется неудобным, поскольку мне приходится писать вариативный класс вместе с базовым классом в каждом из компонентов, в которых я его использую. Я хочу что-то вроде этого:

@layer utilities {
    @media all and (max-width: theme('screens.xs')) {
        .padding-root-inline {
            padding-inline: calc(theme('padding.root-inline') - 2rem);
        }
    }
}

чтобы я мог просто сказать padding-root-inline, и оно реагировало бы само по себе, без необходимости говорить sm:padding-root-inline-sm.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете напрямую определить медиа-запросы в своей пользовательской утилите:

@layer utilities {
    .padding-root-inline {
        padding-inline: calc(theme('padding.root-inline') - 2rem);

        @media (min-width: theme('screens.sm')) {
            padding-inline: ...
        }

        @media (min-width: theme('screens.md')) {
            padding-inline: ...
        }

        //...and so on
    }
}

Я попробовал, но это не работает!

Sapinder Singh 20.04.2024 15:44

Не вижу никакой проблемы в таком подходе, проверьте площадку . Класс добавляется к тексту с надписью «ЗДЕСЬ ПРИМЕР...».

Invulner 20.04.2024 16:40

Однако я вижу, что по какой-то причине это не работает с моей стороны. Но я разберусь с этим. Спасибо за ссылку :)

Sapinder Singh 20.04.2024 16:59

Другие вопросы по теме