• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > 使用CSS实现页面复选框的方法

使用CSS实现页面复选框的方法

作者:Meathill 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含CSS,复选框等相关知识,Meathill 希望在学习及工作中可以帮助到您

产品篇

在我们的后台中,需要设置广告精准投放的区域,也就是要在全国31个省、自治区、直辖市中选择。那么,出现下面这幅景象也就理所应当了:
2015721171247784.jpg (584×99)

这样做有几个问题:

    选项很多,没有规律,找起来很累
    如果是一个已经选择了部分选项的广告,修改时仍然需要用肉眼寻找,无法一眼看出来投放到哪些省份
    选完一个,再选下一个,还要从头找,甚至会被已经选过的影响

于是我想,首先应该把所有选项分为“已选中”和“未选中”两批,解决第2个问题,减轻第3个问题;其次复选框本身的价值不大,可以被替换为其它样式;唯一可能引入的问题,就是点选时,用户的预期是看到复选框里出现一个小对勾,表示选中,如果我把它移开放到“已选中”组里,用户可能会迷惑,需要一些时间学习。

于是我跟某产品经理朋友聊了聊这个想法,他表示确实可能造成用户迷惑,不过如果能加入动画效果,那么基本没问题。嗯,开始动手。
技术实现篇

近日flexbox规范定案,各浏览器相继支持display:flex;,同时传来一条好消息,新实现比老实现display:box;快很多。这次我打算用flexbox来解决问题,因为里面有一个很重要的属性:order(之前叫box-ordinal-group),它可以改变布局中元素的排列顺序,配合CSS3新增的选择器,应该可以满足需要。
第一步 分拆选中/未选中

(关于flexbox的知识,可以通过Google了解,虽然搜到的多是上一个版本,不过和最终版差别不大,只是叫法不同。本文不再过多讲解,我就当大家都会了)

<input type="checkbox">本身的样式不能修改,所以我们必须借助的帮助;实现选中/未选中区分,那自然就要用到伪类:checked;选择器一定是从外到内、从前到后的,没法选择父级元素,所以不能用<label>去包<input>,那么最终布局就只能是:

  1. <div>   
  2.     <input type="checkbox" name="q[]" id="q1" />   
  3.     <label for="q1">小宝3225</label>   
  4.     <input type="checkbox" name="q[]" id="q2" />   
  5.     <label for="q2">王老白白白</label>   
  6.     <input type="checkbox" name="q[]" id="q3" />   
  7.     <label for="q3">空夫31</label>   
  8.     <input type="checkbox" name="q[]" id="q4" />   
  9.     <label for="q4">谷大白话</label>   
  10.     <input type="checkbox" name="q[]" id="q5" />   
  11.     <label for="q5">Meathill</label>   
  12.     <input type="checkbox" name="q[]" id="q6" />   
  13.     <label for="q6">一毛不拔大师</label>   
  14. </div>  

很简单哈,不解释了。CSS3新增了“下一节点”选择器 +,用来选择某节点的下一个节点,结合:checked伪类就可以将选中的<input>和它临近的<label>通过改变order属性移到前面去:

  1. #container {   
  2.   display:flex;   
  3.   flex-direction:row;   
  4.   flex-wrap:wrap;   
  5. }   
  6. #container input,   
  7. #container label {   
  8.   order: 2; //所有选项、label顺序为2   
  9. }   
  10. input[type=checkbox]:checked,   
  11. input[type=checkbox]:checked + label {   
  12.   order: 0; // 越小越靠前   
  13. }  

不过这样只是把选中的内容提前,视觉上没有真正的分割。所以我决定再加入一根分割线,上面是选中的,下面是未选的。这个时候我们需要用到 ~ 这个选择器,选择某节点后面的节点:

  1. hr {   
  2.   display:none; // 默认情况下,没选任何选项,分割线隐藏   
  3.   order: 1; // 分割线顺序为1   
  4.   width:100%; // 保证独霸一行   
  5. }   
  6. input[type=checkbox]:checked ~ hr {   
  7.   display:block; // 有选项被选中后才会显示分割线   
  8. }  

http://jsfiddle.net/meathill/fPN3p/5/embedded/result/

这样基础功

您可能想查找下面的文章:

  • css小技巧
  • 各大网站CSS初始化代码
  • css权重问题
  • CSS实现鼠标上移图标旋转效果
  • 使用CSS3制作一个简单的进度条(demo)
  • 用纯CSS实现饼状Loading等待图效果
  • 利用CSS3伪元素实现逐渐发光的方格边框
  • CSS3实现内凹圆角的实例代码
  • 利用HTML5+CSS3实现3D转换效果实例详解
  • css3+伪元素实现鼠标移入时下划线向两边展开的效果

相关文章

  • 2017-08-06CSS去除列表默认边距的简单方法
  • 2017-08-06css中url的路径含义
  • 2017-08-06css3的transform中scale缩放详解
  • 2017-08-06div中内容上下居中小结
  • 2017-08-06div完美自适应动态上下左右居中
  • 2017-08-06利用纯CSS3实现tab选项卡切换示例代码
  • 2017-08-06web标准教程,帮你走进web标准设计的世界 第三讲(html终结篇)
  • 2017-08-06你应该知道的3个CSS技巧
  • 2017-08-06瀑布流布局的两种实现方式:传统多列浮动和绝对定位布局
  • 2017-08-06css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • CSS3实现可关闭的下拉手风琴菜单效果
    • ie6不兼容hover ie6 a hover属性失效解决办法
    • 使用z-index:-1 让一个层在所有层的下面当背景
    • CSS Less框架基础教程
    • div等浮层在IE6下被下拉框遮挡的解决方法
    • CSS3的Flexible Boxes详细使用教程
    • css3 盒模型以及box-sizing属性全面了解
    • CSS 设定文本尺寸的属性
    • 浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
    • CSS3实现文字波浪线效果示例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有