不知道了吧?复选框(checkbox)竟然还有不确定(indeterminate)的状态!

今天发现复选框除了选中(checked)、未选中(unchecked),还有不确定的状态,英文是 indeterminate,我也是第一次知道,这是一种无法说清该选项是被打开还是关闭的状态。😵‍💫

不确定状态

在大多数浏览器中,处于不确定状态的复选框在框中有一条横线(看起来有点像连字符或减号),而不是一个对勾,比如在 WordPress 后台,在 WordPress 文章列表页面,选中所有文章,然后选中编辑,就很有可能看到不确定的状态了,如下图,我批量选中文章编辑之后,「开源程序」这个分类这个选项就是不确定 indeterminate 的状态:

不确定状态最常见的使用场景是当一个复选框“拥有”一些子选项(也是复选框)的时候,如果所有的子选项都被选中,拥有的复选框也被选中,如果它们都没有被选中,拥有的复选框就没有被选中。如果任何一个或多个子选项的状态与其他选项不同,拥有的复选框就处于不确定的状态。

另外一个使用场景就是上图,在 WordPress 批量编辑文章分类的时候,「开源程序」这个分类不确定状态代表的是该分类是有部分文章使用它,而不是所有文章都使用。

如何设置

需要注意的是,无法在 HTML 中设置 checkbox 的状态为 indeterminate,因为 HTML 中没有indeterminate 这个属性,只能通过 JavaScript 脚本来设置它:

inputInstance.indeterminate = true;

或者使用 jQuery 设置:

$("#checkbox").prop("indeterminate", true);

此外还可以通过 :indeterminate 这个伪类来定义不确定状态的样式:

input[type="checkbox"]:indeterminate {
    background-color: #ff9800; /* 橙色背景 */
    border-color: #ff9800; /* 橙色边框 */
}

分类管理插件

我之前给「分类管理」WordPress 插件添加了批量移除文章分类功能:

现在 WordPress 通过复选框这个不确定状态,也可以实现批量编辑的时候批量移除了,并且它这样的操作方式更加自然:

  • 选中:就是全部文章都设置该分类。
  • 不选中:就是全部文章都不设置该分类(也就是移除)。
  • 不确定:如果保持不变,那么原来选择该分类的,还是选择该分类,反之亦然。如果进行操作,就会全部文章设置该分类或者全部不设置该分类。

总之就是你看到就是操作之后的效果,感觉更好用,所以新版的「分类管理」插件将移除这个「批量移除」的功能,好的体验才是更好的功能。😁


©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。