React框架(十九)在使用style-components的同时引入.css文件

2023-11-03

什么是style-components?

style-components是针对React写的一套css in js框架,简单来讲就是在js中写css。相对于与预处理器(sass、less)的好处是,css in js使用的是js语法,不用重新再学习新技术,也不会多一道编译步骤,无疑会加快网页速度。


作者:恰到半生
链接:https://www.jianshu.com/p/27788be90605
来源:简书

剩下的官网自己看https://styled-components.com


问题的出现

在使用了style-components框架之后,所有的样式都被封装为一个个组件,在进行渲染的同时就能使用自定义的样式。

但问题来了!!!

  • react项目不会再识别.css文件(也可能我没有发现两者同时使用的方法)

  • 正常使用webpack打包的React项目,在项目打包成bundle的时候会对代码丑化(uglyfy),因此组件的类名会在打包时被混淆,这也使得添加类名变得繁琐。


如何解?

划重点

把待使用的css文件转换为使用style-components框架的.js文件,然后引入即可。


看个例子——animate的使用

animate其实是封装好的CSS动画,在平时使用时只需要:

下载 — 引入 — 在需要添加动画的标签上添加类名animated xxx

(不详细讨论,自己上GitHub看https://github.com/daneden/animate.css

接下来我们在React项目中,把它变成一个模块来使用

1.animate.css源码长这样

@charset "UTF-8";

/*!
 * animate.css -https://daneden.github.io/animate.css/
 * Version - 3.7.2
 * Licensed under the MIT license - http://opensource.org/licenses/MIT
 *
 * Copyright (c) 2019 Daniel Eden
 */

@-webkit-keyframes bounce {
  from,
  20%,
  53%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  40%,
  43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -4px, 0);
    transform: translate3d(0, -4px, 0);
  }
}

===>>>...略

2.封装

.css文件改为.js文件,代码改成这样:

import {createGlobalStyle} from 'styled-components'; //用于生成处理全局样式
export const Animate=createGlobalStyle`
	原animate.css文件的源码粘贴过来
`;

由于animate需要用于全局动画,所以我用styled-components模块中的createGlobalStyle方法将其封装为全局样式。

3.在主文件中使用

中国人都知道入口文件是App.js
在这里插入图片描述
在里面引用吧:

import ... // 其它必要引用
import {Animate} from "./static/animate";

