关于复选框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 ...
随机推荐
- JS面试题-算法台阶问题
有100格台阶,可以跨1步可以跨2步,那么一个有多少种走法: 今天电话面试.遇到一道算法问题,然后瞬间一脸懵逼: 然后机智的我,自作聪明的想到如果一个人每次都走1步,那么最多步,每次走2步最少步:然后 ...
- NIO初识
Java编程中的NIO,俗称new I/O,是在JDK1.4版本之后开始引入的,在JDK1.4之前,Java服务端大多使用同步阻塞式来处理网络请求,在低流量.低并发情况还能抗住,在如今互联网时代,信息 ...
- C# 读取大型Xml文件
这篇博客将介绍在C#中如何读取数据量很大的Xml文件.请看下面的Xml文件, <?xml version="1.0" encoding="utf-8"?& ...
- NPOI导出Excel - 自动适应中文宽度(帮助类下载)
前言 做了好几个Excel.Word导出,用了HTTP流导出伪Excel文件.用过Office组件(这东西在生产环境下相当麻烦,各种权限,**). 最后决定使用NPOI组件来导出,好处很多很多了,这里 ...
- Android开发各类常见错误解决方案
本文属于个人平时项目开发过程遇到的一些问题,记录下来并总结解决方案,希望能帮到大家解决问题,有些问题的解决方案是在StackoverFlow上找到的,建议大家遇到问题多去上面找,基本上都能找到解决方案 ...
- 进击的Python【第一章】:Python背景初探与Python基础(一)
Python背景初探 一.Python起源 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做 ...
- TTrayIcon用法
TTrayIcon用法 self.trycn1.Icon:=Application.Icon; Self.trycn1.Hint:=self.Caption; self.trycn1.Visible: ...
- border
1.border-width:不支持百分比值 支持下面属性值: thin:1px medium:3px thick:5px 2.border-style类型 solid:实线 dashed:虚线(方形 ...
- 求两条线段交点zz
"求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法说一说, 希望对大家有所帮助. 本 ...
- pointers on c (day 1,chapter3)
第3章 数据 c中,仅有4中基本数据类型——整型.浮点型.指针和聚合类型(如数组和结构等). 整型:字符.短整型和长整型,它们都分为有符号(signed)和无符号(unsigned). short i ...