有趣的css - 圆形背景动效多选框

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是用 css 实现一个圆形背景动效多选框,适用提醒用户勾选场景,突出多选框选项,可以有效增加用户识别度。

最新文章通过公众号「设计师工作日常」发布。


目录

  • 整体效果
  • 核心代码
    • html 代码
    • css 部分代码
  • 完整代码如下
    • html 页面
    • css 样式
    • 页面渲染效果

整体效果

💎知识点:
1️⃣ appearance 属性应用
2️⃣ ::before 以及 ::after 伪元素
3️⃣ transform 以及 transition 属性
4️⃣ :hover:active:checked 选择器

🔑思路:
自定义多选框外观,利用伪元素搭建多选框,利用变形属性和过渡属性实现动画效果。

适用提醒用户勾选场景,突出多选框选项,可以有效增加用户识别度。


核心代码部分,简要说明了写法思路;完整代码在最后,可直接复制到本地运行。

核心代码

html 代码

<label class="label66"><input type="checkbox" class="check-inp66"><span class="span66"></span>
</label>

label 标签作为多选框主体, input 标签放到 label 中默认绑定,span 标签补充多选框外观元素。

css 部分代码

.label66{position: relative;display: flex;justify-content: center;align-items: center;
}
.check-inp66{width: 40px;height: 40px;border-radius: 50%;position: absolute;background-color: rgba(0, 0, 0, 0.06);z-index: 1;transform: scale(1);transition: transform 0.15s linear;appearance: none; /* none时可以自定义其外观 */
}
.span66{width: 20px;height: 20px;display: block;position: absolute;z-index: 2;cursor: pointer;
}
.span66::before{content: '';width: 20px;height: 20px;border: 2px solid rgba(0,0,0,0.6);border-radius: 3px;box-sizing: border-box;display: block;position: absolute;transition: all 0.3s linear;
}
.span66::after{content: "";width: 10px;height: 5px;display: block;position: absolute;top: 5px;left: 4px;border: solid 2px transparent;border-right: none;border-top: none;transform: rotate(-45deg);transition: border-color 0.3s linear;
}
.label66:hover .span66::before{border-color: #0093E9;
}
.label66:active .check-inp66,.label66:active .check-inp66:checked{transform: scale(0);transition: transform 0.15s linear;
}
.check-inp66:checked{background-color: rgba(0,147,233,0.08);
}
.check-inp66:checked ~ .span66::before{background-color: #0093E9;border-color: #0093E9;
}
.check-inp66:checked ~ .span66::after{border-color: #ffffff;
}

1、利用 appearance 属性,定义 appearance: none;,自定义多选框外观,定义圆形浅灰色背景,定义 transformtransition 属性参数。

2、定义 span 样式,利用伪元素 ::before 以及 ::after,分别写出多选框的矩形边框和多选框中的对勾元素;并且给它们分别增加过渡属性参数。

3、利用 :hover 选择器,当鼠标悬浮到多选框上方时,多选框边框实现颜色过渡;利用 :active 选择器,当鼠标左键点击时,多选框的圆形背景实现缩小放大过渡效果;利用 :checked 选择器,当多选框选中时,切换圆形背景颜色,多选框矩形框背景颜色过渡,对勾也过渡显示。

完整代码如下

html 页面

<!DOCTYPE html>
<html lang="zh"><head><meta charset="utf-8"><link rel="stylesheet" href="style.css"><title>圆形背景动效多选框</title></head><body><div class="app"><label class="label66"><input type="checkbox" class="check-inp66"><span class="span66"></span></label></div></body>
</html>

css 样式

/** style.css **/
.app{width: 100%;height: 100vh;background-color: #ffffff;position: relative;display: flex;justify-content: center;align-items: center;
}
.label66{position: relative;display: flex;justify-content: center;align-items: center;
}
.check-inp66{width: 40px;height: 40px;border-radius: 50%;position: absolute;background-color: rgba(0, 0, 0, 0.06);z-index: 1;transform: scale(1);transition: transform 0.15s linear;appearance: none; /* none时可以自定义其外观 */
}
.span66{width: 20px;height: 20px;display: block;position: absolute;z-index: 2;cursor: pointer;
}
.span66::before{content: '';width: 20px;height: 20px;border: 2px solid rgba(0,0,0,0.6);border-radius: 3px;box-sizing: border-box;display: block;position: absolute;transition: all 0.3s linear;
}
.span66::after{content: "";width: 10px;height: 5px;display: block;position: absolute;top: 5px;left: 4px;border: solid 2px transparent;border-right: none;border-top: none;transform: rotate(-45deg);transition: border-color 0.3s linear;
}
.label66:hover .span66::before{border-color: #0093E9;
}
.label66:active .check-inp66,.label66:active .check-inp66:checked{transform: scale(0);transition: transform 0.15s linear;
}
.check-inp66:checked{background-color: rgba(0,147,233,0.08);
}
.check-inp66:checked ~ .span66::before{background-color: #0093E9;border-color: #0093E9;
}
.check-inp66:checked ~ .span66::after{border-color: #ffffff;
}

