记H5单页遇到的几个ios兼容问题

最近写一个H5活动页,安卓里的表现很不错,写下来很少出现兼容性问题,ios就不一样了,好多问题都出现在ios上(手动狗头)🐶

 

1. ios在微信里弹出软键盘之后,页面底部留白

// 聚焦事件让窗口强制回归
$(document).on("blur","input",function(){ // 这里注意下,如果表单是后来append添加的,不是一开始就有的就用on来监听(至于为啥要用on而不直接用blur事件-原理同click jquery点击事件失效原因和解决办法
    setTimeout(() => {
      window.scrollTo(0,0);
    }, 100);
});

 

2. 利用伪类重写按钮样式的时候ios里的兼容问题

问题:用伪类重写按钮样式的时候,嵌套了一层,写里面.radio的伪类,就会导致在ios里选择的时候样式没激活或者是只能激活列表中的第一个元素

下面是出现问题的结构和样式

// 页面结构
<ul class="check-list">
  <li>
    <input id="aaa" name="xx" type="radio" value="bbb">
    <label for="aaa">
      <span class="radio"></span>
      <span class="value">aaa</span>
    </label>
   </li>
    <li>
      <input id="bbb" name="xx" type="radio" value="bbb">
      <label for="bbb">
        <span class="radio"></span>
        <span class="value">bbb</span>
      </label>
     </li>
</ul>

样式

.radio {
          width: 16px;
          height: 16px;
          line-height: 11px;
          text-align: center;
          top: 7px;
          border-radius: 50%;
          display: none;
        }
input:checked + label .radio {
          border-color: #fff;
          &::after {
            content: '';
            display: inline-block;
            width: 6px;
            height: 6px;
            border-radius: 50%;
            background: #ff6e00;
          }
}

这种可能会出现问题,嵌套伪类在ios上可能出现兼容问题,所以在写按钮的时候不妨直接重写样式,或是不要多层嵌套伪类

 

3.css3动画的ios兼容问题

在写从底部飞入这种效果的时候 需要注意,第一次的时候,是用定位的变化来写@keyframe的,后面在ios上出现动画失效的现象

解决:改成用translate位移变化来实现

 

posted @ 2019-04-10 18:16  c-137Summer  阅读(1696)  评论(0编辑  收藏  举报