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框,可以输入. 基本思路就是,在表格中 ...
随机推荐
- 内部网关协议RIP
RIP协议的特点:仅和相邻路由器交换信息:交换自己现在的路由表:按固定的时间周期. 对每一个相邻路由器发送的RIP报文,执行以下步骤: 1.对地址为x的相邻路由器发来的报文,修改此报文中的所有项目,把 ...
- 完美卸载Docker
1,删除docker所在目录 rm -rf /etc/docker rm -rf /run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/dock ...
- 基于微信小程序的校园维修管理系统-开题报告参考
\n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 一.课题研究的目的和意义** 本研究开发基于微信小程序的物品维修系统,它不仅能实现专业的维 ...
- oeasy教您玩转vim - 20 - 显示标尺
显示标尺 回忆上节课内容 定义标记 a ma 删除标记 a :delm a 跳转到标记 a 'a `a 跳到 a 对应的行和列 'a 跳到 a 对应的行 查看所有标记 :marks 各种标记类型 '' ...
- TypeScript快速上手
TypeScript快速上手 参考TypeScript零基础入门 轻松搞定ts进行整理 TS文档:TypeScript: The starting point for learning TypeScr ...
- ABC349
A link 其实,有人赢比赛,就有人输比赛,一加一减,不管进行多少场比赛,最后所有人的分数和一定是\(0\). 那么知道\(n-1\)个人的分数和,就可以知道第\(n\)个人的了. 点击查看代码 # ...
- nodejs的服务器,用ffmpeg推流
http://m.zhizuobiao.com/node/node-19061200018/ ffmpeg -list_devices true -f dshow -i dummyffmpeg -f ...
- 关于SpringBoot中事务回滚没有生效
在SpringBoot中,事务回滚可以用注解@Transactional标识. Spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作. 1.非检查型异常 ...
- 青少年CTF擂台挑战赛 2024 #Round 1
青少年CTF擂台挑战赛 2024 #Round 1 crypto 1.解个方程 题目: 欢迎来到青少年CTF,领取你的题目,进行解答吧!这是一道数学题!! p = 474356125652182661 ...
- RHCA rh442 010 文件系统结构 BDP调优 网卡驱动带宽
文件系统结构 用户通过虚拟文件系统,访问底层的文件系统 对于一块磁盘而言,MBR + 分区表记录硬盘的信息 对于一个分区而言,这个分区的第一个块,superblock,超级块,记录分区元数据信息 对于 ...