function App() {
  return (
		<Fragment>
			<Animate/>
			
			{/*其它组件*/}
		</Fragment>
  )

4.肆无忌惮添加类名

比如某个子组件文件index.jsrender函数:

render() {
        return(
            <ServiceWrapper>
                <div className={'animated bounceInUp'}>
                    <InfoSource />
                </div>
			</ServiceWrapper>
		)
}

当然,如果你想在某个组件上添加额外的类名,比如InfoSource上你想用别的类来定义样式,仿照刚刚的方法,把css文件封装成.js文件,在这个index.js文件中引入刚刚封装的组件,在render函数里使用这个组件,完事儿了!

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

React框架(十九)在使用style-components的同时引入.css文件 的相关文章

随机推荐

  • 一些抄袭CSDN的爬虫网站(长期收集更新)

    目录 一 CodeAntenna 1 简介 2 网址 二 编程学习网 1 简介 2 网址 三 待更新 本文由CSDN点云侠原创 爬虫网站请努力加油爬 一 CodeAntenna 1 简介 互联网耻辱柱排行榜Top 1 本人博客里任何一点免费
  • vscode远程连接linux服务器

    Linux服务器 或虚拟机 条件 开启ssh服务 客户端 vscode 1 服务端 服务端需要开启ssh服务vscode才能连接 首先检验linux是否开启了ssh服务 systemctl status sshd servie sshd s
  • 【ARIMA-WOA-CNN-LSTM】合差分自回归移动平均方法-鲸鱼优化-卷积神经网络-长短期记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 ARIMA模型 1 2 鲸鱼优化算法 1 3 卷积神经网络 1 4 LSTM 模型 2 运行结果
  • GPS数据解析 GPS 数据格式

    GPS 数据格式 NMEA 0183协议 GPS上电后 每隔一定的时间就会返回一定格式的数据 数据格式为 信息类型 x x x x x x x x x x x x x 每行开头的字符都是 接着是信息类型 后面是数据 以逗号分隔开 一行完整的
  • java程序开启远程调试、断点功能

    代码就是最好的文档 agentlib jdwp transport dt socket server y suspend n address 5005 几点说明 agentlib jdwp 这个是jdk自带的调试工具是jti 位于 JAVA
  • Linux下创建Vivado 2017.4工程以及相关配置

    Linux下创建Vivado 2017 4工程以及相关配置 一 创建Linux下的vivado工程的条件 在Windows10下安装VMware workstation full 12 5 7 20721 exe软件包 在Windows10
  • .git文件泄露

    知识点 git文件泄露 详情 简述 git文件导致的源码泄露 git文件是开发人员在开发过程中使用 Git 分布式版本控制系统 做开发时产生的隐藏目录 该文件包含一些版本信息和网站源码 数据库信息等敏感信息 原理利用 1 通常开发人员在开发
  • lightmapper

    https github com ands lightmapper
  • Mybatis在使用count和group_by查询时,mysql数据库5.7,报错

    Mybatis在使用count和group by查询时 mysql数据库5 7 报错 2023 05 31 20 49 09 792 ERROR 7548 io 8081 exec 10 o a c c C dispatcherServle
  • 混淆工具javascript-obfuscator使用简介

    javascript obfuscator是一个免费的JavaScript代码混淆工具 它功能强大 可以把你的源代码变得 面目全非 完全没有可读性 还具有部分防调试功能 给JavaScript代码多一层保护 安装 它支持很多流行的前端打包工
  • 算法基础14 —— 图论入门之迪杰斯特拉算法(Dijkstra)

    回顾 Floyed算法可以求任意两点之间的最短路径 但是Dijkstra算法只能求一个结点到另一个结点的最短路径 它是一个单源的最短路径算法 Floyed算法的时间复杂度为O n 3 故一般情况下数据范围要求在100以内 Dijkstra算
  • 深度学习:神经网络中为什么需要使用激活函数?(超详细)

    一 百度百科 我们先看下百度百科的解释 如果不用激活函数 每一层输出都是上层输入的线性函数 无论神经网络有多少层 输出都是输入的线性组合 这种情况就是最原始的感知机 Perceptron 如果使用的话 激活函数给神经元引入了非线性因素 使得
  • 【GitHub教程】 GitHub上传自己的项目

    GitHub教程 GitHub上传自己的项目 1 首先安装git 安装git后才能上传项目 下载地址 https git scm com download win 进入直接检测电脑型号并下载 下载好后一直下一步安装即可 以下表示安装成功 2
  • IntelliJ IDEA Junit

    为了学习最新计算机知识 我决定用英语写文档 并多看英文文档 today It take me lots of time to find how to make TestCase in IntelliJ7 You could follow t
  • IntelliJ IDEA 2020.2 配置大全(更新中)

    文章目录 1 提示改为不区分大小写 2 代码字体大小修改 2 1使用Ctrl 鼠标滚轮修改代码字体大小 2 2常规方法修改代码字体大小 行距 3 主题设置 4 控制台输出字体大小修改 5 Maven配置 6 打开IDEA直接进入上次退出的项
  • Set 数据构造函数

    Set数据结构 类似数组 所有的数据都是唯一的 没有重复的值 它本身是一个构造函数 主要是用来去重 但是必须转成真数组 我们来学习以下转真数组的两种方法 第一种 Array from 第二种 拓展运算符 利用拓展运算符把 set 集合将字符
  • FatMouse' Trade(贪心算法)

    FatMouse Trade Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 45918 Accep
  • 案例驱动python编程入门-python监听socket客户端连接(驱动串口屏幕)

    实例简介 实例截图 核心代码 import socket import os import sys import struct def socket service data try s socket socket socket AF IN
  • 轨迹规划五次多项式学习

    五次多项式是一种常用的平滑轨迹规划方法 可以在运动过程中使得机器人的加速度和曲率连续变化 以达到平滑 稳定控制的效果 这里简单介绍如何通过五次多项式来求解运动轨迹 假设我们要将一个物体从起始点 x0 y0 运动到终止点 xT yT 并且要求
  • React框架(十九)在使用style-components的同时引入.css文件

    什么是style components style components是针对React写的一套css in js框架 简单来讲就是在js中写css 相对于与预处理器 sass less 的好处是 css in js使用的是js语法 不用重