博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React中使用styled-components的基础使用
阅读量:4086 次
发布时间:2019-05-25

本文共 3763 字,大约阅读时间需要 12 分钟。

 今天我们不对react的环境进行搭建,我直接用脚手架搭一个最简单的环境来用,进入主题

 1.使用styled-components

  首先我们要安装styled-components

yarn add styled-components  ||  npm install --save styled-components

    2.最基础的使用,(为了方便阅读,以下所有的代码我将在一个文件中演示)

  

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//修改了div的样式const Title = styled.div`  font-size:1.5rem;  color:red`// 修改了button的样式const Button = styled.button`    border:none;    background-color:blue`class App extends Component {  render() {    return (    
{ // 开始的内容 /*
大红牛
*/}
大红牛
) }}export default App;

复制代码

运行结果:

是不是很爽,其实到这里完全就可以用styled-components来写类似于CSS的代码了,但是这肯定不够啊,所以我们继续往下看

 

2.塑造组件

  为什么要有塑造塑件呢,因为肯定会有一个场景,我们要对已经定义好的组件进行二次样式的修改,那这个时候我们就需要用塑造组件了

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//初始组件const Button = styled.button`color: palevioletred;font-size: 1em;margin: 1em;padding: 0.25em 1em;border: 2px solid palevioletred;border-radius: 3px;`//对组件进行二次样式修饰const YellowButton = styled(Button)`  background-color:yellow`class App extends Component {  render() {    return (    
枸杞
) }}export default App;

复制代码

运行结果:

 

3.props传递参数  styled-components可以用props接受参数,从而根据传递的参数确定样式,是不是很强大

 

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//props传递参数(根据参数的值设置样式)// 有传递值字体会变为红色// 无传递值会默认取蓝色const Button = styled.button`  padding: 0.5em;  margin: 0.5em;  color: ${ props => props.inputColor || "blue" };  background: papayawhip;  border: none;  border-radius: 3px;`class App extends Component {  render() {    return (    
) }}export default App;

复制代码

运行结果:

除了可以根据参数的值进行样式的设置之外,我们还可以通过参数的有无来设置样式:

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//props传递参数(根据参数的有无设置样式)// 有参数背景会变为蓝色// 无传递值背景会默认取黄色const Button = styled.button`  padding: 0.5em;  margin: 0.5em;  background: ${props=>props.blue?"blue":"yellow"};  border: none;  border-radius: 3px;`class App extends Component {  render() {    return (    
) }}export default App;

复制代码

运行结果:

 

4.修改样式的同时添加属性,同时也可以通过这种方法引入第三方的样式,只需要设置className属性即可

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//props传递参数(根据参数的有无设置样式)// 有参数背景会变为蓝色// 无传递值背景会默认取黄色const Button = styled.button.attrs({  title:"aaa",  id:'bbb',  'data-role':(props)=>props.hello})`  padding: 0.5em;  margin: 0.5em;  border: none;  border-radius: 3px;`class App extends Component {  render() {    return (    
) }}export default App;

复制代码

运行结果:

  通过控制台我们可以看到,属性已经全部被加上去了

 

5.继承

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//继承  根据实验 如果我没出错 最新的版本应该是不支持extend了const Button = styled.button`       color: palevioletred;       font-size: 1em;       margin: 1em;       padding: 0.25em 1em;       border-radius: 3px; `const YellowButton = Button.extend`       color: yellow;      border-color: yellow; `;class App extends Component {  render() {    return (    
枸杞啊
) }}export default App;

复制代码

 

6.偷懒的写法,当标签很多时,要是我们虽每个标签都要进行修饰,那岂不是要写好多的组件,但是在有些情况下我们没必要分这木多组件,那我们不妨可以试试以下的写法

  

复制代码

import React, { Component,Fragment} from 'react';//引入styled-componentsimport styled from 'styled-components'//另一种语法const StyledDiv = styled.div`  font-size: 100px;  > span {    font-size: 50px;  }  & > p {    font-size: 25px;  }`class App extends Component {  render() {    return (    
红牛

枸杞

) }}export default App;

复制代码

运行结果:

原文

转载地址:http://rjwii.baihongyu.com/

你可能感兴趣的文章
DirectX11 调试Direct3D应用程序
查看>>
DirectX11 基本计算机颜色
查看>>
DirectX11 输入装配阶段
查看>>
DirectX11 顶点着色器阶段
查看>>
DirectX11 曲面细分阶段
查看>>
DirectX11 几何着色器阶段
查看>>
DirectX11 顶点和顶点布局
查看>>
DirectX11 顶点缓存
查看>>
DirectX11 索引缓存
查看>>
DirectX11 顶点着色器示例
查看>>
DirectX11 HLSL常量缓存
查看>>
DirectX11 像素着色器
查看>>
DirectX11 渲染状态
查看>>
DirectX11 Effects
查看>>
DirectX11 颜色立方体示例Demo
查看>>
DirectX11 山峰与河谷示例Demo
查看>>
DirectX11 几何体示例Demo
查看>>
DirectX11 骷髅头示例Demo
查看>>
DirectX11 动态缓存 & 水波演示Demo
查看>>
DirectX11 光照与材质的相互作用
查看>>