首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Radium检查复选框的标签的样式

使用Radium检查复选框的标签的样式
EN

Stack Overflow用户
提问于 2020-07-07 04:41:39
回答 2查看 1.3K关注 0票数 0

我有一个简单的React项目。

App.js

代码语言:javascript
复制
import React from 'react';
import Radium, { StyleRoot } from 'radium';
import Checkbox from './Checkbox';

function App() {
  // style
  const style = {
    ':hover': {
      color: 'red',
      backgroundColor: 'blue'
    },
    ':focus': {
      color: 'orange'
    }
  };

  return (
    <div className="App">
      <p>Hovering on the button should change its color to red and background color to blue.</p>
      <p>Pressing it makes the text orange.</p>
      <p>Pesudo-element like :hover is not possible unless we use radium.</p>
      <button style={style}>Hover me</button>
      <Checkbox />
    </div>
  );
}

export default Radium(App);

Checkbox.js

代码语言:javascript
复制
import React from 'react';
import Radium from 'radium';

const checkBox = props => {
    const style = {
        '+ label': {
          color: '#ccc'
        }, 
        ':checked + label': {
          color: '#f00'
        } 
    };

    return (
        <div>
            <input type="checkbox" id="ossm" name="ossm" style={style} /> 
            <label for="ossm">CSS is Awesome</label> 
        </div>
    );
};

export default Radium(checkBox);

首先,我试图设置一个复选框,以便:

  • 其标签颜色为#ccc和
  • 选中它时,将其标签的颜色更改为#f00。

不应用样式设计。怎么修呢?

其次,在App.js内部,在什么情况下我用<StyleRoot></StyleRoot>包装JSX代码?

谢谢一堆人!

EN

回答 2

Stack Overflow用户

发布于 2020-07-07 05:26:05

保持状态并有条件地应用样式。

工作演示

像这样的

代码语言:javascript
复制
const checkBox = props => {
  const [checked, setChecked] = useState(false);

  const style = {
    input: { fontSize: 20, padding: "20px" },
    base: { background: checked ? "red" : "blue", fontSize: 20 },
    "+ label": {
      color: "#ccc"
    },
    ":checked + label": {
      color: "#f00"
    }
  };

  return (
    <div>
      <input
        checked={checked}
        onChange={() => setChecked(prev => !prev)}
        type="checkbox"
        id="ossm"
        name="ossm"
        style={style.input}
      />
      <label style={style.base} for="ossm">
        CSS is Awesome
      </label>
    </div>
  );
};

const Checkbox = Radium(checkBox);
票数 0
EN

Stack Overflow用户

发布于 2020-07-07 06:15:09

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62768262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档