CSS & JS Effect – Styling Input Radio
原生 Radio 的 Limitation
<input type="radio" style="width: 25px; height: 25px; cursor: pointer" />
效果

原生的 radio 其实长的不丑, 但它不能调颜色, radio 无法配合网站的 primary, secondary 颜色, 基本上就不能用了.
参考
Youtube – Style Radio Buttons with CSS
Youtube – How to Create a Custom Radio Button - HTML & CSS Tutorial
解决思路
它的做法和 custom input file 类似, 做一个假的 radio 放到原生 radio 后面, 然后让原生 radio opacity 0.
这样 user 看到是假的 radio, 但是点击的确实真的 radio.
效果

HTML 结构
<div class="radio-wrapper">
<input type="radio" name="group" id="radio1" />
<div class="fake-radio">
<div class="checked-marker"></div>
</div>
</div>
真 radio 在前, 假 radio 在后, 它们是重叠的. 所以需要一个 wrapper 包着它们做定位.
里面就放真假 radio.
假 radio 长这样

一个圈, checked 之后中间多了一个点, 所以 HTML 结果就是 .fake-radio > .checked-marker
真 Radio CSS Style
.radio-wrapper {
position: relative;
width: 50px;
height: 50px;
input {
position: absolute;
top: 0;
left: 0;
display: inline-block;
width: 100%;
height: 100%;
cursor: pointer;
// opacity: 0;
}
}
wrapper 负责控制 dimension. input 就定位 100% 就可以了 (注: 这里用不了 inset: 0 哦)
我暂时把 opacity 注释掉, 看看效果

把 opacity 开启就什么都看不见了.
假 Radio CSS Style
.fake-radio {
width: 100%;
height: 100%;
border: 2px solid hsl(0, 0%, 70%);
border-radius: 50%;
transition: border-color 0.4s;
.checked-marker {
background-color: crimson;
width: 100%;
height: 100%;
border-radius: 50%;
transform: scale(0);
transition: transform 0.4s;
}
}
真 radio 定位就在上层了, 所以假 radio 就不必定位了. 真前假后就对了.
dimension 也是 100% follow wrapper.
fake-radio 负责 border
checked marker 负责中间的点, 它的大小是通过 scale 控制的哦
:checked and :focus
最后就是当真 radio :checked 和 :focus 时, 假 radio 需要反应 style
input:focus + .fake-radio {
border-color: lightpink;
}
input:checked + .fake-radio {
border-color: crimson;
.checked-marker {
transform: scale(0.6);
}
}
通过 sibling selector 的方式去找到 fake-radio
这样就搞定了.
MDC Radio buttons
Material 的 radio 比较复杂一点
1. 它多了一个框的概念

整个 40px, 绿色的部分都是可以点击的, 那是 padding 来的. 而中间的 radio 只有 20px 而且

focus 的时候就更明显了. 浅色都是在 padding 内.
而原生的 radio 是没有 padding 概念的.

CSS & JS Effect – Styling Input Radio的更多相关文章
- js input radio点击事件
html代码: <input type="radio" name="myname" value="1" />1 <inpu ...
- HTML---引入css,js | 常用标签示例
一.前端基础包括哪些?如何理解 二.css,js引入_及head中其他标签 三.特殊符号 四.常见的标签 4.1,form表单 4.2,input系列(单选框.复选框.input传文件.重置) 4.3 ...
- HTML/CSS/JS编码规范
最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签 ...
- 整理前端css/js/jq常见问题及解决方法(1)
1. 兼容ie8圆角的解决方法:下载ie-css3.htc文件在css中加入behavior:url(ie-css3.htc);z-index:3; position:relative 即可 2. 去 ...
- HTML+CSS+JS设计注册页面
HTML实战--设计一个个人信息填写界面 应用的技术:HTML+CSS+JS CSS和JS是套用的模板,主要练习了表单的验证和正则表达式的使用 效果图: 代码: <!DOCTYPE html&g ...
- 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)
之前在写详情页的时候,如下图 因为自己嫌麻烦,就去看其他网站是怎么写的,想直接拿来用,后来看来看去觉得写得很麻烦,于是最后还是决定自己写,附上HTML+CSS+JS代码,一条龙一站式贴心服务2333 ...
- css+js+html基础知识总结
css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...
- html+css+js实现复选框全选与反选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 使用html+css+js实现简易计算器
使用html+css+js实现简易计算器, 效果图如下: html代码如下: <!DOCTYPE html> <html lang="en"> <he ...
- Css+JS模拟实现可编辑的表格
表格在未编辑状态和编辑状态,需要定义两个不同的样式. 比如未编辑状态是lable的样式,两边有两个括号[],表示该表格可以编辑:编辑中的表格则表示成一个input框,可以输入. 基本思路就是,在表格中 ...
随机推荐
- MYSQL DQL in 到底会不会走索引&in 范围查询引发的思考。
前情引子 in 会不会走索引?很多人肯定会回答.废话.如果命中了索引.那肯定会走. 其实我和大多数人一样.一开始也是这么想的.直至有一个血淋淋的案子让我有所改观.有所思考. 背景介绍 业务的工单表.我 ...
- tensorflow学习率指数衰减ExponentialDecay的参数介绍与使用方法
本文介绍在tensorflow库中,用于动态调整神经网络的学习率的一种方法--指数衰减ExponentialDecay()策略的参数含义及其具体用法. 在进行神经网络训练时,我们经常需要用到动 ...
- [oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv
尾声 回忆上次内容 回顾了 ibm 使用开放架构 用 pc兼容机 战胜了 dec 小型机 apple 个人电脑 触击牺牲打 也破掉了 自己 软硬一体全自主的 金身 借助了 各种 软硬件厂商的 力量 最 ...
- 题解:AT_abc359_e [ABC359E] Water Tank
背景 中考结束了,但是暑假只有一天,这就是我现在能在机房里面写题解的原因-- 分析 这道题就是个单调栈. 题目上问你第一滴水流到每个位置的时间.我们考虑,答案其实就是比当前木板高且距离当前木板最近的那 ...
- 阶乘-n!_C语言实现
n! // Code file created by C Code Develop #include "stdio.h" #include "stdlib.h" ...
- Vue 结合html2canvas和jsPDF实现html页面转pdf
结合html2canvas和jsPDF实现html页面转pdf By:授客 QQ:103355122 实践环境 win10 Vue 2.9.6 axios 0.18.0 html2ca ...
- vs 常用的调试技巧
本地调试,一般打断点, 然后下一步,或者步入,或者运行到上一步. 有专用的对战窗口. 条件断点,输入当前变量的名称,然后打印变量值变量名和对战的一些信息,当然也可以选择进入断点后是否进一步运行 线程调 ...
- CCF 命令行选项
题目原文 问题描述(题目链接登陆账号有问题,要从这个链接登陆,然后点击"模拟考试",进去找本题目) 试题编号: 201403-3 试题名称: 命令行选项 时间限制: 1.0s ...
- LeetCode122. 买卖股票的最佳时机 II
题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/ 题目叙述: 给你一个整数数组 pri ...
- 使用with 还是 join
用分解关联查询的方式查询具有以下优势:多次单表查询,让缓存的效率更高:许多应用程序可以方便地缓存单表查询对应的结果对象.对 MYSQL 的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询 ...