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

news2024/11/16 12:05:50

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.coloradmin.cn/o/2157557.html

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

相关文章

[数据集][目标检测]中草药类型识别检测数据集VOC+YOLO格式7976张45类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7976 标注数量(xml文件个数)&#xff1a;7976 标注数量(txt文件个数)&#xff1a;7976 标注…

STM32篇:按键点亮LED灯

输入&#xff08;按键&#xff09;&#xff1a;KEY1---PA0 KEY2---PA1 输出&#xff08;LED灯&#xff09;&#xff1a;LED1---PB8 LED2---PB9

数字孪生技术如何推动企业可持续发展:监控与优化企业可持续目标的新视角

数字孪生助力可持续发展的新机遇 在全球推进可持续发展战略的背景下&#xff0c;企业需要创新型的技术工具来实现高效管理&#xff0c;数字孪生技术成为了实现这一目标的重要工具。数字孪生通过虚拟与现实的互动&#xff0c;将物理世界中的企业活动、运营数据及生产流程进行精…

FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据

FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据 FreeSWITCH GUI界面预览安装FreeSWITCH GUI先看使用手册1、简介2、安装mod_xml_curl模块3、配置mod_xml_curl模块3、编写API接口4、测试一下5、其他注意的地方 FreeSWITCH GUI界面预览 http://m…

LDO选型

LDO原理 mos管工作在可变电阻区&#xff0c;输出端电压会因为输出负载的变化而变化&#xff0c;则可通过误差放大器来控制Rds从而维持输出电压不变&#xff0c;行成一个动态平衡。 低压差 线性调整率 负载调整率 电源&#xff08;纹波&#xff09;抑制比 瞬态响应 外部元器件作…

神经网络(二):卷积神经网络

文章目录 一、图像的本质1.1单通道图像&#xff1a;灰度图1.2多通道图像 二、卷积神经网络2.1基本结构2.2卷积层2.2.1卷积操作2.2.2填充padding2.2.3步幅strides2.2.4多通道图像卷积&#xff1a;单卷积核2.2.5多通道图像卷积&#xff1a;多卷积核2.2.5卷积层的参数与激活函数 2…

算法练习题24——leetcode3296移山所需的最小秒数(二分模拟)

【题目描述】 【代码示例&#xff08;java&#xff09;】 class Solution {// 计算让工人们将山的高度降到0所需的最少时间public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {long left 0; // 最少时间初始为0long right 0; // 最大时间初始化为0// …

Linux,uboot,kernel启动流程,S5PV210芯片的启动流程,DRAM控制器初始化流程

一、S5PV210芯片的DRAM控制器介绍、初始化DDR的流程分析 1、DRAM的地址空间 1)从地址映射图可以知道&#xff0c;S5PV210有两个DRAM端口。 DRAM0的内存地址范围&#xff1a;0x20000000&#xff5e;0x3FFFFFFF&#xff08;512MB&#xff09;&#xff1b;DRAM1:的内存地址范围…

AI大模型教程 Prompt提示词工程 AI原生应用开发零基础入门到实战【2024超细超全,建议收藏】

在AGI&#xff08;通用人工智能&#xff09;时代&#xff0c;那些既精通AI技术、又具备编程能力和业务洞察力的复合型人才将成为最宝贵的资源。为此&#xff0c;我们提出了‘AI全栈工程师’这一概念&#xff0c;旨在更精准地描述这一复合型人才群体&#xff0c;而非过分夸大其词…

全栈项目小组【算法赛】题目及解题

题目&#xff1a;全栈项目小组【算法赛】 题目&#xff1a; 解题思路 1.遍历简历信息&#xff1a;我们需要读取所有简历&#xff0c;根据期望薪资和岗位类型进行分类和统计。 2.分类统计&#xff1a;使用哈希表来存储每个薪资下的前端&#xff08;F&#xff09;和后端&#…

