【react】---styled-components的基本使用---【巷子】
一、官网地址
https://www.styled-components.com/
二、styled-components
1、styled-components 样式化组件,主要作用是它可以编写实际的CSS代码来设计组件样式,也不需要组件和样式之间的映射,即创建后就是一个正常的React 组件,并且可以附加样式给当前组件。 优化react组件
2、在一个组件内会将结构、样式和逻辑写在一起,虽然这违背了关注点分离的原则,但是这有利于组件间的隔离。为了顺应组件化的潮流
3、使用styled-components不需要再使用className属性来控制样式,而是将样式写成更具语义化的组件的形式
4、使用style-components会随机生成一个class名称,这样不会污染到全局变量,当然因为随机生成,维护会增加难度
三、基本使用
1、安装
cnpm i styled-components -S || yarn add styled-components
2、引入
import styled from "styled-components";
3、使用
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, h1, h2, h3, h4, h5, h6, 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 {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;
background-color:${props=>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
`
十一、动画
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 }
} `
最新文章
- 微信后台开发第一步:nodeJS+express接入微信后台详细教程
- 【初恋】vue单页应用开发总结
- WPF:父窗口与子窗口的层次关系
- Python命令 (if __name__==";__main__";:)
- mfs-管理员
- hdu 2063 过山车(匈牙利算法模板)
- oracle用户权限的问题
- (原)JNI中env->;GetByteArrayElements和AndroidBitmap_getInfo的冲突
- webapp在Android中点击链接的时候会有淡蓝色的遮罩层
- Ubuntu安装Mysql过程及远程问题解决
- 微信小程序--ajax服务器交互及页面渲染
- 201521123012 《Java程序设计》第一周学习总结
- 在Ubuntu14.04下安装 ffmpeg-2.4.13(处理视频用,将视频保存为图片序列)
- SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径
- web 12
- Linux了解知识点
- Eclipse+Spring boot开发教程
- Excel技巧--按内容分列与合并
- python-requests模块的讲解和应用
- arduino按钮使用的两个小实验
热门文章
- 在Windows上使用CMake+CMakeLists.txt生成VS项目编译DlibDotnet库
- jq 回车提交指定按钮
- 【Zookeeper】源码分析之网络通信(三)之NettyServerCnxn
- 如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息
- layui table 根据条件改变更换表格颜色 高亮显示 数据筛选
- 菜鸟要做架构师(二)——java性能优化之for循环
- vue的双向绑定
- VS2013 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
- Java、Linux、Win 快速生成指定大小的空文件
- titlesplit