html+css 实现单选按钮动画(input radio按钮)

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

文章目录

  • 效果
  • 原理解析
    • 1.纯css实现,没有js。点击事件是input的checked实现的。
    • 2.当点击的时候input自动添加checked,改变input后面的元素span来实现动画效果。
      • 单选按钮的圆形实现,是通过input后面的==span元素的伪类before==实现的。
      • 对号的实现,是通过input后面的==span元素的伪类before和span元素的伪类after==实现,并且旋转一定角度就实现了。
    • 3.具体的变换参数,直接==看代码==,可以一键复制,查看效果
    • 上代码,可以直接复制使用
      • 目录
      • html
      • css

效果

html+css 实现单选按钮动画(input radio按钮)

原理解析

1.纯css实现,没有js。点击事件是input的checked实现的。

input通过checked进行选中

2.当点击的时候input自动添加checked,改变input后面的元素span来实现动画效果。

单选按钮的圆形实现,是通过input后面的span元素的伪类before实现的。

单选按钮的圆形

单选按钮的圆形实现

对号的实现,是通过input后面的span元素的伪类before和span元素的伪类after实现,并且旋转一定角度就实现了。

对号的实现是由2部分组成的。input后面的span元素的伪元素实现的after伪元素和before伪元素

3.具体的变换参数,直接看代码,可以一键复制,查看效果

上代码,可以直接复制使用

目录

目录

html

<!DOCTYPE html>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>html+css 实现单选按钮动画(input radio按钮)</title><link rel="stylesheet" href="./style.css">
</head><body><div class="container"><h1 style="text-align: center;color:#382F45;margin-bottom: 50px;padding-top: 50px">html+css 实现单选按钮动画(inputradio按钮)</h1><div class="wrapper"><p>会给我三连吗?</p><div class="input-box"><label><input type="radio" name="yes_no"><span class="yes radioSpan"></span>必须滴</label></div><div class="input-box"><label><input type="radio" name="yes_no"><span class="yes radioSpan"></span>下次一定</label></div></div></div>
</body></html>

css