传统产品经理如何快速转行成为顶尖的AI产品经理?

前言 产品经理本身便是一个需要不断学习、不断实践的岗位&#xff0c;即使是AI产品经理&#xff0c;也不能脱离产品经理岗位的本质。 另外&#xff0c;要想知道具体如何转行成为顶尖的AI产品经理&#xff0c;我们首先要明确两个问题&#xff0c;即&#xff1a; 什么是AI产品…

HTML5简介的水果蔬菜在线商城网站源码系列模板3

文章目录 1.设计来源1.1 主界面1.2 商品列表1.3 商品信息1.4 购物车1.5 其他页面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.ne…

AI Native平台,跨越AI应用从创新到生产的鸿沟

2024年是AI应用的元年&#xff0c;以大模型为中心的 AI Native 应用大爆发正在从理想变成现实。云计算带来的应用创新潮&#xff0c;经历了虚拟机时代和云原生时代&#xff0c;正在全面拥抱以大模型为核心的 AI Native 阶段&#xff0c;推动大数据与AI的工作流前所未有地紧密结…

【C语言进阶】第四节:自定义类型详解

1、结构体 1.1 结构体变量的定义和初始化 struct Point//类型声明 {int x;int y; }p1;//声明类型的同时定义变量p1struct Point p2;//定义结构体变量p2//初始化&#xff1a;定义变量的同时赋初值。 struct Point p3 { x, y };struct Node {int data;struct Point p;struct N…

智谱清影的魅力:使用CogVideoX-2b生成6秒视频的真实体验!

文章目录 1 3D变分自编码器与3D RoPE2 精确描述与多样化输入3 社区的力量与未来展望 在8月6日&#xff0c;智谱 AI 发布了一则令人振奋的消息&#xff1a;他们决定开源其视频生成模型CogVideoX。 1 3D变分自编码器与3D RoPE 作为一名开发者&#xff0c;我近期才来体验这个新工…

只需5分钟!掌握学术写作的核心逻辑!

人工智能的广泛应用中&#xff0c;ChatGPT 已被证明是一种极具潜力的语言模型&#xff0c;其功能涵盖多个领域&#xff0c;显示出强大的适应性。在 GPT-4 架构的推动下&#xff0c;ChatGPT 正在彻底改变我们与文本驱动的人工智能的交互模式。 在学术界&#xff0c;学术写作至关…

【AIGC】ChatGPT提示词助力高效文献处理、公文撰写、会议纪要与视频总结

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;高效英文文献阅读提示词使用方法 &#x1f4af;高效公文写作提示词使用方法 &#x1f4af;高效会议纪要提示词使用方法 &#x1f4af;高效视频内容分析提示词使用方法 &a…

Unity3D 小案例 像素贪吃蛇 03 蛇的碰撞

Unity3D 小案例 像素贪吃蛇 第三期 蛇的碰撞&#xff08;完结&#xff09; 像素贪吃蛇 碰撞蛇身 当蛇头碰撞到蛇身时&#xff0c;游戏应该判定为失败。 找到蛇身预制体&#xff0c;添加 Body 标签和碰撞体&#xff0c;碰撞体的大小为 0.5&#xff0c;跟蛇头和蛇身的碰撞体范…

两台虚拟机之分布式部署

Apache2 和 PHP 安装 在虚拟机1上执行以下步骤: 更新系统包列表: sudo apt update安装 Apache2: sudo apt install apache2 -y安装 PHP 及其扩展: sudo apt install php libapache2-mod-php php-mysql配置Apache和PHP sudo nano /etc/apache2/mods-enabled/dir.conf#…

【BEV 视图变换】Ray-based(2): 代码复现+画图解释 基于深度估计、bev_pool(代码一键运行)

paper&#xff1a;Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D code&#xff1a;https://github.com/nv-tlabs/lift-splat-shoot 一、完整复现代码(可一键运行)和效果图 import torch import torch.nn as nn import mat…