React中styled-components怎么使用
本文小编为大家详细介绍“React中styled-components怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“React中styled-components怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
styled-components
1、styled-components 样式化组件,主要作用是它可以编写实际的CSS代码来设计组件样式,也不需要组件和样式之间的映射,即创建后就是一个正常的React 组件,
并且可以附加样式给当前组件。 优化react组件
2、在一个组件内会将结构、样式和逻辑写在一起,虽然这违背了关注点分离的原则,但是这有利于组件间的隔离。为了顺应组件化的潮流
3、使用styled-components不需要再使用className属性来控制样式,而是将样式写成更具语义化的组件的形式
4、使用style-components会随机生成一个class名称,这样不会污染到全局变量,当然因为随机生成,维护会增加难度
基本使用
安装
cnpm i styled-components -S || yarn add styled-components
引入
import styled from "styled-components";
使用
export const Header = styled.div` width:100%; height:1rem; background:red `import {Header} from "./style/index";class App extends Component{ render(){ return ( <Header/> ) }}
全局默认样式引入
引入新的API createGlobalStyle ,在下面创建一个 GlobalStyle 变量,用 createGlobalStyle 方法把全局样式包裹在其中
import { createGlobalStyle } from "styled-components";export const GlobalStyle = createGlobalStyle`
html, body, ul, li, ol, dl, dd, dt, p, h2, h3, h4, h5, h6, h7, form, fieldset, legend, img { margin:0; padding:0; }fieldset, c{ border:none; }img{display: block;}address, caption, cite, code, dfn, th, var { font-style:normal; font-weight:normal; }ul, ol ,li{ list-style:none; }body { color:#333; font:12px BASE "SimSun","宋体","Arial Narrow",HELVETICA; background:#fff;}a { color:#666; text-decoration:none; }*{box-sizing:border-box}body,html,#root{ height: 100%; overflow: hidden;}
//将 <GlobalStyle /> 组件放在 render() 中最外层元素下面import React, { Component ,Fragment} from 'react';import {GlobalStyle} from "./reset";class App extends Component { render() { return ( <Fragment> <GlobalStyle/> </Fragment> ); }}export default App;
传参
如果我们需要动态改变元素的样式,则可以通过传递参数的方式进行改变
import {Header} from "style/index.js"render(){ return ( <Header bgColor="red"/> ) }
style/index.js
import styled from "styled-components";export const Header = styled.div` width:100px; height:200px; props.bgColor}
继承
如果我们需要继承样式的时候我们可以通过 styled(继承的组件名称)``
const button = styled.button` border:0; width:100px; height:40px; text-align:center; color:#000; `export const StyledButton = styled(button)` color:#fff; `
修改组件内部标签
在调用组件的时候我们可以通过as来修改组件 as="元素名称"
render(){ return ( <Header as="p"/> ) }
Header组件内部渲染的时候就是用的p标签
定义组件属性
export const Input = styled.input.attrs({ value:(props)=>props.value, name:"input"})` border:0; width:100px; height:100px;`
背景图片引入
import logo from "./imgs/logo.png";export const BgLogo = styled.div` width:100px; height:200px; background:url(${logo}) no-repate; `
塑造组件
有一种情况,一些原本就已经是组件,需要给这些组件添加样式,这时需要用到塑造组件
import React from "react";import styled from "styled-components";const Link = ({className,children})=>( <a className={className}> {children} </a> ) export StyleLink = styled(Link)` color:red `
动画```javascript
const move = keyframes` 0%{ transform:rotate(0%); } 100%{ transform :rotate(100%); }`export const TransFormDiv = styled.div` width:100px; height:100px; background:red; animation:${move} 2s;`
当标签过多时需要划分太多组件,我们可以通过以下写法来简化组件的编写
&代表父级
export const StyledUl = styled.ul` border:1px solid #ccc; >li{ border-bottom:1px solid #green; line-height:30px; padding-left:20px; &>p{ color:red } }
读到这里,这篇“React中styled-components怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341