*{/* 初始化 */margin: 0;padding: 0;
}
.container{min-height: 100vh;/* 渐变背景 */background: linear-gradient(200deg,#e4efe9,#93a5cf);
}.wrapper{width: 600px;margin: 0 auto;background-color: #382f45;border-radius: 20px;/* 弹性布局 垂直排列 居中 */display: flex;flex-direction: column;justify-content: center;/* 阴影 */box-shadow: 10px 10px 20px rgba(0,0,0,0.2);padding: 30px;
}
p{color: #fff;font-size: 40px;letter-spacing: 5px;
}
.input-box{display: flex;justify-content: space-between;margin-top: 50px;padding-left: 50px;
}
.input-box label{position: relative;cursor: pointer;display: flex;align-items: center;font-size: 32px;color: #fff;letter-spacing: 5px;
}
.input-box label span{/* 相对定位 */position: relative;display: inline-block;width: 30px;height: 30px;margin-right: 15px;/* 设置过渡 */transition: 0.5s;
}
.input-box label span::before{content: "";/* 绝对定位 */position: absolute;left: 0;bottom: 0;width: 100%;height: 4px;background-color: #fff;/* 通过阴影的方式绘制上边框 */box-shadow: 0 -26px 0 #fff;transition: 0.5s;
}
.input-box label span::after{content: "";/* 绝对定位 */position: absolute;left: 0;bottom: 0;width: 4px;height: 100%;background-color: #fff;/* 通过阴影的方式绘制右边框 */box-shadow: 26px 0 0 #fff;transition: 0.5s;
}
.input-box label .radioSpan::before{height: 100%;border-radius: 50%;background-color: transparent;/* 通过阴影的方式绘制圆 */box-shadow: 0 0 0 4px #fff;
}
.input-box label .radioSpan::after{width: 0;height: 0;}.input-box input{display: none;
}
/*选中的操作*/
.input-box label input:checked ~ span.yes::before{background-color: #0f0;box-shadow: none;height: 4px;border-radius: 0;
}
.input-box label input:checked ~ span.yes::after{background-color: #0f0;box-shadow: none;width: 4px;height: 55%;
}
.input-box label input:checked ~ span.yes{border-radius: 0;transform: rotate(-45deg) translate(2px,-10px);
}
.input-box label input:checked ~ span.no::before{width:100%;height: 4px;background-color: #f00;box-shadow: none;border-radius: 0;transform: rotate(-45deg) translate(7px,-8px);
}
.input-box label input:checked ~ span.no::after{width: 4px;height: 100%;background-color: #f00;box-shadow: none;transform: rotate(-45deg) translate(7px,11px);
}

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕

整理不易,点赞关注宝码香车

更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【第二天】计算机网络 HTTP请求报文和响应报文是什么样的 HTTP请求方式有哪些 GET请求和POST请求的区别

HTTP请求报文和响应报文是什么样的&#xff1f; 我去&#xff0c;以前都没怎么研究过这个。 客户端发送一个请求给服务器&#xff0c;服务器根据请求报文中的信息进行处理&#xff0c;并将处理结果放到响应报文中返回给客户端。 URL HTTP使用URL (Uniform Resource Locator&…

OriginPro 2024b (学习版) 绘制3D坐标下 边际直方图

OriginPro 2024b (学习版) 绘制3D坐标下 边际直方图 时间 2024年7月27日 1.导入数据 需要3列数据&#xff0c;分别作为x,y,z, 其中z值随便设置。快速设置z值的方法&#xff1a;在第4行“F(x)”输入1&#xff0c;这一列的值全设置为1了。 设置x,y,z的方法如下&#xff1a;点击…

WHAT - 一个 Github 仓库的 License 如何解读

目录 一、背景二、解读许可证说明的作用常见的开源许可证类型使用他人代码仓库时需要注意的事项结论 实践作为开发者1. 选择许可证类型2. 在 README 文件中编写许可证信息 作为使用者1. 确定权限2. 了解和遵守条款 总结 一、背景 我们经常在一些 Github 仓库里看到 License 部…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段&#xff1f;“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性&#xff0c;则无法编辑或操作该元素或字段。 因此&#xff0c;如果我们找到一…

【每日一篇】使用图神经网络进行交通速度预测的上下文感知知识图谱框架【为了自己方便读论文】

Context-aware knowledge graph framework for traffic speed forecasting using graph neural network 论文链接&#xff1a; https://arxiv.org/abs/2407.17703 翻译&#xff1a; 摘要 人类流动在空间和时间上受到城市环境的密切影响&#xff0c;构成了理解交通系统的重…

electron TodoList网页应用打包成linux deb、AppImage应用

这里用的是windows的wsl的ubuntu环境 electron应用打包linux应用需要linux下打包&#xff0c;这里用windows的wsl的ubuntu环境进行操作 1&#xff09;linux ubuntu安装nodejs、electron 安装nodejs&#xff1a; sudo apt update sudo apt upgrade ##快捷安装 curl -fsSL http…

7-23学习笔记

一、异常 即程序中一些程序处理不了的特殊情况 Exception 能被程序本身处理( try-catch )&#xff0c; Error 是无法处理的(只能尽量避免)。 1、异常类 Exception 见过的异常 NullPointerException ArrayIndexoutOfBoundException等 String strnull;System.out.println(st…

《python程序语言设计》第6章14题 估算派值 类似莱布尼茨函数。但是我看不明白

这个题提供的公式我没看明白&#xff0c;后来在网上找到了莱布尼茨函数 c 0 for i in range(1, 902, 100):a (-1) ** (i 1)b 2 * i - 1c a / bprint(i, round(4 / c, 3))结果 #按题里的信息&#xff0c;但是结果不对&#xff0c;莱布尼茨函数到底怎么算呀。

Docker学习与实战

一、Docker安装 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine配置docker yum源 sudo yum install -y yum-utils配置阿里云docker仓库 sudo y…

学习记录:ESP32控制舵机 FREERTOS BLE

控制舵机 PWM信号 PWM信号是一种周期性变化的方波信号&#xff0c;它有两个关键参数&#xff1a; 周期&#xff08;Period&#xff09;&#xff1a;一个完整的PWM信号的时间长度&#xff0c;通常用秒&#xff08;s&#xff09;或毫秒&#xff08;ms&#xff09;表示。占空比…

前端开发:HTML与CSS

文章目录 前言1.1、CS架构和BS架构1.2、网页构成 HTML1.web开发1.1、最简单的web应用程序1.2、HTTP协议1.2.1 、简介1.2.2、 http协议特性1.3.3、http请求协议与响应协议 2.HTML概述3.HTML标准结构4.标签的语法5.基本标签6.超链接标签6.1、超链接基本使用6.2、锚点 7.img标签8.…

算法:BFS解决 FloodFill 算法

目录 FloodFill 算法 题目一&#xff1a;图像渲染 题目二&#xff1a;岛屿数量 题目三&#xff1a;岛屿的最大面积 题目四&#xff1a;被围绕的区域 FloodFill 算法 在递归搜索回溯中已经说到过 FloodFill 算法了&#xff0c;但是那里是用 dfs 解决的&#xff0c;这里会使…

【Web开发手礼】探索Web开发的魅力(十一)-Vue(1)配置环境、创建导航栏、各页面整体框架

主要讲解了vue的下载、配置环境、项目创建、导航栏、页面整体框架&#xff01;&#xff01;&#xff01; 文章目录 前言 配置环境 终端 安装Nodejs 安装vue/cli 启动vue自带的图形化项目管理界面 基本概念 script部分 template部分 style部分 第三方组件 创建导航栏 总结 前言 …

数据结构——单链表OJ题(上)

目录 一、移除链表元素 1.思路 2.注意 3.解题 二、反转链表 思路1&#xff1a;三指针翻转法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 思路2&#xff1a;头插法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 三、链表的中间结…

目标检测算法:深入探索与前沿展望

大家好&#xff0c;我是一名测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家联系我&#xff0c;一起【分享测试知识&#xff0c;交流测试技术】 在人工智能的浩瀚星空中&#xff0c;目标检测算法无疑是一颗璀璨的明星&#x…

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse&#xff0c;下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…

开始尝试从0写一个项目--前端(三)

器材管理板块 添加器材管理导航 src\views\home\Home.vue src\router\index.js src\views\equipment\Equipment.vue <template><div>hello!</div></template> 测试 搜索导航分页查询 src\views\equipment\Equipment.vue <template><div&…

51.TFT_LCD液晶屏驱动设计与验证(4)

&#xff08;1&#xff09;顶层文件&#xff1a; module tft_colorbar(input clk ,input reset_n ,output hsync ,output vsync ,output [23:0] rgb_tft ,output tft_bl ,output …

LeetCode算法——滑动窗口矩阵篇

1、长度最小的子数组 题目描述&#xff1a; 解法&#xff1a; 设一个 for 循环来改变指向窗口末尾的指针&#xff0c;再不断抛弃当前窗口内的首元素 最终确定满足条件的最小长度 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int …

Python 教程(五):理解条件语句和循环结构

目录 专栏列表前言条件语句if 语句elif 语句else 语句示例 循环结构for 循环while 循环break 和 continue实例演示 循环控制语句range 函数enumerate 函数 模式匹配总结 在前四篇教程中&#xff0c;我们学习了 Python 的基本语法和数据结构。本篇教程&#xff0c;我们将深入探讨…