React styled-components

2023-11-06

React styled-components 

安装

npm install --save styled-components
  • 官方示例:

  

import styled, { css } from 'styled-components'

const Button = styled.button`
  background: transparent;
  border-radius: 3px;
  border: 2px solid palevioletred;
  color: palevioletred;
  margin: 0.5em 1em;
  padding: 0.25em 1em;

  ${props => props.primary && css`
    background: palevioletred;
    color: white;
  `}
`;

const Container = styled.div`
  text-align: center;
`

render(
  <Container>
    <Button>Normal Button</Button>
    <Button primary>Primary Button</Button>
  </Container>
);

常用属性

  • styled继承

// import styled from 'styled-components'

const Button = styled.button`
  background: palevioletred;
  border-radius: 3px;
  border: none;
  color: white;
`

const TomatoButton = styled(Button)`
  background: tomato;
`

render(
  <>
    <Button>I'm purple.</Button>
    <br />
    <TomatoButton>I'm red.</TomatoButton>
  </>
)

  

模板语法传参

// import styled from 'styled-components'

const padding = '3em'

const Section = styled.section`
  color: white;

  /* Pass variables as inputs */
  padding: ${padding};

  /* Adjust the background from the properties */
  background: ${props => props.background};
`

render(
  <Section background="cornflowerblue">
    ✨ Magic
  </Section>
)

  

&

  • &表示该组件的所有实例;它用于应用广泛的覆盖:
const Thing = styled.div.attrs((/* props */) => ({ tabIndex: 0 }))`
  color: blue;

  &:hover {
    color: red; // <Thing> when hovered
  }

  & ~ & {
    background: tomato; // <Thing> as a sibling of <Thing>, but maybe not directly next to it
  }

  & + & {
    background: lime; // <Thing> next to <Thing>
  }

  &.something {
    background: orange; // <Thing> tagged with an additional CSS class ".something"
  }

  .something-else & {
    border: 1px solid; // <Thing> inside another element labeled ".something-else"
  }
`

render(
  <React.Fragment>
    <Thing>Hello world!</Thing>
    <Thing>How ya doing?</Thing>
    <Thing className="something">The sun is shining...</Thing>
    <div>Pretty nice day today.</div>
    <Thing>Don't you think?</Thing>
    <div className="something-else">
      <Thing>Splendid.</Thing>
    </div>
  </React.Fragment>
)

  

&&

  • &&单独一个双&符号有一个特殊的行为称为“优先级提升”;如果你正在处理混合样式的组件和可能有冲突样式的CSS环境,这可能是有用的:
const Thing = styled.div`
   && {
     color: blue;
   }
 `

 const GlobalStyle = createGlobalStyle`
   div${Thing} {
     color: red;
   }
 `

 render(
   <React.Fragment>
     <GlobalStyle />
     <Thing>
       I'm blue, da ba dee da ba daa
     </Thing>
   </React.Fragment>
 )

  

  • 如果你在没有&号的情况下放入选择器,它们将指向组件的子组件。
const Thing = styled.div`
  color: blue;

  .something {
    border: 1px solid; // an element labeled ".something" inside <Thing>
    display: block;
  }
`

render(
  <Thing>
    <label htmlFor="foo-button" className="something">Mystery button</label>
    <button id="foo-button">What do I do?</button>
  </Thing>
)

  

动画

  • 带有@keyframes的CSS动画不会局限于单个组件,但你仍然不希望它们是全局的,以避免名称冲突。这就是为什么我们导出一个关键帧助手,它将生成一个唯一的实例,你可以在整个应用程序中使用:
// Create the keyframes
const rotate = keyframes`
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
`;

// Here we create a component that will rotate everything we pass in over two seconds
const Rotate = styled.div`
  display: inline-block;
  animation: ${rotate} 2s linear infinite;
  padding: 2rem 1rem;
  font-size: 1.2rem;
`;