页面渲染效果

以上就是所有代码,以及简单的思路,希望对你有一些帮助或者启发。


[1] 原文阅读


网站《有趣的css》上线了,目前已上线 demo 实例 65 例,欢迎大家访问。

网站:Funcss

CSS 是一种很酷很有趣的计算机语言,在这里跟大家分享一些 CSS 实例 Demo,为学习者获取灵感和思路提供一点帮助,希望你们喜欢。


我是 Just,这里是「设计师工作日常」,求点赞求关注!

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

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

相关文章

VBA批量合并带有图片、表格与文本框的Word

本文介绍基于VBA语言&#xff0c;对大量含有图片、文本框与表格的Word文档加以批量自动合并&#xff0c;并在每一次合并时添加分页符的方法。 在我们之前的文章基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符&#xff08;https://blog.csdn.net/zhebu…

helloworld 可执行程序得到的过程

// -E 预处理 开发过程中可以确定某个宏 // -c 把预处理 编译 汇编 都做了,但是不链接 // -o 指定输出文件 // -I 指定头文件目录 // -L 指定链接库文件目录 // -l 指定链接哪一个库文件 #include <stdio.h> #include <stdlib.h> #include <string.h>int mai…

【微积分】CH16 integrals and vector fields听课笔记

【托马斯微积分学习日记】13.1-线积分_哔哩哔哩_bilibili 概述 16.1line integrals of scalar functions [中英双语]可视化多元微积分 - 线积分介绍_哔哩哔哩_bilibili 16.2vector fields and line integrals&#xff1a; work circulation and flux 向量场差不多也是描述某种…

gpt-4o继续迭代考场安排程序 一键生成考场清单

接上两篇gpt-4o考场安排-CSDN博客&#xff0c;考场分层次安排&#xff0c;最终exe版-CSDN博客 当然你也可以只看这一篇。 今天又添加了以下功能&#xff0c;程序见后。 1、自动分页&#xff0c;每个考场打印一页 2、添加了打印试场单页眉 3、添加了页脚 第X页&#xff0c;…

Leetcode刷题笔记1:数组基础1

导语 leetcode刷题笔记记录&#xff0c;本篇博客记录数组基础1部分的题目&#xff0c;主要题目包括&#xff1a; Leetcode 704 二分查找Leetcode 27 移除元素 知识点 二分查找 原理 二分查找的适用对象为有序数组且数组中无重复元素&#xff0c;其主要原理是每次都从有序…

AI视频教程下载:全面掌握ChatGPT和LangChain开发AI应用(附源代码)

这是一门深入的课程&#xff0c;涉及ChatGPT、LangChain和Python。打造专注于现实世界AI集成的AI应用&#xff0c;课件附有每一节涉及到的源代码。 **你将学到什么&#xff1a;** - 将ChatGPT集成到LangChain的生产风格应用中 - 使用LangChain组件构建复杂的文本生成管道 - …

推荐五个线上兼职,在家也能轻松日入百元,适合上班族和全职宝妈

在这个瞬息万变的时代&#xff0c;你是否也曾考虑过在繁忙的工作之外&#xff0c;寻找一份兼职副业来补贴家用&#xff0c;同时保持生活的多样性&#xff1f;别急&#xff0c;现在就让我为你揭秘五个可靠的日结线上兼职岗位&#xff0c;助你轻松迈向财务自由之路&#xff01; 一…

云WAF与传统WAF:网络安全的双重防线

在网络安全领域&#xff0c;Web应用防火墙&#xff08;WAF&#xff09;是守护企业网络安全的重要盾牌。随着云计算技术的迅猛发展&#xff0c;云WAF作为一种新型的安全服务模式&#xff0c;正逐渐成为企业网络安全防护的新宠。本文将深入探讨云WAF与传统WAF的区别&#xff0c;分…

