Попутный ветер включает функцию группового наведения только при включении

У меня есть несколько кнопок, оформленных с помощью TailwindCSS.

Эти кнопки содержат некоторые значки/вспомогательный текст (<span>), которые должны иметь цвет (отличный от цвета, используемого для текста кнопки), когда мышь находится над кнопкой.

Я использовал класс group для кнопки, а затем во внутреннем элементе:

<script src = "https://cdn.tailwindcss.com#.js"></script>

<button class = "group bg-indigo-500 hover:enabled:bg-indigo-400 disabled:cursor-not-allowed">
  <span class = "group-hover:text-pink-900">helper text</span>
</button>

<button disabled class = "group bg-indigo-500 hover:enabled:bg-indigo-400 disabled:cursor-not-allowed">
  <span class = "group-hover:text-pink-900">helper text</span>
</button>

Обратите внимание, что эффект наведения устанавливается только тогда, когда кнопка включена (с помощью hover:enabled).

Если кнопка отключена, я хочу хорошо отключить этот эффект наведения на вспомогательный текст.

Я пробовал group-hover:enabled:text-pink-900, но не получается.

disabled:pointer-events-none для меня не вариант, потому что сломается disabled:cursor-not-allowed.

Пример: https://play.tailwindcss.com/US7h6jStv9

Приемы 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 сценарий полностью изменился.
2
0
151
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

<script src = "https://cdn.tailwindcss.com#.js"></script>

<button class = "group bg-indigo-500 hover:bg-indigo-400 disabled:pointer-events-none">
  <span class = "group-hover:text-pink-900">helper text</span>
</button>

<button disabled class = "group bg-indigo-500 hover:bg-indigo-400 disabled:pointer-events-none">
  <span class = "group-hover:text-pink-900">helper text</span>
</button>

Вам нужно проверить, отключена ли она или нет, это должно решить вашу проблему.

disabled:pointer-events-none для меня не вариант, потому что сломается disabled:cursor-not-allowed.
andreivictor 15.04.2024 08:09

Поэтому вам нужно записать все отключенные классы в свой код или использовать оболочку, чтобы не давать событиям указателя никаких событий — курсор не разрешен stackoverflow.com/questions/46665625/…

Emir Akyüz 15.04.2024 08:45

вы можете сделать это, «отключено: указатель-события-нет»

disabled:pointer-events-none для меня не вариант, потому что сломается disabled:cursor-not-allowed.
andreivictor 15.04.2024 08:09
Ответ принят как подходящий

Мне удалось добиться желаемого поведения, комбинируя модификаторы group-* следующим образом:

group-hover:group-enabled:...

<span class = "group-hover:group-enabled:text-pink-900">★</span>

<script src = "https://cdn.tailwindcss.com#.js"></script>

<button class = "group bg-indigo-500 hover:enabled:bg-indigo-400 disabled:cursor-not-allowed ...">
  Button text
  <span class = "group-hover:group-enabled:text-pink-900">★</span>
</button>

<button disabled class = "group bg-indigo-500 hover:enabled:bg-indigo-400 disabled:cursor-not-allowed ...">
  Button text
  <span class = "group-hover:group-enabled:text-pink-900">★</span>
</button>

Объяснение:

  • group-hover:group-enabled:text-indigo-900 => создает следующее правило CSS:
.group:hover:enabled .(classname) {
  --tw-text-opacity: 1;
  color: rgb(131 24 67 / var(--tw-text-opacity));
}

Пример: https://play.tailwindcss.com/6BmIcNS610

Можете ли вы проверить приведенное ниже решение? Надеюсь, это сработает для вас.

<script src = "https://cdn.tailwindcss.com#.js"></script>

<button
  class = "rounded-md bg-indigo-500 px-4 py-2 text-sm font-semibold uppercase tracking-wider text-white hover:bg-indigo-400 hover-[&>span]:text-red-700 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-offset-1 disabled:opacity-50">
  <span>Not Disabled</span>
</button>
<button
  class = "rounded-md bg-indigo-500 px-4 py-2 text-sm font-semibold uppercase tracking-wider text-white hover:bg-indigo-400 hover-[&>span]:text-red-700 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-offset-1 disabled:opacity-50 disabled:hover-[&>span]:text-white"
  disabled>
  <span>Disabled</span>
</button>

Пример: https://play.tailwindcss.com/hXHNBTxnvz

Хороший. Мне удалось это реализовать с помощью group-hover:group-enabled.

andreivictor 15.04.2024 09:16

Недавно у меня возникла похожая проблема: чтобы решить ее, сначала скройте вспомогательный текст, используя классы invisible и pointer-events-none. Затем сделайте ее видимой и включите эффекты наведения только при наведении на кнопку (group-hover:visible). Таким образом, эффект наведения отключается, когда кнопка отключена, это должно привести к желаемому поведению:

<script src = "https://cdn.tailwindcss.com#.js"></script>

<div class = "m-4 flex space-x-4">
  <button class = "relative rounded-md bg-indigo-500 px-4 py-2 text-sm font-semibold uppercase tracking-wider text-white focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-offset-1 hover:bg-indigo-400 group">
    Not Disabled
    <span class = "absolute top-full left-0 w-full bg-pink-500 opacity-0 transition-opacity duration-300 pointer-events-none invisible group-hover:visible group-hover:opacity-100">
      Helper Text
    </span>
  </button>
  <button class = "rounded-md bg-indigo-500 px-4 py-2 text-sm font-semibold uppercase tracking-wider text-white focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-offset-1 disabled:opacity-50 disabled:cursor-not-allowed" disabled>
    Disabled
  </button>
</div>

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