Tailwindcss: Как сфокусироваться внутри и сфокусироваться одновременно

Я хочу сфокусировать div вокруг кнопки, но только когда сфокусирована клавиатура. Обычно focus-within работает, но в этом случае он должен фокусироваться только на фокусе клавиатуры (focus-visible:), а не при щелчке мышью (focus:).

По сути, мне нужно объединить focus-within и focus-visible. Как это может быть сделано?

Игра Tailwind: https://play.tailwindcss.com/ApDB5gSjqv

<div class = "flex h-screen items-center justify-center">
  <div class = "rounded-lg bg-green-100 px-20 py-20 focus-within:ring-4 focus-within:ring-blue-300">
    <button class = "bg-green-200 px-6 py-3 focus:outline-none">Focusable Button</button>
  </div>
</div>

Примечания:

  • Основываясь на этой ветке, похоже, что w3c не поддерживает focus-within-visible. Какой альтернативный или обходной способ добиться этого?
  • Похоже, что в некоторых браузерах есть поддержка селектора :has(:focus), но как его применить в Tailwind...? Источник
Приемы 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
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вместо использования focus-in вы можете добавить relative к div, который вы хотите сделать сфокусированным с помощью кольца. Затем сделайте кнопку peer и добавьте абсолютно позиционированный div после него, используя модификатор peer-focus-visible, чтобы добавить любые «сфокусированные» стили, которые вы хотите.

Обновлено: вам нужно сделать div за кнопкой, добавив относительно кнопки и назначив соответствующее значение z-index как вставному div, так и кнопке.

<div class = "flex h-screen items-center justify-center">
  <div class = "rounded-lg bg-green-100 px-20 py-20 relative">
    <button class = "bg-green-200 px-6 py-3 focus:outline-none peer relative z-[1]">Focusable Button</button>
  <div class = "absolute inset-0 rounded-lg peer-focus-visible:ring-4 peer-focus-visible:ring-blue-300 z-[0]"></div>
</div>

Вот отредактированный пример на Tailwind Play https://play.tailwindcss.com/us5kpJg6cV

Спасибо. Это почти так, но кнопку больше нельзя нажимать, потому что div находится поверх кнопки...

wongz 06.02.2023 20:51

Ах, да, проблема с z-индексом. Обновленный ответ.

JHeth 06.02.2023 20:53

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

React жалуется, что я вызываю слишком много повторных рендеров
Почему мой линейный зажим не работает с фиксированной высотой в браузере Safari?
Центрировать только один элемент внутри div с попутным ветром
Как найти имя div, которое соответствует метке, используемой в инспекторе кода?
Tailwind CSS: изменение стиля родительской метки при установленном флажке дочернего элемента
Как предотвратить перекрытие двух вложенных div с абсолютным позиционированием друг друга?
Как стилизовать элемент nativewind с помощью нескольких пользовательских стилей
Попутный ветер с ошибкой Next.js: ожидалась обратная косая черта перед точкой с запятой
Тег <img> и CSS — как остановить переполнение, уменьшив изображение до доступной высоты
Исправление порядка z-индекса для фонового изображения с темным фильтром в качестве содержимого и модальным потоком из попутного ветра css