首页 > 解决方案 > Tailwind CSS:有没有办法定位下一个兄弟姐妹?

问题描述

我有一个带有如下标签的无线电输入。输入被隐藏,标签用于制作一个视觉上吸引人的圆圈,用户可以点击该圆圈。

<input id="choice-yes" type="radio" class="opacity-0 w-0 fixed"/>
<label for="choice-yes" class="transition  duration-500 bg-blue-300 hover:bg-blue-500 w-20 h-20 rounded-full mr-5 flex items-center align-middle justify-center">Yes</label>

当用户点击标签输入时被检查。我试图弄清楚如何定位它,所以我可以给标签一个不同的风格。

这可以使用下一个兄弟选择器在纯 css 中实现。

input[type="radio"]:checked + label {
  background-color: #bfb !important;
  border-color: #4c4 !important;
}

我可以使用 tailwind.css 中的类似内容吗?

标签: tailwind-css

解决方案


这是我为此目的编写的一个复杂变体2.0.1(使用 tailwindcss 测试)

// tailwind.config.js

const plugin = require("tailwindcss/plugin");

const focusedSiblingPlugin = plugin(function ({ addVariant, e }) {
  addVariant("focused-sibling", ({ container }) => {
    container.walkRules((rule) => {
      rule.selector = `:focus + .focused-sibling\\:${rule.selector.slice(1)}`;
    });
  });
});

module.exports = {
  // ...
  plugins: [focusedSiblingPlugin],
  variants: {
    extend: {
      backgroundColor: ["focused-sibling"],
    },
  },
};

推荐阅读