纯css实现checkbox的checked样式

更新日期: 2019-03-28阅读: 2.8k标签: 复选框

今天使用微信的WEUI的checkbox的时候,发现点击checkbox是有checked和unchecked的变化的,但是想要去获得checkbox的checked状态时,发现event listener里居然没有该checkbox的click之类的事件。这才发现,weui只是纯粹的css样式,没有对应组件的js代码。那么问题来了,没有js事件,weui是如何实现checkbox的checked样式变化的? 


先看看html代码

<div class="weui-cells weui-cells_checkbox">
    <label class="weui-cell weui-check__label" for="s11">
        <div class="weui-cell__hd">
            <input type="checkbox" class="weui-check" name="checkbox1" id="s11" checked="checked">
            <i class="weui-icon-checked"></i>
        </div>
        <div class="weui-cell__bd">
            <p>standard is dealt for u.</p>
        </div>
    </label>
</div>

据我观察发现,checkbox的checked状态变化是由<i class="weui-icon-checked"></i>这个标签变化实现的。


看看weui里checkbox的css是如何写的

.weui-cells_checkbox .weui-icon-checked:before{
  content:'\EA01';
  color:#c9c9c9;
  font-size:23px;
  display:block;
}
.weui-cells_checkbox .weui-check:checked + .weui-icon-checked:before{
  content:'\EA06';
  color:#09BB07;
}

以上就是weui中checkbox在checked状态时的css,观察这段css的选择器,其中的‘+‘是什么意思?‘:checked‘又是什么意思?content的值对应的是啥?  


css选择器中‘+‘代表什么?

事实上,‘+‘号代表的是相邻兄弟选择器,举个栗子。 第一个例子,可以在w3school上看到 h1 + p {margin-top:50px;} 在这个例子中,可以看到,只有紧跟h1的那一个p标签应用上了这段css,后面的p标签都没起作用。这也正应了这个选择器的名字,“相邻“兄弟选择器。 

我们再来看第二个例子 li + li {font-weight:bold;} 这个例子中,只有第二个和第三个的li标签应用上了css,而第一个并没有被应用上。这说明了,这段css针对的元素是‘+‘号后面的那个元素,而不是对‘+‘号前后都起了作用。这点说白了都懂,但当‘+‘号前后标签相等,比如例二时,比较容易被迷惑。 回到例二,由于只对相邻的两个li标签中的后者起作用,所以,当有三个并列的li标签时,只有后两个应用了该css 


css中:checked‘是什么意思?

根据w3school中的说明,‘:checked‘也是一种选择器,用来选择input被checked的元素


content对应的值是啥?

content对应的值事实上是字符编码,具体对应的样式,可以自己制定。 

.weui-cells_checkbox .weui-icon-checked:before{
  content:'\EA01';
  color:#c9c9c9;
  font-size:23px;
  display:block;
}
.weui-cells_checkbox .weui-check:checked + .weui-icon-checked:before{
  content:'\EA06';
  color:#09BB07;
}

现在再来看,那么意思就很明确了。当class为weui-check的input被checked时,将紧跟其后的weui-icon-checked改为选中状态,css样式作出相应的变化,即颜色变绿,内容变为对勾。当为非checked状态时,前一段css代码就起作用了,颜色变灰,内容为空圆圈。


总结

学习到了纯css,不经过js更改checkbox的样式的方法。以前用Semantic UI都是对checkbox增删checked class来实现样式变化,这次倒是打开新世界大门了。或许这种css控制样式更改才是本来的做法,我有些倒置了。 

最近一直也在反思,研究生期间做的这些活,为了满足开发速度,都是现查现用,都没有好好思考背后的原理,背后的技术,越来越变得像“培训机构出来的“了。能做业务,但是技术基础很差,问下原理就都不懂了。

惭愧惭愧,这也是自己的原因,没有在空闲时补充基础,唉,努力吧,学海无涯。 btw,jq获取checkbox是否被checked的方法: $('.checkbox').is(':checked')注意checked前面有冒号!


链接: https://fly63.com/article/detial/2588

css input checkbox复选框控件 样式美化的多种方案

checkbox复选框可能是网站中常用的HTML元素,但大多数人并不满意它的默认样式,这篇文章就讲讲如何实现input checkbox复选框控件 样式美化效果。::before和::after伪元素的用法

复选框回显 选用prop()不用attr()

设置一个复选框回显示,使用attr()添加checked属性。但是在回显的过程中会使复选框出现混乱的情况有一些并没有回显。如果给他添加一个checked的class就会导致复选框不可点击这种做法是不对的,需要用prop替代

css 实现 checkbox 大小调整

一般调整 checkbox 大小我们想到的是 width、height,可是设置后,发现是没有效的。如微信小程序里面,checkbox 默认就很大,想设置小一点怎么办?

单击label触发checkbox,checkbox触发click

在桌面程序中,checkbox 后面是带文字的,单击文字就会选中或取消选中选择框,点起来很方便,但 HTML 中 checkbox 是干的,单起来非得把鼠标移到那个小小的 checkbox 框框上

javascript如何判断复选框是否选中?

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。

纯CSS改写radio和checkbox,单选框、复选框样式优化

input 的单选框 radio 和复选框 checkbox 是样式是很难调的,设置背景和边框都不起效。我们可以使用下面的方法进行样式美化:纯CSS就能实现。

checkbox 样式美化

checkbox无法直接改变样式只能通过连接到label标签来改变checkbox的样式思路都一样的,先把之前的按钮透明度opacity设置为0,然后外层用div包裹,就实现了美化功能。下面会讲到几种与众不同的checkbox复选框样式。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!