我有这个输入,输入"Radio",当它被选中时,我想要应用一个更大更暗的边框.

当我单击时,类将在我判断时应用,但按钮没有可见的更改.

知道为什么吗?

这是一张sandbox美元的钞票

以下是我的代码:

import React from "react";
import "./styles.css";
import "./styles/tailwind-pre-build.css";
import { useState } from 'react';

const RadioButton = () => {
  const [checked, setChecked] = useState(false);

  const checkedClassNames =
    'peer-checked/yes:border-transparent peer-checked/yes:shadow-lg peer-checked/yes:border-2 peer-checked/yes:border-solid peer-checked/yes:border-neutral-600 peer-checked/yes:text-neutral-700';

  return (
    <div className="w-20">
      <input
        type="radio"
        id="id"
        onChange={() => setChecked(!checked)}
        className="peer/yes sr-only"
      />
      <label
        htmlFor="id"
        className={`flex justify-center items-center cursor-pointer rounded-lg text-sm border border-solid border-gray-300 px-4 h-10 text-neutral-500 focus:outline-none ${
          checked ? checkedClassNames : null
        }`}
      >
        Label
      </label>
    </div>
  );
};

export default RadioButton;

推荐答案

如果您已经更改了按钮的状态并使用它来添加类,那么您不需要使用peer来限定这些类.此外,为了触发您的输入字段的onChange,您需要将其放入标签中.这意味着不能使用peer来限定您的标签分类.

这是未经测试的,但显示了基本思想:

...

  const uncheckedClassNames = 
    'border border-solid border-gray-300 text-neutral-500'
  const checkedClassNames =
    'border-transparent shadow-lg border-2 border-solid border-neutral-600 text-neutral-700';

  return (
    <div className="w-20">
      <label
        htmlFor="id"
        className={`flex justify-center items-center cursor-pointer rounded-lg px-4 h-10 text-sm focus:outline-none ${
          checked ? checkedClassNames : uncheckedClassNames
        }`}
      >
        <input
          type="radio"
          id="id"
          onChange={() => setChecked(!checked)}
          className="sr-only"
        />
        Label
      </label>
    </div>
  );

...

Css相关问答推荐

如何允许在bslb中 Select 输入重叠卡片?

如何使用css::Part()定位Web组件shadowDOM中的第N个元素

如何将下拉面板放置在MAT-SELECT文本框的正下方

在文本之前添加了额外的空间-Angular 树视图CSS

两列网格中左列第一个文本正下方的按钮

如何有条件地设置元素的字体大小,只有在未明确设置父字体大小(即字体大小为继承)的情况下?

没有字母间距的CSS悬停边框

2 列 UL,右列中的列表项数量为奇数?

没有 colored颜色 Select 器的 JavaFX colored颜色 Select 器

和号 (&) 作为 SASS @mixin 中的变量

:required 或 [required] CSS Select 器

如何测试页面上的文本被删除

当计算的宽度不准确时,如何在 cypress 中测试元素的宽度?

在 vuetify 中跨 `default.vue` 和 `index.vue` 维护网格系统

css 单行或多行垂直对齐

如何使用 Bootstrap 3 阻止按钮保持压抑状态

bootstrap 程序中有 7 个相等的列

将 Fixed div 设置为父容器的 100% 宽度

bootstrap 关闭响应菜单点击

如何创建一个带点的
标签?