【html】如何利用id选择器实现主题切换

今天给大家介绍一种方法来实现主题切换的效果 

效果图:

源码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            font-size: 25px;
            border: 2px solid #000;
            line-height: 200px;
            text-align: center;
        }
        #item1 .box {
            color: red;
            border-color: blue;
        }
        #item2 .box {
            color: orangered;
            background-color: aquamarine;
            border-color: green;
            border-radius: 30px;
        }
        #item3 .box {
            color: purple;
            background-color: yellow;
            border-color: pink;
            border-radius: 50%;
        }
    </style>
</head>
<body>

    <!-- 当前显示的box -->
    <div id="item2">
        <div class="box">
            内容
        </div>
    </div>

    <!-- 其他主题的box,隐藏起来 -->
    <div id="item1" style="display: none;">
        <div class="box">
            内容
        </div>
    </div>
    <div id="item3" style="display: none;">
        <div class="box">
            内容
        </div>
    </div>

    <!-- 切换主题的按钮(示例) -->
    <button onclick="switchTheme('item1')">主题1</button>
    <button onclick="switchTheme('item2')">主题2</button>
    <button onclick="switchTheme('item3')">主题3</button>

    <script>
        function switchTheme(themeId) {
            // 隐藏所有主题的box
            var themes = document.querySelectorAll('[id^="item"]');
            themes.forEach(function(theme) {
                theme.style.display = 'none';
            });

            // 显示选中的主题的box
            var selectedTheme = document.getElementById(themeId);
            selectedTheme.style.display = 'block';
        }
    </script>

</body>
</html>

源码解析:

可以通过修改最外层的ID选择器来模拟修改主题。在你的例子中,.box 类有两个不同的样式定义,一个应用于 #item1 .box,另一个应用于 #item2 .box。这些样式根据它们所在的父元素的ID(item1 或 item2)来应用。

要模拟修改主题,你可以创建多个具有不同ID的父元素,并为每个父元素定义不同的.box样式。然后,你可以通过切换不同ID的父元素来模拟主题更改。

例如,你可以添加一个新的父元素,如 #item3,并为其.box类定义不同的样式:

在这个例子中,我添加了另外两个带有ID item1 和 item3 的父元素,并为它们各自的.box类定义了不同的样式。初始时,只有item2是可见的,其他两个是隐藏的。

我还添加了三个按钮,用于切换主题。当点击按钮时,switchTheme 函数会被调用,它隐藏所有主题的.box,并只显示所选主题的.box

这样,你就可以通过点击按钮来模拟修改主题了。当然,在实际应用中,你可能会有更复杂的主题和样式,以及更优雅的方式来管理这些主题的切换,比如使用JavaScript类、CSS变量或者CSS预处理器。

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

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

相关文章

【软件测试】软件测试入门

软件测试入门 一、什么是软件测试二、软件测试和软件开发的区别三、软件测试在不同类型公司的定位1. 无组织性2. 专职 OR 兼职3. 项目性VS.职能性4.综合型 四、一个优秀的软件测试人员具备的素质1. 技能相关2. 非技能相关 一、什么是软件测试 最常见的理解是&#xff1a;软件测…

货代小白快来收藏‼️普货与非普货的区别

普货是指不属于以下类别的普通货物 危险品 冷冻/冷藏品 违禁品 仿牌货 敏感货 危险品 危险品具体分为九类&#xff1a; 爆炸品 压缩气体 易燃液体 易燃固体、易燃物品和遇湿易燃物品 氧化剂和有机氧化物 有毒和感染性物品 放射性 腐蚀性 杂类 冷冻/冷藏品 主要是指以食品为主的…

初探工厂抽象模式

