HTML中直接创建一个“onoff”图形开关包括css+script

1. HTML中直接创建一个“onoff”图形开关

下面是一个完整的HTML文档示例
在HTML中直接创建一个“onoff”图形开关(通常指的是一个类似于物理开关的UI组件,可以切换开或关的状态),并不直接支持,因为HTML主要用于内容的结构化,而不是复杂的用户界面组件。然而,你可以通过结合HTML、CSS和JavaScript(可能还需要使用JavaScript库或框架)来实现这样的效果。
以下是一个简单的例子,展示如何使用HTML(用于结构)、CSS(用于样式)和JavaScript(用于交互)来创建一个基本的图形开关

在这个完整的HTML文档中,我已经将CSS样式直接放在了<head>部分的<style>标签内,以简化示例。在实际项目中,你可能会选择将CSS样式放在一个外部文件中,并通过<link>标签在<head>部分引入它。同样地,JavaScript代码也可以被放在一个外部文件中,并通过<script src="your-script.js"></script>标签在文档的底部或<head>部分(尽管推荐放在底部以加快页面加载速度)引入。
请注意,我在<head>部分还添加了`<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">`这两个标签,它们对于现代网页来说是非常重要的。第一个标签指定了文档使用的字符编码,而第二个标签则控制了视口(viewport)的行为,确保网页能够在不同设备上正确显示

