CSS的自定义属性var和JS的classList.toggle()方法,使用详细(css中var变量怎么应用)

简介:CSS中的var(变量)是CSS3中的新特性,用于定义可重用的值,类似于编程语言中的变量;它允许您在整个CSS文件中定义一个值,并在需要时使用该值。这样可以使CSS更加灵活和易于维护;classList.toggle()方法,使用详细,下面有实例说明。

这里使用var变量和classList.toggle()方法来实现一个切换主题背景的功能,

效果如下:

一、首先定义html元素,并设置样式;

<body>

  <div class="index_box">
    <div class="btn_circle"></div>
  </div>

</body>


html,
body {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

//这里使用css的var定义变量: --dark-plum-bg  , white是默认值
body {
  background-color: var(--dark-plum-bg, white);
}

//这里定义一个类名,然后给变量--dark-plum-bg赋值
//哪个元素有该类名且调用了该类名下的自定义属性,哪个元素效果就会生效
.dom-style {
  --dark-pink-bg: pink;
  --dark-plum-bg: plum;
}

//拥有这个类名,元素就会向右移动40px(按钮里面的圆)
.mode-switch-off {
  transform: translate(40px);
}

.index_box {
  width: 90px;
  height: 40px;
  line-height: 40px;
  background-image: linear-gradient(to right, yellowgreen, #8080ff);
  border-radius: 20px;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding: 0px 10px;
  box-shadow: 0px 0px 12px silver;
  .btn_circle {
    width: 30px;
    height: 30px;
    background-color: white;
    border-radius: 20px;
    transition: all 0.3s linear;
  }
}

二、准备好文本和样式后,然后使用JS控制按钮和主题色变化;

这里获取到按钮元素后,添加一个点击事件  
document.querySelector(".index_box").addEventListener("click", function () {

    这里获取按钮里面的白色元素,
    通过classList.toggle()方法判断该元素是否有mode-switch-off这个类名,
    如果有就移除,没有就就添加
    this.querySelector(".btn_circle").classList.toggle("mode-switch-off");

    最后还是通过classList.toggle()方法判断body元素是否有dom-style类名,
    有的话自然就会变成该元素下的背景色
    document.body.classList.toggle("dom-style");

})

三、这里的classList.toggle()方法大家可能比较陌生,这里介绍一下该方法的含义和使用详细;

classList.toggle() 方法,介绍:

1、classList.toggle() 是 JavaScript 中用于切换 HTML 元素类名的方法。

2、它可以添加类名,删除类名或者在类名存在时删除它,不存在时添加它,通俗点讲就是,使用该方法时,元素有该类名就移除,没有就添加。

这里举个简单的实例,使用方法如下: 

实例1:

1、首先,获取需要操作的 HTML 元素:

let element = document.getElementById("example");

2、然后,使用 toggle() 方法来切换类名:

element.classList.toggle("active");

3、这将在类名 "active" 存在时删除它,在不存在时添加它。

实例2:

1、这里假设我们有一个按钮,点击它时可以切换它的样式。首先,我们需要在 CSS 中定义两个类名,一个是默认样式,一个是激活样式:

CSS:

.btn { background-color: #ccc; color: #000; } 

.btn.active { background-color: #000; color: #fff; }

2、然后,我们需要在 HTML 中添加一个按钮:

HTML:

<button id="myBtn" class="btn">Toggle</button>

3、最后,在 JavaScript 中添加事件监听器,当按钮被点击时调用 toggle() 方法来切换类名:

JS:

let btn = document.getElementById("myBtn"); 

btn.addEventListener("click", function() { this.classList.toggle("active"); });

4、现在,每次点击按钮时,它的样式都会切换。

实例2效果:

说到这,我们再回到上面通过var变量切换背景的案例,这样就比较容易理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31932.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

环境搭建【1】VM和ubuntun 环境搭建

1.安装VMware 1.1 下载安装包 &#xff08;1&#xff09;官网下载&#xff1a;https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0 &#xff08;2&#xff09;百度网盘&#xff1a;https://pan.baidu.com/s/…

软考高级系统架构设计师(三) 基础知识之操作系统2(分页/分段/段页存储)

目录 存储管理 页式存储 段式存储 段页式存储 存储管理 存储管理的主要目的&#xff1a;解决多个用户共同使用主存的问题&#xff08;怎么分配内存&#xff1f;&#xff1f;&#xff09; 主要包括分区存储管理、分页存储管理、分段存储器管理、段页式存储管理以及虚拟存储…

windows10企业版安装西门子博途V15---01准备环境

网上看到了很多博途安装的文章或视频&#xff0c;一大部分都是你抄抄&#xff0c;我抄抄&#xff0c;滥鱼充饥&#xff0c;一是文章思路不清晰&#xff0c;二是具体安装环境不一致&#xff0c;三是视频讲解混乱&#xff0c;视频不清楚&#xff0c;操作有错误&#xff0c;其中不…

2022(一等奖)D678基于改进结构函数法的大气气溶胶遥感反演

作品介绍 1 应用背景 大气气溶胶是大气中重要的成分之一&#xff0c;是悬浮于大气中的固体和液体微粒与它们的气体载体共同组成的多相体系&#xff0c;其尺度大约在10-3到102 μm之间。大气气溶胶的特性对空气质量具有良好的指示作用&#xff0c;气溶胶的研究对空气质量的监测…

使用大白菜PE给苹果电脑安装win7ghost

如何安装大白菜苹果电脑&#xff1f;ghost (苹果电脑能用大白菜安装系统吗) 喜欢用苹果Mac电脑&#xff0c;开始后发现不习惯苹果的操作系统&#xff0c;还是习惯用Windows我们可以给苹果系统Mac电脑上安装Windows系统&#xff0c;享受苹果的外观&#xff0c;操作windows系统…

机器学习之基于LDA的人脸识别

目录 LDA降维 思想 matlab代码 fisherface 思想 matlab代码 人脸识别 思想 matlab代码 LDA降维 思想 首先&#xff0c;代码通过使用dir函数获取指定路径下所有以".bmp"结尾的文件&#xff0c;并存储在变量pictures中。 然后&#xff0c;定义了一些参数&a…

机器学习之线性回归算法

目录 线性回归算法 求导法推导 梯度下降法推导 线性回归实现人脸识别 导入数据 构建标签矩阵 经典线性回归求导法实现 经典线性回归梯度下降法实现 岭回归实现 套索回归实现 局部加权线性回归实现 可视化 人脸识别 线性回归算法 求导法推导 梯度下降法推导 线性回…

TypeScript ~ TS 掌握编译文件配置项 ⑤

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; TypeScript ~ TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &…

计算机网络——网络层

序言 计算机网络中的网络层在当今的社会起到了什么作用&#xff1f; 现在的互联网通信&#xff0c;远程办公和远程教育&#xff0c;电子商务和在线服务&#xff0c;信息共享和社交媒体&#xff0c;物联网和智能家居都是通过网络层才能使用的。它连接了人们、设备和信息&#xf…

chatgpt赋能python:Python编译成SO文件和反编译的介绍

Python编译成SO文件和反编译的介绍 什么是SO文件&#xff1f; SO文件&#xff0c;也称为共享对象文件&#xff0c;是一种二进制文件格式&#xff0c;用于在多个应用程序之间共享代码和数据。在Unix和类Unix系统中&#xff0c;它们通常是共享库文件的形式。因此&#xff0c;SO…

Vue-scoped(局部)样式

scoped(局部)样式 scoped是在脚手架有一个编写样式的小技巧 作用&#xff1a;让样式在局部生效&#xff0c;防止冲突 1 编写案例 现在有两个组件&#xff0c;一个student,一个school&#xff0c;现在想给组件写点样式 这里只给个背景色 没问题&#xff0c;样式生效 2 样式冲…

自然语言处理从入门到应用——动态词向量预训练:ELMo词向量

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 在双向语言模型预训练完成后&#xff0c;模型的编码部分&#xff08;包括输入表示层以及多层堆叠LSTM&#xff09;便可以用来计算任意文本的动态词向量表示。最自然的做法是使用两个LSTM的最后一层隐含层输出作为词的动…

GPT学习笔记-Enterprise Knowledge Retrieval(企业知识检索)--私有知识库的集成

openai-cookbook/apps/enterprise-knowledge-retrieval at main openai/openai-cookbook GitHub 终于看到对于我解决现有问题的例子代码&#xff0c;对于企业私有知识库的集成。 我对"Retrieval"重新理解了一下&#xff0c;源自动词"retrieve"&#xf…

idea乱码的相关问题

idea控制台乱码&#xff08;即&#xff1a;tomacat等启动时的乱码&#xff09; 第一步&#xff1a; 控制台tomcat启动信息乱码解决&#xff08;红色字体&#xff09; 1 在本地 tomcat 的配置文件中找到 logging.properties 文件设置日志输出的编码为 UTF-8 追加的配置信息为…

插入排序-C语言实现

&#x1f970;前言 &#x1f354;在学数据结构的第一节课就知道了数据结构课程是要管理并且学会操作数据&#xff0c;当然操作数据首先想到的就是数据的排序&#xff0c;排过顺序的数据的使用价值才够大。前面我们学习了顺序表也学习了链表等等&#xff0c;这些就是储存数据的方…

1.1 编写一个简单的C++程序

博主介绍&#xff1a;爱打游戏的计算机专业学生 博主主页&#xff1a;夏驰和徐策 所属专栏&#xff1a;夏驰和徐策带你从零开始学C 1.1.0 这段话告诉我们什么&#xff1f; 这段话解释了一个C程序中的main函数的基本结构和功能。 它告诉我们以下几点&#xff1a; 1. C程序的…

Python爬取城市天气数据,并作数据可视化

1.爬取广惠河深2022-2024年的天气数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf open(广-惠-河-深天气.csv, modea, encodingutf-8, newline) csv_writer csv.writer(f) csv_writer.writerow([日期, 最高温度, 最低温度, 天气,…

深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; GPT&#xff08;Generative Pre-Trained Transformer&#xff09;&#xff1a;基础知识 GPT&#xff08;Generative Pre-Trained Transformer&#xff09;&#xff1a;在不同任务中使用GPT GPT&#x…

对英雄联盟英雄属性数据的预处理及相似度矩阵计算

目录 一、引言 二、任务1 1、填充缺失值 2、用中位数填充“生命值”属性列缺失值 3、 用均值填充“生命值”属性列缺失值 三、任务2 注&#xff1a;英雄联盟英雄属性数据资源可在博客资源中自行获取。 一、引言 英雄联盟作为一款古早的刀塔游戏&#xff0c;可谓之刀塔游…

[golang 微服务] 7. go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

一.go-micro框架 前言 上一节讲解了 GRPC微服务集群 Consul集群 grpc-consul-resolver相关的案例,知道了微服务之间通信采用的 通信协议&#xff0c;如何实现 服务的注册和发现&#xff0c;搭建 服务管理集群&#xff0c;以及服务与服务之间的 RPC通信方式,具体的内容包括: pro…