使用styled-components控制主题切换(有手就行)

简介: 使用styled-components控制主题切换(有手就行)


主题的介绍

在计算机科学中,theme(主题)通常指网页、应用程序或操作系统界面的整体外观和样式。
主题可以包括颜色、字体、图标、背景等元素的组合。
在网页设计中,主题通常是由CSS (层叠样式表)定义的一系列规则集合。
这些规则控制文本、链接、按钮、表格、导航栏和其他组件的样式。
例如,一个主题可以指定黑色背景、白色文本和蓝色链接来创建一个专业和现代的外观。
对于应用程序和操作系统界面,主题通常由开发人员定义并可以通过用户选择进行更改。
主题可以提供不同的视觉效果,例如浅色或深色模式、不同的颜色方案或不同的图标集。
用户可以通过选择自己喜欢的主题来个性化他们的应用程序或操作系统界面。

需要注意以及准备

本篇文章需要使用 ‘styled-components插件控制style样式’

需要引入 antd 组件库

请创建一个theme文件夹,提供一个js文件存放两套主题

本篇文章使用react进行教学

终于不用js麻烦的切换两套不同的css了, 妈妈见了都说好_(:з」∠)_

开始使用

1. theme.js 文件

--- theme.js
--- 准备两套主题
const theme = {
  light: {
    backgroundColor: 'white',
    textColor: 'black'
  },
  dark: {
    backgroundColor: 'black',
    textColor: 'white',
  },
};
export default theme;

2. index.js 文件

/* eslint-disable react-hooks/exhaustive-deps */
import React, { useState} from 'react';
import { GlobalStyle } from './style'
import { ThemeProvider } from 'styled-components';
import theme from '../../utils/theme/theme';
import { Switch } from 'antd'
import { BulbOutlined } from '@ant-design/icons';
const Home = () => {
  // isDarkMode 切换主题的条件
  const [isDarkMode, setIsDarkMode] = useState(false);
  // 取反,等于切换主题样式
  const toggleTheme = () => setIsDarkMode(!isDarkMode);
  return (
      // 判断主题 theme上面引入了所以能用他下面的属性 dark:{} light:{}
      <ThemeProvider theme={isDarkMode ? theme.dark : theme.light}>
        // GlobalStyle是React中的一个组件,它可以用来定义全局样式。
        // 它允许开发者在React应用程序中定义全局样式,以便这些样式可以在整个应用程序中共享。
    // 在React中使用GlobalStyle组件时,可以将全局CSS样式定义在其中,并使用CSS属性来控制应用程序中的所有组件的外观。
        <GlobalStyle />
        <div className='top-operate-container'>
          <div className='operate'>
            <div className='left-container'>
              <ul className='navigate-list'>
                <li>首页</li>
                <li>动态</li>
                <li>发现</li>
              </ul>
            </div>
            <div className='right-container'>
              // 我用的antd的switch控制一键切换主题
              <Switch
                onChange={toggleTheme}
                checkedChildren={<BulbOutlined />}
                unCheckedChildren={<BulbOutlined />}
              />
            </div>
          </div>
        </div>
        <div className='content-container'>
          <div className='main'>
            最近更新
          </div>
        </div>
      </ThemeProvider>
  );
};
export default Home;

3. style.js 文件

// 某些样式我就不放了,你们自己写吧_(:з」∠)_
// 在使用styled-components库定义组件的样式时,可以使用props对象来获取组件的属性值
import { createGlobalStyle } from 'styled-components';
// createGlobalStyle是styled-components库中的一个函数,用于创建一个全局样式组件
// 它使得在React应用程序中定义全局样式变得非常方便,可以在整个应用程序中共享这些样式。
// 这里也可以放类名改样式(例子: .box1)
export const GlobalStyle = createGlobalStyle`
  .box1 { 
     color: ${(props) => props.theme.textColor}
   }
  body {
    background-color: ${(props) => props.theme.backgroundColor};
    color: ${(props) => props.theme.textColor};
    transition: 0.5s all;
  }
`;

4. 完结


至此主题就完全可以用了,您可以根据自己的需求进行扩展,一键开关灯,一键切换主题等…


相关文章
react-tsparticles 生成动态特效背景
react-tsparticles 生成动态特效背景
306 0
react-tsparticles 生成动态特效背景
G2Plot Tooltip 自定义头部、尾部、辅助线
G2Plot Tooltip 自定义头部、尾部、辅助线
475 0
|
人工智能
AI背景颜色变成白色了怎么恢复灰色?
一些刚开始使用AI来做平面设计的朋友,有时候会突然工作界面变成白色,而设置里看了是灰色,然后怎样都调不回来了。贴吧里一篇文章介绍用CTRL+SHIFT+H,实际上这是隐藏画板的快捷键并没有解决问题。
AI背景颜色变成白色了怎么恢复灰色?
|
资源调度 搜索推荐 Shell
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
本文介绍了如何使用 Vue3、TypeScript 和 Vite 开发组件库并将其发布到 npm。文章详细描述了安装依赖、配置项目、创建文档网站以及编写组件文档的步骤。通过使用 VitePress,可以轻松搭建组件库的文档站点,并实现 Algolia 搜索功能。此外,还提供了自动化脚本用于部署静态网站至 GitHub 以及发布组件库到 npm。最后,展示了完整的目录结构和网站效果。
543 1
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
|
前端开发 JavaScript
vite中如何更优雅的使用css
【8月更文挑战第2天】webpack中,我们需要在项目中安装css-loader才能让webpack识别css文件。vue-cli基于webpack,内置了这个loader ,Vite天生就是支持对CSS文件的直接处理的。
526 5
vite中如何更优雅的使用css
|
存储 JSON 前端开发
利用json-server快速在本地搭建一个JSON服务
利用json-server快速在本地搭建一个JSON服务
587 0
|
JavaScript 前端开发
CMD和UMD,ES Module的差别
CMD和UMD,ES Module的差别
|
Java Maven
IDEA中sprongboot项目maven不知道去哪里(总结)
IDEA中sprongboot项目maven不知道去哪里(总结)
839 0
|
前端开发
【专栏】在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法
【4月更文挑战第29天】本文介绍了在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法。首先,通过 `npm` 安装 less 或 sass 依赖,然后修改 `config-overrides.js` 配置文件以支持 less/sass 编译。接着,详细阐述如何使用 less/sass 编写样式。再者,安装 react-css-modules 并配置 webpack,使能样式模块化。最后,展示了如何结合使用 less/sass 和 react-css-modules,以提升前端开发的效率和代码质量。
720 0
|
消息中间件 JSON Kafka
docker的/var/run/docker.sock参数
/var/run/docker.sock是运行docker容器时常用的数据卷参数,本文就来学习这个参数的用处,揭示背后的原理
1883 0
docker的/var/run/docker.sock参数