欢迎光临
我们一直在努力

React.04 组件中的DOM样式

组件中DOM样式

  • 行内样式

想给虚拟dom添加行内样式,需要使用表达式传入样式对象的方式来实现:

// 注意这里的两个括号,第一个表示我们在要JSX里插入JS了,第二个是对象的括号
 <p style={{color:'red', fontSize:'14px'}}>Hello world</p>

行内样式需要写入一个样式对象,而这个样式对象的位置可以放在很多地方,例如render函数里、组件原型上、外链js文件中

  • 使用class

React推荐我们使用行内样式,因为React觉得每一个组件都是一个独立的整体

其实我们大多数情况下还是大量的在为元素添加类名,但是需要注意的是,class需要写成className(因为毕竟是在写类js代码,会受到js规则的限制,而class是关键字)

<p className="hello" style = {this.style}>Hello world</p>
  • 不同的条件添加不同的样式

有时候需要根据不同的条件添加不同的样式,比如:完成状态,完成是绿色,未完成是红色。那么这种情况下,我们推荐使用classnames这个包:

import ClassNames from 'classnames'

class App extends Component{
  state = {
    flag:true
  }
  render (){
    const classnames = ClassNames({
      a:true,
      b:false,
      c:this.state.flag,
      d:!this.state.flag
    })
    return (
      <div>
        <button className={classnames}>你好</button>
      </div>
    )
  }
}
  • css-in-js (styled-components等)

styled-components是针对React写的一套css-in-js框架,简单来讲就是在js中写css。npm链接

npm install styled-components -S
import styled from 'styled-components'

const Header = styled.header`
  height:44px;
  background:red;
`
const DivWrapper = styled.div`
  height:100px;
  background:lightblue;
  color:#fff;
`
const Content = styled.section`
  height: 80px;
  background: lightgreen;
  color: #fff;
`
class App extends Component{
  render (){
    return (
      <div>
        <Header />
        <DivWrapper>
          <h2>你好</h2>
        </DivWrapper>
        <Content>
          <h3>哈哈</h3>
        </Content>
      </div>
    )
  }
}
赞(0) 打赏
未经允许不得转载:散人研 » React.04 组件中的DOM样式
分享到: 更多 (0)

评论 抢沙发

3 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