前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS 5 Mobile Safari中label的bug

iOS 5 Mobile Safari中label的bug

作者头像
mmzhou
发布2018-08-06 18:07:55
6460
发布2018-08-06 18:07:55
举报
文章被收录于专栏:前端小作坊前端小作坊

iOS 5 Mobile Safari中label的bug

前几天在codepen上看到了不错CSS用法,今天打算在写新博客的时候使用类似的思路:

用input[type=checkbox]来控制同级元素的样式,实现只用CSS来修改样式状态的特性。

做的时候发现iOS 5下此demo无法用,于是发现了label元素的一个bug。我们在写表单的时候,为了实现点击label自动选中input,一般会这么做:

代码语言:javascript
复制
<label for="email">Email</label>
<input type="text" id="email"/>

这样当用户点击Email文字时,输入框会自动选中,以提高用户体验。但是如果input是checkbox呢?

代码语言:javascript
复制
<label for="sure">Sure</label>
<input type="checkbox" id="sure"/>

此时在iOS 5中,点击文字Sure,checkbox不会自动勾选!搜索之后得到解决方案:为label加个onclick属性,它就可以正常触发input[type=checkbox]了。

代码语言:javascript
复制
<label for="sure" onlcick>Sure</label>
<input type="checkbox" id="sure"/>

本来以为OK了,于是写了个测试用例。却发现还需要另外一个条件才能触发label的行为。而且这不仅仅针对checkbox,对所有的input都需要这两个条件

  1. label有onclick属性(即绑定了click事件),或者是它的父元素绑定了click事件。
  2. label的css cursor值必须是pointer

另外有个注意点:不同的父元素绑定click又会有影响。如果是document.body绑定,那么手指按下的时候label会有样式上的变化(onclick也有此效果)。如果是一般的父div则没有此效果。

猜测此bug同样影响了iOS 5上的其他浏览器(注:这里只测试了Chrome)。iOS6上已经修复了此bug。因为手头没有设备,故没有测试iOS5之前版本是否有此bug。

最后fork修改原来codepen上的demo,Check it out~ http://codepen.io/zmmbreeze/pen/AaLFJ

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS 5 Mobile Safari中label的bug
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档