前端例程20220815:拟物风格复选按钮

2023-11-05

演示

在这里插入图片描述

原理

本文要实现的按钮大致示意如下:
在这里插入图片描述
观察者从正上方观看,写代码时主要处理光照以及近大远小等现象。

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <title>拟物风格复选按钮</title>

    <style>
        * {
            padding: 0;
            margin: 0;
            user-select: none;
        }

        html,
        body {
            height: 100vh;
        }
    </style>

    <style>
        body {
            display: flex;
            background-color: #181818;
            align-items: center;
            justify-content: center;
        }

        /* 按钮区域 */
        .chk {
            position: relative;
            height: 100px;
            width: 100px;
            border-radius: 50%;
            background: #000000;
            box-shadow: 0 0 0 2px rgba(0, 0, 0, 1);
        }

        /* 隐藏默认checkbox */
        .chk>input {
            appearance: none;
        }

        /* 按钮本身 */
        .chk>span {
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            background: #222222;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 1),
                inset 0 -2px 4px rgba(0, 0, 0, 1),
                inset 0 2px 4px rgba(255, 255, 255, 0.5);
            transition: 0.2s;
        }

        /* 按钮按下后因高度下降造成的缩放 */
        .chk>input:checked~span {
            box-shadow: 0 1px 4px rgba(0, 0, 0, 1),
                inset 0 -1px 2px rgba(0, 0, 0, 1),
                inset 0 1px 2px rgba(255, 255, 255, 0.5);
            transform: scale(0.95);
            transition: 0.2s;
        }

        /* 按钮中间图形 */
        .chk>svg {
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            stroke: #111111;
            stroke-width: 6px;
            stroke-linecap: round;
            transition: 0.2s;
            transition-delay: 0.1s;
        }

        /* 按钮按下后中间图形点亮 */
        .chk>input:checked~svg {
            stroke: #00ffff;
            filter: drop-shadow(0 0 12px #00ffff);
            transform: scale(0.95);
            transition: 0.2s;
            transition-delay: 0.1s;
        }
    </style>
</head>

<body>
    <!-- 使用label包裹,可以使内部所有元素和checkbox联动 -->
    <label class="chk">
        <input type="checkbox">
        <span></span>
        <svg id="btn-more" viewBox="0 0 100 100">
            <line x1="50" y1="25" x2="50" y2="50" />
            <circle cx="8" cy="70" r="20" fill="none" stroke-dasharray="90" transform="rotate(-39)" />
        </svg>
    </label>
</body>

</html>

更多例程

更多例程可以参考下面代码仓库:
https://github.com/NaisuXu/front-end-web-examples

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端例程20220815:拟物风格复选按钮 的相关文章

  • @font-face 和 font-variant 是个坏主意吗?

    如果我使用 font face字体和font variant small caps对于相同的选择器 字体将回退到 Safari 中的下一个系统默认字体 我该如何解决这个问题 我一开始在创建一个示例来复制您的问题时遇到了一些麻烦 这让我意识到
  • CSS: *html #id_name

    我有这个代码 html alertBox height 100px modalContainer gt alertBox position fixed 这是由CSS支持的吗 我在其他网站上找到了这段代码 我忘记了链接 html alertB
  • 如何向 CSS 形状添加偏移轮廓?

    我在创建带有斜角边缘的块时遇到了一些问题 此外我需要一个斜角的边框并稍微偏离主块 问题是这个块可以根据屏幕响应 不知道具体的方法 希望大家帮忙 这就是我现在所做的 box display flex padding 20px height 2
  • 删除圆形图像周围的边框

    我有一个圆形图像 png 文件 中间是透明的 我需要将图像内的背景设置为纯色 为此 我将背景设为纯色 然后将border radius 50 但这会产生一条丑陋的小白线 有没有办法摆脱这个问题 或者我必须在图像编辑器中手动为图像着色 div
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • 为不同的字体系列指定不同的字体大小

    有没有办法为不同的字体系列指定不同的字体大小 我想要使 用的字体 出于产品品牌目的 是一种有点罕见的字体 FlashDLig 并非所有 PC 和浏览器都支持 我的一台带有 IE 9 的 Windows 7 PC 不显示它 现在 对于我使用
  • 如何将 Vue.js 作用域样式应用于通过视图路由器加载的组件?

    如何将 Vue js 作用域样式应用于通过以下方式加载的组件
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if
  • 使用纯 CSS 创建向上和向下箭头图标或按钮

    我正在尝试使用纯 CSS 且无背景图像创建如下所示的 向上和向下 控制按钮 但是当我在 中添加箭头的CSS时li className after or li className before 主盒子的位置移动了 这是我遇到的问题的小提琴 g
  • 如何让CSS选择以字符串开头的ID(不是Javascript)?

    如果 HTML 中有这样的元素 id product42 id product43 如何匹配所有以 product 开头的 id 我已经看到了完全使用 javascript 执行此操作的答案 但是如何仅使用 CSS 执行此操作 id pro
  • 重新创建 CSS3 过渡三次贝塞尔曲线

    在 CSS3 过渡中 您可以将计时函数指定为 cubic bezier 0 25 0 3 0 8 1 0 在该字符串中 您仅指定曲线上点 P1 和 P2 的 XY 因为 P0 和 P3 始终分别为 0 0 0 0 和 1 0 1 0 根据苹
  • TDD/测试 CSS 和 HTML? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法测试 CSS 和 HTML 例如 有时某些通知会受到某些 CSS 更改的影响 我不想每次进行更改时都手动测试所有通知 Tha
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 在按钮之间添加空间?

    嗨 我这里有一个代码 除了一件事之外 一切都很完美 代码中每个按钮之间没有空格 我尝试过 margin 但不幸的是它是一个无序列表 所以我有点困惑 我将添加或替换什么以在两个按钮之间留出空间 帮助
  • 宽度:适合内容;在 Chrome 上工作,但在资源管理器上不工作

    我构建了一个应用程序 所有内容都在 Chrome 中完美显示 但如果我在 Windows 资源管理器中打开该应用程序 容器会比应有的小 我在用着width fit content 这是只适用于 Chrome 的东西吗 我怎样才能使其适用于所
  • GWT 主题/模板 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 GWT 开发一个应用程序 尽管 GWT 是基于 JAVA 的媒介 但外观和感觉只能通过 CS
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • 在 Bootstrap 中使用 CakePHP 时如何修改包装器 div 错误类

    我在用着Bootstrap 3 0RC1 with CakePHP 2 3 6 尝试利用那些漂亮的课程 例如has error and has warning for 验证状态 http getbootstrap com css forms
  • 水平对齐输入字段

    我正在尝试获取一个输入字段 并且它与同一水平线上的关联提交按钮相关 但事实证明这是一个挑战 这是我的代码

随机推荐

  • 锂电池为啥会爆炸

    前段时间 三星公司的旗舰智能手机GalaxyNote 7一直牢牢占据着新闻头条 这倒不是因为它的性能或是设计有多么出众 当然Note7的性能和设计的确很好 而是因为其在上市后的短时间内 即被发现内置电池存在重大安全隐患 手机无故发生爆炸的几
  • JSP基本语法

    JSP基本语法 1 1 JSP页面的基本结构 1 在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面 JSP页面有五种元素组成 普通的HTML标记和JavaScript标记 JSP标记 如指令标记 动作标记 变量
  • 3.1 简单变量

    为把信息存储在计算机中 程序必须记录3个基本属性 信息将存储在哪里 要存储什么值 存储何种类型的信息
  • java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

    IDEA也没提示错误 但是跑单元测试的时候报错 加入以下依赖正常 gt
  • Linux上快速安装软RAID详细步骤

    物理环境 虚拟机CentOS6 4 配置 8G内存 2 2核cpu 3块虚拟硬盘 sda sdb sdc sdb和sdc是完全一样的 在实际生产环境中 系统硬盘与数据库和应用是分开的 这样有利于系统的维护和对数据应用的使用 本环境中将sda
  • tcp/udp建立连接并通信的过程

    基于TCP的socket编程的服务器程序流程如下 1 创建套接字 SOCKETsockSrv socket AF INET SOCK STREAM 0 2 将套接字绑定到本地地址和端口上 SOCKADDR INaddrSrv addrSrv
  • 利用Android Studio自带的模拟器联网

    Android Studio自带的模拟器本身默认是不能上网的 因为默认DNS为10 0 2 3 使用这个DNS是不能上网的 网上很多帖子已经给出了解决办法 但是会遇到下面这种情况 通过继续查询得知 通过shell命令设置 获取 IP 网关
  • 蓝桥杯真题系列:C语言A组奇妙的数字

    小明发现了一个奇妙的数字 它的平方和立方正好把0 9的10个数字每个用且只用了一次 你能猜出这个数字是多少吗 请填写该数字 不要填写任何多余的内容 这个题题意比较简单 解决办法也是非常简单 暴力即可 主要数据结构哈希表的运用 哈希表用来记录
  • 烟波钓叟赋注解。

    先理解一下烟波钓叟赋 奇门遁甲 的排盘过程 前言 基本数制系统 中国文化 12个数以内叫掌握 一掌內还可以握更多的数 易有太极 是生两仪 两仪生四象 四象生八卦 太极为1 两仪为阴阳 三奇就是乙丙丁 四象 左青龙 右白虎 南朱雀 北玄武 五
  • Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

    可以按照以下步骤进行操作 将十进制数123456789012转换成十六进制字符串 QString hexString QString 1 arg 123456789012ull 0 16 其中 1表示替换第1个参数 0表示输出的最小位数为0
  • 微信小程序环境配置过程

    微信小程序简介 可以通过阅读微信官方文档对小程序有一个初步的了解 在官方文档内也可以学习到如何进行小程序的环境配置 官方文档链接如下 https developers weixin qq com miniprogram dev framew
  • jsonEdit编辑器

    json格式化编辑器 源码做了部分修改 支持导入及手动编辑
  • 再论PID,PID其实很简单。。。

    0 PID前言 PID已经有105年的历史了 它并不是什么很神圣的东西 大家一定都见过PID的实际应用类似于这种 需要将某一个物理量 保持稳定 的场合 比如维持平衡 稳定温度 转速等 PID都会派上大用场 那么问题来了 比如 我想控制一个
  • 【汽车电子】浅谈汽车四大总线:LIN、CAN、FlexRay、MOST

    目录 1 前言 2 汽车四大总线 2 1 LIN总线 2 1 1 LIN总线概述 2 1 2 LIN总线工作原理 2 2 CAN总线 2 2 1 CAN总线概述 2 2 2 CAN总线工作原理 2 2 3 CAN总线的优点 2 3 Flex
  • 【前端

    图 先看一个例子 html div class container div class item 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
  • js逆向--有道翻译

    目录 1 前言 2 起因 3 经过 4 结果 1 前言 分类 js逆向 语言 python 2 起因 记录一下js逆向入门案例 3 经过 分析案例 有道翻译是通过ajax的post请求获得的响应结果 打开开发者工具获取post请求时需要提交
  • Ubuntu16.04上升级NVIDIA显卡驱动及安装CUDA10.0操作步骤

    Ubuntu 16 04上已装有CUDA 8 0 现在想再安装CUDA 10 0 由于已安装的显卡驱动版本396 54不支持CUDA 10 0 因此安装CUDA 10 0之前需要先升级显卡驱动到410及以上版本 可在https docs n
  • python输出日志到文件_python将print输出的信息保留到日志文件中

    具体代码如下所示 import sys import os import sys import io import datetime def create detail day return 年 月 日 daytime datetime d
  • 通过白噪声的频谱处理产生任意光谱斜率(f^a)噪声(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章讲解 1 概述 文献来源 摘要 本文研究了具有任意谱
  • 前端例程20220815:拟物风格复选按钮

    演示 原理 本文要实现的按钮大致示意如下 观察者从正上方观看 写代码时主要处理光照以及近大远小等现象 代码