关于复选框input[type=checkbox]
关于复选框input[type=checkbox],其实在前面的文章中说过一次,当时主要关注点在设置复选框的状态,利用prop实现,今天继续关注一下复选框。
自己在项目中,遇到一个全选/全不选的需求,刚开始关注点没在这里,而是结构搭建完成之后,发现默认的input[type=checkbox]的范围有点小,就想着扩大其点击范围。
项目是使用bootstrap搭建,复选框是在表格的第一格内。

理一下当时的思路:
1、使用label标签,包裹住复选框,由于bootstrap对td和th都使用了padding,所以即使使用label标签,也无法扩大到整个格子内;
2、使用position:relative, z-index,将input的层级放到td的层级后面,事实证明并不能实现想象中的调整层级的效果;
3、直接使用th或者td标签作为点击范围,在td上直接绑定点击事件,利用之前介绍的prop属性,为input[type=checkbox]添加选中和取消的效果。但是这个又产生新的问题了,当点击到内部input标签上面的时候,由于冒泡的存在,会导致两次点击事件,如果阻止input点击事件的默认行为,会导致无法实现选中或者取消状态,如果阻止冒泡,又需要额外在复选框上再实现一次点击事件。
总感觉不是很好,又说不上来哪里问题。
今天上午在看《css揭秘》,其中“扩大可点击区域”中有一句话是“伪元素同样可以代表其宿主元素来响应鼠标交互”(148页),并实现了例子,突然想到其实我这个情况跟他是一样一样的。
于是,对td和th实现伪元素:before进行覆盖,结合2的想法,利用伪元素在定位在td的上层,遮住input。
<td class="js-checkbox"><input type="checkbox"></td>
html代码如上。
.js-checkbox{
position: relative;
}
.js-checkbox:before{
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.01);
}
最开始给这个背景色的透明度设为0的,但是偶尔会出现点透的现象,不知道是什么原因,后面就调整了透明度,从视觉上看并没有太大影响,甚至可以将透明度调到更小,这就保证了永远不能点到input元素上,并且整个td的范围都是可点击范围。
关于全选和全不选的js部分,会在后面整理成插件贴出来。
关于复选框input[type=checkbox]的更多相关文章
- 表单复选框input[type="checkbox"]
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- 复选框input:checkbox
复选框 CreateTime--2017年6月5日14:04:55Author:Marydon 五.复选框 (一)语法 <input type="checkbox" /& ...
- js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false
用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种 ...
- 复选框(checkbox)、单选框(radiobox)的使用
复选框(checkbox).单选框(radiobox)的使用 复选框: HTML: // 复选框 <input type="checkbox" name="chec ...
- 方便实用的jQuery checkbox复选框全选功能
// 主复选框 <input type="checkbox" id="ck" name="ckAll">// 子复选框项 < ...
- jQuery判断复选框checkbox的选中状态
通过jQuery设置复选框为选中状态 复选框 <input type="checkbox"/> 错误代码: $("input").attr(&quo ...
- radio(单选框)/checkbox(复选框) 美化
由于某种原因,可能需要对单选框(radio)或复选框(checkbox)进行美化,那么直接修改样式是行不通,要实现就需要添加js,以下js依赖于jquery radio.js: function ra ...
- DOM(十)使用DOM设置单选按钮、复选框、下拉菜单
1.设置单选按钮 单选按钮在表单中即<input type="radio" />它是一组供用户选择的对象,但每次只能选一个.每一个都有checked属性,当一项选择为t ...
- html复选框
1.添加复选框 <input type="checkbox" id="yc" name="yc" value="year&q ...
随机推荐
- vim编辑技巧
算上大学上课linux接触四年了,可惜除了工作接触的那些,其他地方还是很水的,都不精通,今日翻来看了看以前过目即忘的vim技巧,发现,如无几年操作经验,这些技巧很难领悟的.这里写下来,以备后查. 区块 ...
- 【python】装饰器
来源:廖雪峰 看了好多次装饰器,发现还是廖老师讲得好,能让我看懂..... 下面是一段装饰器代码 @log def now(): " 它的含义等价于 def now(): " no ...
- 伪随机数(线性同余法)C语言
/**Keil Lib*2015.6.12*Pass*by lort*/uint32 Srandx ; uint32 SrandK = 1103515245;//0x41C64E6D;uint32 S ...
- 51nod1089(最长回文子串之manacher算法)
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1089 题意:中文题诶~ 思路: 我前面做的那道回文子串的题 ...
- Android 某些配置记录
1, system image 大小配置: devices/intel/baytrail/ffrd8/BoardConfig.mk : BOARD_SYSTEMIMAGE_PARTITION_SIZ ...
- Maven 添加自定义 archetype
环境:jdk7 maven3.23 eclipse mars 关于maven是使用插件自带的还是单独下载的,应该都是可以的,但是要注意maven和jdk版本的问题,比如3.2.3版本的maven支持j ...
- Linux之CentOS 常用命令
软件安装:安装软件:yum install <名称>移除软件:yum remove <名称>安装软件包:rpm -ivh <包全名>安装ifconfig: yum ...
- Redis学习笔记(4) Redis事务、生存时间及排序
1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次 ...
- [转]netty对http协议解析原理
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...
- svn 修改文件的二进制或文本标记
在添加一个文件的时候,svn自动标记成了二进制文件.当时也没在意就提交了.结果修改了之后不能进行svn diff操作,说是二进制文件不能进行diff操作.在网上找了个方法,修改这个文件的标记属性,把这 ...