设计模式的-工厂模式 1.定义一个约定的规则抽象类 class ETFactory {createStore() {throw new Error(抽象方法&#xff0c;不允许直接调用&#xff0c;需重写)}createUser(){throw new Error(抽象方法&#xff0c;不允许直接调用&#xff0c;需重写)} } 案例&#xff1a;…

【ARMv8/ARMv9 硬件加速系列 3.4 -- SVE 复制指令CPY 使用介绍】

文章目录 SVE 复制指令CPYSVE 指令格式SVE 使用语法SVE CPY 使用示例SVE CPY 小结SVE 复制指令CPY CPY <Zd>.<T>, <Pg>/M, #<imm>{, <shift>}cpy 指令在 ARMv9 的

【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt系统相关 | Qt事件 | 事件的介绍及基本概念 文章编号&#xff1a;Qt…

JPS(Jump Point Search)跳点搜索路径规划算法回顾

本篇文章主要回顾一下几年前学的JPS跳点搜索规划算法的相关内容&#xff0c;之前学的时候没有进行概括总结&#xff0c;现在补上 一、A*算法简单回顾 – 1、基本介绍和原理 A*&#xff08;A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法&#xff0c;也是解决许多…

【Java】Math、System、RunTime、BigDecimal类常用方法

目录 1.Math2.System3.RunTime4.BigDecimal 1.Math 数学类&#xff0c;对数据提供数学相关操作的工具类。 常见操作方法如下&#xff1a; 2.System System代表程序所在的系统&#xff0c;也是一个工具类。 拓展&#xff1a;系统起始时间的确定&#xff1a;1970.1.1 3…

【日常记录】【插件】prisma 链接MySQL数据库 简单入门

文章目录 1、新建项目&#xff0c;使用prisma链接数据库1.1、先创建一个项目1.2、初始化 npm 配置文件及下载依赖1.3、初始化TS配置文件1.4、初始化 prisma1.5、更改 prisma/schema.prisma1.6 更改.env 文件1.7 编写 prisma/schema.prisma1.8 将编写的 prisma/schema.prisma 映…

【Nvidia+AI摄像头】面向机器人双目视觉相机

随着人工智能和机器人技术的不断发展&#xff0c;双目深度相机作为一种重要的传感器&#xff0c;正在被广泛应用于各种机器人系统中。双目深度相机作为机器人不可或缺的感知器件&#xff0c;其高精度深度信息为机器人提供环境感知、立体视觉、姿态识别等功能&#xff0c;让机器…

Stable Diffusion 3 Medium 正式开源

Stable Diffusion 3 Medium 正式开源 Stability AI宣布Stable Diffusion 3 Medium现已开源&#xff0c;这是最新的文本生成图像AI模型&#xff0c;被官方声称为“迄今为止最先进的开源模型”&#xff0c;其性能超过了Midjourney 6。 这款Stable Diffusion 3 Medium模型拥有2…

【中学教资科目二】01教育基础

01教育基础 前言第一节 教育的产生与发展1.1 教育的起源 第二节 教育学的产生和发展2.1 中国教育学的发展2.2 西方教育学的发展2.3 独立及多样化阶段2.4 马克思教育学2.5 现代教育发展 第三节 教育与社会的发展3.1 教育与文化的关系 第四节 教育与人的发展、4.1 个体身心发展的…

[Python学习篇] Python字典

字典是一种可变的、无序的键值对&#xff08;key-value&#xff09;集合。字典在许多编程&#xff08;Java中的HashMap&#xff09;任务中非常有用&#xff0c;因为它们允许快速查找、添加和删除元素。字典使用花括号 {} 表示。字典是可变类型。 语法&#xff1a; 变量 {key1…

html入门综合练习

综合练习 通过实际项目练习可以更好地理解和掌握HTML、CSS和JavaScript。以下是几个综合练习项目的建议&#xff1a; 项目1&#xff1a;个人简历网页 创建一个包含以下内容的个人简历网页&#xff1a; 个人简介&#xff08;姓名、照片、联系方式&#xff09;教育背景工作经…

Excel文件损坏怎么修复?这2个方法要学会

当你的excel文件不可读&#xff0c;或者出现提示“文件已经被损坏&#xff0c;无法打开”&#xff0c;这种情况时&#xff0c;会给我们正常的工作带来很多麻烦&#xff0c;文件损坏打不开怎么办&#xff1f;来看看这2招&#xff0c;详细的图文教程&#xff0c;小白也能轻松恢复…

解禁日大涨,爱玛科技的投资前景值得信任吗?

6月17日&#xff0c;爱玛迎来6.28亿股、金额超190亿元的解禁&#xff0c;占总股本72.91%。不过&#xff0c;爱玛股价在巨量解禁中反而迎来涨势&#xff0c;因为这部分股票中&#xff0c;创始人张剑持有的限售股数量几乎就占了爱玛总股本的七成。某种意义上&#xff0c;市场认为…

国货骄傲精亿内存条颠覆游戏战场,推出超强DDR5 7200玄武系列电竞内存

随着科技的迅猛发展,对高性能电脑的需求不断增长,特别是在电竞领域。认识到这一点,国货知名品牌精亿(JINGYI)推出了其全新一代DDR5 7200 RGB电竞内存条,并命名系列为象征中国上古四大神兽的玄武-系列。这款产品凭借其卓越性能和令人印象深刻的海力士A-DIE颗粒配置,正在迅速成为…

Virtualbox7.0版本安装报错:Invalid installation directory

错误情况 我在安装virtualbox最新版7.0.18时候&#xff0c;因为默认安装在C盘&#xff0c;我改成了E盘&#xff0c;然后就报错 Invalid installation directory The chosen installation directory is invalid, as it does not meet the security requirements. Refer to th…

【乳业巨擘·数字革命先锋】光明乳业:上市公司科技蜕变,搭贝低代码引领未来新纪元

在这个由科技编织的未来世界里&#xff0c;光明乳业股份有限公司以巨人之姿&#xff0c;傲立于乳业之巅&#xff0c;以其无与伦比的胆识与魄力&#xff0c;引领了一场震撼业界的数字化革命。与低代码领域的创新领袖——搭贝的强强联合&#xff0c;不仅标志着光明乳业在数字化转…

I2C总线驱动——ap3216c光感传感器从寄存器手册开始入手的实战版(附思维导图)

文章目录 1.I2C驱动框架简介1.1 I2C总线驱动&#xff08;适配器驱动&#xff09;1.1.1 重要结构体1.1.2 重要函数 1.2 I2C设备驱动1.2.1 重要结构体1.2.2 重要函数 1.3 I2C设备和驱动匹配过程 2.I2C设备驱动编写2.1 确认原理图引脚及pinctrl子系统引脚配置信息2.2 确认设备树I2…

华为数通企业面试笔试实验题

1. 笔试题 1.1 实验拓扑 1.2 实验要求 公司A为小型销售公司,需要实现基本上网功能,蓝色部分为外网线,提供DHCP服务 DnsServer:114.114.114.114 帮助网管排查某一台计算机在某一台交换机的某个端口 2. 操作步骤 配置路由器相关的LAN侧接口IP地址 配置DHCP项,要求有PC1与PC2…