2. 一个单独html

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Graphical On/Off Switch</title>  <style>  /* 这里粘贴上面提供的CSS代码 */  .onoffswitch {  position: relative; width: 90px;  -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;  }  .onoffswitch-checkbox {  display: none;  }  .onoffswitch-label {  display: block; overflow: hidden; cursor: pointer;  border: 2px solid #999999; border-radius: 20px;  }  .onoffswitch-inner {  display: block; width: 200%; margin-left: -100%;  transition: margin 0.3s ease-in 0s;  }  .onoffswitch-inner:before, .onoffswitch-inner:after {  display: block; float: left; width: 50%; height: 30px; padding: 0; line-height: 30px;  font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;  box-sizing: border-box;  }  .onoffswitch-inner:before {  content: "ON";  padding-left: 10px;  background-color: #34A7C1; color: #FFFFFF;  }  .onoffswitch-inner:after {  content: "OFF";  padding-right: 10px;  background-color: #EEEEEE; color: #999999;  text-align: right;  }  .onoffswitch-switch {  display: block; width: 18px; margin: 6px;  background: #FFFFFF;  position: absolute; top: 0; bottom: 0;  right: 56px;  border: 2px solid #999999; border-radius: 20px;  transition: all 0.3s ease-in 0s;   }  .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {  margin-left: 0;  }  .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {  right: 0px;   }/* ... (继续粘贴CSS代码) ... */  </style>  
</head>  
<body>  <div class="onoffswitch">  <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>  <label class="onoffswitch-label" for="myonoffswitch">  <span class="onoffswitch-inner"></span>  <span class="onoffswitch-switch"></span>  </label>  
</div>  <script>  // 这里可以添加JavaScript代码  // 例如,监听开关的变化  document.querySelector('.onoffswitch-checkbox').addEventListener('change', function(e) {  if (this.checked) {  console.log('Switch is ON');  } else {  console.log('Switch is OFF');  }  });  
</script>  </body>  
</html>

3. HTML、css、script分开

//switch.html
<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Graphical On/Off Switch</title>  <link rel="stylesheet" href="styles.css">   
</head>  
<body>  <div class="onoffswitch">  <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>  <label class="onoffswitch-label" for="myonoffswitch">  <span class="onoffswitch-inner"></span>  <span class="onoffswitch-switch"></span>  </label>  
</div>  <script src="script.js"></script>  </body>  
</html>
//styles.css
.onoffswitch {  position: relative; width: 90px;  -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;  
}  .onoffswitch-checkbox {  display: none;  
}  .onoffswitch-label {  display: block; overflow: hidden; cursor: pointer;  border: 2px solid #999999; border-radius: 20px;  
}  .onoffswitch-inner {  display: block; width: 200%; margin-left: -100%;  transition: margin 0.3s ease-in 0s;  
}  .onoffswitch-inner:before, .onoffswitch-inner:after {  display: block; float: left; width: 50%; height: 30px; padding: 0; line-height: 30px;  font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;  box-sizing: border-box;  
}  .onoffswitch-inner:before {  content: "ON";  padding-left: 10px;  background-color: #34A7C1; color: #FFFFFF;  
}  .onoffswitch-inner:after {  content: "OFF";  padding-right: 10px;  background-color: #EEEEEE; color: #999999;  text-align: right;  
}  .onoffswitch-switch {  display: block; width: 18px; margin: 6px;  background: #FFFFFF;  position: absolute; top: 0; bottom: 0;  right: 56px;  border: 2px solid #999999; border-radius: 20px;  transition: all 0.3s ease-in 0s;   
}  .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {  margin-left: 0;  
}  .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {  right: 0px;   
}
//script.js

可以通过JavaScript来监听开关的变化,并执行一些操作(如发送AJAX请求、更改其他元素的样式等)

document.querySelector('.onoffswitch-checkbox').addEventListener('change', function(e) {  if (this.checked) {  console.log('Switch is ON');  } else {  console.log('Switch is OFF');  }  
});

4. 效果

在这里插入图片描述
在这里插入图片描述

5. 原理说明

下面我将分别解释这三个部分是如何工作的:

HTML
HTML部分定义了开关的结构。它包含一个隐藏的复选框(<input type=“checkbox” …>),这个复选框是实际控制开关状态的元素,但由于它默认是不可见的,所以我们通过CSS来美化它的显示方式。

<input type=“checkbox” …>:这是一个标准的HTML复选框元素,用于存储开关的状态(开或关)。

.onoffswitch:定义了开关的整体样式,如宽度和禁止用户选择文本。
.onoffswitch-checkbox:将复选框隐藏起来,因为我们不希望用户直接看到或与之交互。
.onoffswitch-label:定义了开关标签的样式,包括边框、圆角等。
.onoffswitch-inner 和 .onoffswitch-inner:before, .onoffswitch-inner:after:.onoffswitch-inner是包含“ON”和“OFF”文本的容器,而:before和:after伪元素分别用于显示这两个文本。通过调整margin-left属性,我们可以控制这两个文本(即开关的两端)的显示位置。
.onoffswitch-switch:定义了开关滑动部分的样式,包括大小、位置、背景色和边框等。当复选框被选中时,这个部分会移动到另一边,从而改变开关的显示状态。
过渡效果(transition):在.onoffswitch-inner和.onoffswitch-switch上使用了过渡效果,使得开关的切换动作更加平滑。
JavaScript
JavaScript部分用于增强开关的交互性。

document.querySelector(‘.onoffswitch-checkbox’).addEventListener(‘change’, function(e) { … }):这行代码为复选框添加了一个事件监听器,监听change事件(即复选框的状态发生变化时)。当事件发生时,会执行一个回调函数,该函数检查复选框的checked属性,并根据其值在控制台输出相应的信息。
工作原理总结
用户点击开关的标签部分。
由于标签与隐藏的复选框相关联,点击标签会触发复选框的点击事件。
复选框的状态(选中或未选中)发生变化,并触发change事件。
JavaScript事件监听器捕获到这个change事件,并执行回调函数。
回调函数检查复选框的checked属性,并根据其值输出相应的信息到控制台。
同时,由于CSS的样式和过渡效果,开关的视觉效果也会相应地发生变化,以反映复选框的新状态。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计原则

面向对象经典设计原则主要包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则&#xff0c;文本主要从JAVA面向对象程序设计语言类的基本特性&#xff08;封装、继承、多态&#xff09;、JDK的API设计三个方面描述这些原则的基本原理。 单一职责原则 …

SMS over IP原理

目录 1. 短消息业务的实现方式 2. 传统 CS 短消息业务中的发送与送达报告 3. MAP/CAP 信令常见消息 4. SMS over IP 特点概述 5. SMS over IP 中的主要流程 5.1 短消息注册流程(NR 或 LTE 接入) 5.2 短消息发送(MO)流程(NR 或 LTE 接入) 5.3 短消息接收(MT)流程(NR 或…

二百六十七、MySQL——海豚调度器创建MySQL库表

一、目的 为了方便部署&#xff0c;直接用海豚创建MySQL库表 二、实施步骤 2.1 准备好SQL文件&#xff0c;并上传海豚中 create database if not exists hurys_dc; use hurys_dc; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; CREATE TABLE tb_holiday ( id int NOT …

TypeError: expected string or buffer - Langchain, OpenAI Embeddings

题意&#xff1a;类型错误&#xff1a;期望字符串或缓冲区 - Langchain&#xff0c;OpenAI Embeddings 问题背景&#xff1a; I am trying to create RAG using the product manuals in pdf which are splitted, indexed and stored in Chroma persisted on a disk. When I tr…

完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!

完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01;…

【FreeRTOS】中的portYIELD_FROM_ISR(xHigherPriorityTaskWoken)有啥用?

1、大家都知道&#xff0c;在中断里&#xff0c;freertos经常有下面的写法&#xff0c;会调用portYIELD_FROM_ISR BaseType_t xHigherPriorityTaskWoken pdFALSE; vTaskNotifyGiveFromISR(xTaskToNotify, &xHigherPriorityTaskWoken); //xHigherPriorityTaskWoken可为NUL…

【创意无限,尽在Houdini!】解锁数字特效的魔法工具箱 -- Houdini 产品交流会,诚邀您的参与!

尊敬的先生/女士, 我们是 Houdini 产品厂商在亚太地区的经销商--八方在线科技有限公司。 Houdini 产品厂商诚挚地邀请您参加即将举办的 Houdini 产品交流会。本次交流会将为您展示 Houdini 软件的最新功能和应用&#xff0c;帮助您更好地了解这款领先的3D动画和视觉特效软件。 …

1.4 MySql配置文件

既然我们开始学习数据库&#xff0c;就不能像大学里边讲数据库课程那样简单讲一下&#xff0c;增删改查&#xff0c;然后介绍一下怎么去创建索引&#xff0c;怎么提交和回滚事务。我们学习数据库要明白怎么用&#xff0c;怎么配置&#xff0c;学懂学透彻了。当然MySql的配置参数…

Python办公自动化案例(五):分析文本数据的词频并形成词云图

案例:分析文本数据的词频并形成词云图 在文本分析中,词频分析是一种基本且重要的技术,它可以帮助我们了解文本中词汇的使用频率。通过词频分析,我们可以识别出文本的关键词汇,从而对文本内容有更深入的理解。词云图是一种将词频视觉化的方法,它通过不同大小的字体展示词…

GRE隧道在实际部署中的优化、局限性与弊端

GRE的其他特性 上一篇光讲解配置就花了大量的篇幅&#xff0c;还一些特性没有讲解的&#xff0c;这里在来提及下。 1、动态路由协议 在上一篇中是使用的静态路由&#xff0c;那么在动态路由协议中应该怎么配置呢&#xff1f; undoip route-static 192.168.20.0 255.255.255.0 …

Android ImageView支持每个角的不同半径

Android ImageView支持每个角的不同半径 import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources.NotFoundException; import an…

身份证实名认证的应用场景-身份证识别api

引言 在互联网时代&#xff0c;虚拟身份和真实身份的界限逐渐模糊。为了保证线上平台的安全性和可信度&#xff0c;身份证实名认证逐渐成为必不可少的验证方式。它通过身份信息的核验&#xff0c;确保用户是真实的个人&#xff0c;防止虚假身份带来的各类风险。本文将探讨身份证…

卖家必看:利用亚马逊自养号测评精选热门产品,增强店铺权重

在亚马逊的商业版图中&#xff0c;选品始终占据着核心地位&#xff0c;是贯穿其经营策略的永恒旋律。一个商品能否脱颖而出&#xff0c;成为市场中的明星爆款&#xff0c;其关键在于卖家对产品的精挑细选&#xff0c;这一环节的重要性不言而喻&#xff0c;是决定胜负的关键所在…

【matlab】将程序打包为exe文件(matlab r2023a为例)

文章目录 一、安装运行时环境1.1 安装1.2 简介 二、打包三、打包文件为什么很大 一、安装运行时环境 使用 Application Compiler 来将程序打包为exe&#xff0c;相当于你使用C编译器把C语言编译成可执行程序。 在matlab菜单栏–App下面可以看到Application Compiler。 或者在…

智慧电网能源双碳实训平台

智慧产业实践基地提供能源双碳实训系统&#xff0c;系统集成了火力发电、风力发电、光伏发电、储能、变网、载荷、智能抄表等多种功能&#xff0c;将分布式发电机组、储能单元、逆变单元、可以远程控制的物联网负荷汇聚在一起&#xff0c;通过物联网、人工智能、嵌入式、大数据…

元素循环分析再添新成员:铜、钼、镍、钴、硒微量元素数据库注释

微量营养元素&#xff08;例如Fe、Cu、Mo、Ni等&#xff09;是光合作用、呼吸作用、生物大分子合成、氧化还原平衡、细胞生长和免疫系统功能等微生物驱动过程的重要调节因子。虽然生物体需要少量的微量营养元素&#xff0c;但缺乏微量营养元素会严重限制生物体的生长和生物过程…

新手教学系列——基于统一页面的管理后台设计(二)集成篇

在现代企业级应用中,后台管理系统不仅是业务运营的核心,还承担着数据管理、用户权限控制等重要功能。随着业务规模的不断扩大,系统架构逐渐向微服务转变,多个后端服务模块协同工作,如何高效地集成这些模块,确保系统的稳定性和可维护性,成为开发者亟需解决的问题。在《新…

TR CU 004/2011《低压设备安全技术法规》认证解读篇上

一、根据技术法规或国家标准进行的生产一致性认证为制造商和卖方提供了以下优势&#xff1a; 不需要为每个国家提供单独的文件&#xff1b; 大大减少了完成认证程序所需的时间&#xff1b; 加快国家间贸易周转&#xff0c;对其经济产生积极影响&#xff1b; 个别公司的销售额…

day-56 最长的字母序连续子字符串的长度

思路 双指针&#xff0c;用left和right表示以right为右边界的连续子字符串&#xff0c;left表示其左边界 解题过程 right从0到s.length()-1遍历&#xff1a;1.如果当前字符减去前一个字符的值为1,则当前字符与前面的字符是连续的&#xff0c;此时left不变&#xff0c;right;2.…

SpringBoot设置mysql的ssl连接

因工作需要&#xff0c;mysql连接需要开启ssl认证&#xff0c;本文主要讲述客户端如何配置ssl连接。 开发环境信息&#xff1a; SpringBoot&#xff1a; 2.0.5.RELEASE mysql-connector-java&#xff1a; 8.0.18 mysql version&#xff1a;8.0.18 一、检查服务端是否开启ssl认…