使用 Flask 和 Celery 构建异步任务处理应用

文章目录 什么是 Flask&#xff1f;什么是 Celery&#xff1f;如何在 Flask 中使用 Celery&#xff1f;步骤 1&#xff1a;安装 Flask 和 Celery步骤 2&#xff1a;创建 Flask 应用程序步骤 3&#xff1a;运行 Celery Worker步骤 4&#xff1a;启动 Flask 应用程序 结论 在构建…

高校网站群及融媒体中心建设方案

一、项目背景 随着信息技术的飞速发展&#xff0c;互联网已成为高校展示形象、传播信息、服务师生、沟通社会的重要渠道。然而&#xff0c;目前许多高校在网站建设和媒体传播方面存在以下问题&#xff1a; 网站分散、缺乏统一规划&#xff1a;各高校内部往往存在多个部门或学院…

零拷贝(Zero-Copy)

1.背景 现在有这样一个场景&#xff0c;我们需要在本地选择一个文件后&#xff0c;然后上传到网络上。 我们再看看文件的内容数据的具体搬运过程&#xff1a; 你会发现&#xff0c;在整个文件搬运的过程中&#xff0c;发生了多次的数据拷贝和上下文转换。 4次数据拷贝&#…

深入探索:移动云服务器的强大之处

文章目录 一 什么是移动云二 移动云服务器的使用三 移动云服务器的优点四 在移动云上部署node.js项目五 移动云服务器的应用场景六 移动云服务器的使用体验总结 一 什么是移动云 移动云是指用户可以通过移动设备访问云端的数据和应用&#xff0c;无需在本地设备上进行存储和处…

单片机LCD1602显示电子时钟设计

基于52单片机电子时钟的设计 摘要 本次设计的多功能时钟系统采用STC89C52单片机为核心器件&#xff0c;利用其定时器/计数器定时和记数的原理&#xff0c;结合液晶显示电路、时钟芯片DS1302电路、电源电路以及按键电路来设计计时器。将软硬件有机地结合起来&#xff0c;使得系…

汇编实现的操作系统

掌握X86汇编语言和GDB程序调试工具对于程序员来说是非常重要的_gdb 查看x86汇编-CSDN博客 掌握编译器和虚拟机的开发有哪些方面的好处-CSDN博客 Ville Mikael Turjanmaan开发的一个操作系统MenuetOS可运行在IA-32, x86-64平台上&#xff0c;完全用 64 位汇编语言编写。功能包…

从参数变化解读 MySQL 8.2.0 发版说明

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ 日前&#xff0c;MySQL 8.2.0 创新版本已正式上线&#xff0c;并提供安装包下载&#xff0c;但 docker 镜像尚未更新。 在 MySQL 8.1.0 刚发版时也做过分析&#xff0c;欢迎阅读&#xff1a; 重…

区块链技术和应用

文章目录 前言 一、区块链是什么&#xff1f; 二、区块链核心数据结构 2.1 交易 2.2 区块 三、交易 3.1 交易的生命周期 3.2 节点类型 3.3 分布式系统 3.4 节点数据库 3.5 智能合约 3.6 多个记账节点-去中心化 3.7 双花问题 3.8 共识算法 3.8.1 POW工作量证明 总结 前言 学习长…

Drone+Gitee自动执行构建、测试和发布工作流

拉取Drone:(至于版本&#xff0c;你可以下载最新的) sudo docker pull drone/drone:2 拉取runner&#xff1a; sudo docker pull drone/drone-runner-docker 在Gitee中添加第三方应用&#xff1a; 进入个人主页&#xff0c;点击设置&#xff1a; 往下翻&#xff0c;找到数…

前缀和,差分算法理解

前缀和是什么&#xff1a; 前缀和指一个数组的某下标之前的所有数组元素的和&#xff08;包含其自身&#xff09;。前缀和分为一维前缀和&#xff0c;以及二维前缀和。前缀和是一种重要的预处理&#xff0c;能够降低算法的时间复杂度 说个人话就是比如有一个数组&#xff1a; …

H3CNE-6-ICMP数据包分析

ICMP&#xff1a;Internet Control Message Protocol ICMP用来传递差错、控制、查询等信息 Wireshark抓包 Wireshark下载国内镜像 ICMP数据包格式 Type&#xff1a;表示ICMP消息类型 Code&#xff1a;表示同一消息类型中的不同信息 ICMP消息类型和编码类型 ICMP应用 &…