render(
  <Rotate>&lt; 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React styled-components 的相关文章

随机推荐

  • 小程序的数据驱动和Vue的双向绑定有何异同

    引言 在现代应用程序开发中 数据驱动和双向绑定是两个非常重要的概念 它们能够提供更好的用户体验和开发效率 本文将探讨小程序的数据驱动和Vue的双向绑定 并通过代码实例来说明它们的异同 让我们一起来了解吧 小程序的数据驱动 小程序是一种轻量级
  • Java初阶——练习题

    import java util Random import java util Scanner public class java 11 1 public static void main String args int ret numb
  • 模板的特化(具体化)

    模板的特化 具体化 重点注意 1 类模板和函数模板都可以被全特化 2 类模板能偏特化 不能被重载 3 函数模板可以实现重载 不能被偏特化 4 类模板调用优先级 全特化类 gt 偏特化类 gt 主版本模板类 6 函数模板同时存在具体化模板 函
  • ZYNQ中FreeRTOS中使用定时器

    使用普通的Timer中断方式时 Timer中断可以正常运行 但是UDP通信进程无法启动 其中TimerIntrHandler是中断服务程序 打印程序运行时间与从BRAM中读取的数据 void SetupInterruptSystem XSc
  • JetBrains各版本全家桶工具 编程开发全套永久软件!IDE也能免费用

    程序员每次换新电脑装IDE总是少不了的 但是奈何激活码难找 功夫不负有心人终于让我找到了激活方法 而且是可以永久激活的 更赞的是操作简单 无需注册机也无需修改文件和host 而且支持2018 2019 2020全版本的全家桶软件 之前也激活
  • shell 多线程介绍与举例

    在Shell脚本中实现多线程通常可以使用以下几种方式 后台执行 在Shell脚本中 你可以使用 符号将某个命令放在后台执行 这样可以同时执行多个命令 达到多线程的效果 例如 bin bash command1 command2 comman
  • CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用

    CSerialPort教程4 3 x 4 CSerialPort在QT中的使用 环境 QT 5 6 3 前言 CSerialPort项目是一个基于C C 的轻量级开源跨平台串口类库 可以轻松实现跨平台多操作系统的串口读写 同时还支持C Ja
  • FTP:服务器发回了不可路由的地址,使用服务器地址代替 问题解决方案

    状态 连接建立 等待欢迎消息 状态 初始化 TLS 中 状态 TLS 连接已建立 状态 已登录 状态 读取目录列表 状态 服务器发回了不可路由的地址 使用服务器地址代替 打开阿里云控制面板 把放行端口中的39000 40000加入放行规则
  • Java设计模式(9):桥接模式

    9 桥接模式 Bridge 9 1 问题引入 手机类型 现在对不同类型不同品牌的手机实现操作编程 如下手机外观类型和对应品牌 则需要编写的代码类图可能如下 带来的问题如下 如果我们需要添加一个手机 则需要在各个类型下添加手机 如果我们需要添
  • 股票数据API接口进行实际对接过程当中要注意哪些方面?

    投资者使用股票量化接口API接口方面使用能够节约不少的成本 不过在进行实际对接的过程当中 一定要从零开始做好研发建设 只要进入系统之后就能够完全体验到接口带来的更多优势 如果选择一些不靠谱的API接口 可能会浪费金钱 甚至会给大多数用户造成
  • 汇编基础(1)--ARM32

    简介 ARM32 也称为ARM Architecture v7 是一种32位的指令集架构 ISA 由ARM公司开发并广泛应用于嵌入式系统和移动设备 ARM32是ARM体系结构中较早的版本 被许多处理器核使用 包括Cortex A Corte
  • 【PTA】数组排序

    对n个整数进行降序排列 然后输出 import java util public class Main public static void main String args Scanner scanner new Scanner Syst
  • python 第三方库的安装与出错解决方案

    今天介绍五种第三方库的安装方法与错误解决方式 1 wordcloud win 加r输入cmd回车在命令行输入pip install wordcloud 如果下载成功则会出现successful 如果出现错误的话则会出现红色字体和erro提示
  • Android 字符串的替换,截取,拆分,拼接

    1 去除字符串中的 逗号替换成 符号 public static String ReplaceString List
  • uniapp中版本更新下载.apk文件并安装

    首先调用版本更新的接口传入当前版本好 判断是否需要版本更新 版本需要更新使用plus downloader createDownload进行下载 下载完成后使用plus runtime install进行安装 updateVersion d
  • 02_uboot的工作方式_常用命令_常用环境变量

    一 uboot的工作方式 1 uboot的本质 uboot的本质是一个裸机程序 由若干的 c文件和 h文件组成 配置编译后生成uboot bin 把这个镜像文件烧录至启动介质中给soc启动 一般的uboot大小在180k 400k之间 我你
  • RegNeRF,FreeNeRF: 神经辐射场的自由频率正则化,几何正则化,外观正则化,遮挡正则化

    目录 概要 一 论文 RegNeRF Regularizing Neural Radiance Fields for View Synthesis from Sparse Inputs 1 几何正则化 2 外观正则化 二 论文 FreeNe
  • Python编程题每日一练day2(附答案)

    Python编程题每日一练day2 Python编程题每日一练day1 附答案 一 被8整除的数字 二 九九乘法表 三 判断素数 四 重复出现的字符串 五 密码游戏 提高编程能力的最有效办法就是 敲代码 Python编程题每日一练day1
  • 彻底搞懂String:字符串常量池

    作为最基础的引用数据类型 Java 设计者为 String 提供了字符串常量池以提高其性能 那么字符串常量池的具体原理是什么 我们带着以下三个问题 去理解字符串常量池 1 字符串常量池的设计意图是什么 2 字符串常量池在哪里 3 如何操作字
  • React styled-components

    React styled components 参考 styled components 让 React 如虎添翼 React styled components 让前端开发如虎添翼 哔哩哔哩 bilibili styled compone
Powered by Hwhale