当前位置: 首页 > news >正文

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的样式和过渡效果,开关的视觉效果也会相应地发生变化,以反映复选框的新状态。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CC1链的第二种方式-LazyMap版调用链
  • 【爱给网-注册安全分析报告-无验证方式导致安全隐患】
  • 电脑如何设置代理IP:详细步骤指南
  • CertiK因发现Apple Vision Pro眼动追踪技术漏洞,第6次获苹果认可
  • Pyspark dataframe基本内置方法(4)
  • 聊聊AUTOSAR:基于Vector MICROSAR的TC8测试开发方案
  • C# 实时流转换为m3u8
  • Unity Transform 组件
  • docker部署个人网页导航
  • QFramework v1.0 使用指南 更新篇:20240918. 新增 BindableList
  • 瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商
  • Python爬虫解析工具之xpath使用详解
  • 从0开始学ARM
  • 【VitualBox】VitualBox的网络模式+网络配置
  • 情感类智能体——你的微信女神
  • [译] React v16.8: 含有Hooks的版本
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • conda常用的命令
  • If…else
  • js作用域和this的理解
  • PV统计优化设计
  • Redis学习笔记 - pipline(流水线、管道)
  • 当SetTimeout遇到了字符串
  • 第2章 网络文档
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • Nginx实现动静分离
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • #define 用法
  • #pragma预处理命令
  • #QT(QCharts绘制曲线)
  • #Ubuntu(修改root信息)
  • (~_~)
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (k8s)Kubernetes本地存储接入
  • (rabbitmq的高级特性)消息可靠性
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)linux使用docker容器运行mysql
  • (二)原生js案例之数码时钟计时
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • ***测试-HTTP方法
  • ../depcomp: line 571: exec: g++: not found
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .stream().map与.stream().flatMap的使用
  • 。。。。。