【原】迎接微信winphone 5.0 版本的IE10样式兼容

微信 Android 5.1 和 iPhone 5.1 已正式发布了,据说本12月底,微信将推出 Winphone 5.0版本,全面支持微信支付,它绑定 IE10 浏览器,那么做微信公众号的 H5 页面,除了做好 webkit 兼容外,IE10 的兼容也是必不可少的。

曾经写过《常见CSS3属性对ios&android&winphone的支持》一文,当时写过对Windows Phone 7 和Windows Phone 8的对应的浏览器分别是IE9和IE10做好兼容,但由于产品的特性对 Winphone 支持不友好,项目组也没有对 IE9 和 IE10 进行特别的处理,现在微信支付的到了让我们重新开启了对它重视,即便现在 Winphone 8 只有少部分用户~

对Windows Phone 8 IE10 的测试,如果没有winphone 8 的手机,在电脑win8系统上也是可以测试的,打开IE10,按 F12 或菜单工具->F12 开发者工具,点击工具->更改用户代理字符串(UA String),然后点击 IE10 for Windows Phone 8,可模拟Windows Phone 8版IE10。

 

通过排查做过的微信公众号H5页面在IE10下的展现,发现了不少问题,总结下主要有3个:

1.只添加了-webkit 前缀的样式并未添加向前兼容的写法,在IE10下页面无CSS3样式特效

错误写法:

正确写法:

2.弹性布局(display:box 或者 display:flex),在IE10下页面错乱

错误展现:

正确展现:

3.不支持webkit私有样式,如-webkit-appearance、-webkit-box-reflect等,在IE10下页面无webkit样式特效

错误展现:

正确展现:

对上面提到的3个问题,这里给出一套方案,经过测试后兼容 Winphone IE10、Android2.1+、Ios3.2+ 系统

1.向前兼容的写法

做到向前兼容,代码中除了带有浏览器厂商前缀外的样式,还需要添加W3c标准的写法,这里整理了常见css3属性,其中 WP IE 10 是为IE10准备的,代码如下:

/* 圆角边框 */
.border-radius {
  -webkit-border-radius: 12px; /* android 2.1, ios 3.2 */
          border-radius: 12px; /* android 2.2+, ios 4.0+, WP IE 10 */
}
/* 投影 */
.box_shadow {
  -webkit-box-shadow: 0px 0px 4px 0px #FFFFFF; /* android 2.1-3.0, ios 4.0.2-4.3 */
          box-shadow: 0px 0px 4px 0px #FFFFFF; /* android 4.0+, ios 5+, WP IE 10 */
}
/* 背景尺寸 */
.background-size{
  -webkit-background-size: 100% 100%; /* android 2.1-2.3, ios 3.2 */
          background-size: 100% 100%; /* android 3.0+, ios 4.0+, WP IE 10 */
}
/* 边框盒 */
box-sizing{
  -webkit-box-sizing: border-box; /* android 2.1-3.0, ios 3.2-4.3 */
          box-sizing: border-box; /* android 4.0+, ios 5.0+, WP IE 10 */
}
/* 线性渐变 */
.linear-gradient{
  background-color: #444444;/* 由于部分android机器对该属性的渲染效果不友好,可能会出现无颜色渐变,使用时注意添加背景颜色(background-color) */
  background-image: -webkit-gradient(linear, left top, left bottom, from(#444444), to(#999999)); /* 老版本写法 Android 2.1-4.3 ios3.2-6.1 */
  background-image: -webkit-linear-gradient(top, #444444, #999999); /* 新版本写法 Android 4.0+ iOS 5+ */
  background-image: linear-gradient(to bottom, #444444, #999999); /* Android 4.4, ios 7.0, WP IE 10 */
}
/* 旋转 */
.rotate {
  -webkit-transform: rotate(7.5deg);  /* android 2.1+, ios 3.2+ */
          transform: rotate(7.5deg);  /* WP IE 10 */
}

2.兼容 webkit 和 IE10 的弹性布局

弹性布局出现以来,几行简单的代码让网页布局变得非常灵活,对此微软也不甘落后,2012年8月,Internet Explorer 10 引入了对 W3C CSS 弹性框(“Flexbox”)布局模块的支持,

打开 Internet Explorer 10 开发人员指南 ,找到css栏目中的 弹性框 ("Flexbox") 布局 ,对 IE10 弹性布局进行了详细的介绍:

 

可以看出 IE10 的样式写法与 display:flex 不一样,且是带有供应商前缀(-ms-),不过这已经不成问题,因为弹性布局在 IE10 中我们可以放心使用啦,那么,结合旧版弹性布局display:box 、新版弹性布局 display:flex 、IE10弹性布局 display: -ms-flexbox ,最终得到的弹性布局样式如下:

.flex{
    /* 设置弹性布局 */
    display:-webkit-box;/* android 2.1-3.0, ios 3.2-4.3 */
    display:-webkit-flex;/* Chrome 21+ */
    display:-ms-flexbox;/* WP IE 10 */
    display:flex;/* android 4.4 */
}
.flex-direction-column{
    /* 设置弹性布局的方向,子元素按照在源文档中声明的顺序从上到下显示 */
    -webkit-box-orient: vertical;/* android 2.1-3.0, ios 3.2-4.3 */
    -webkit-flex-direction: column;/* Chrome 21+ */
    -ms-flex-direction: column;/* WP IE 10 */
    flex-direction: column;/* android 4.4 */
}
.flex-1{
   /* 子元素自动占据剩余的空间 */
    -webkit-box-flex:1;/* android 2.1-3.0, ios 3.2-4.3 */
    -webkit-flex:1;/* Chrome 21+ */
    -ms-flex:1;/* WP IE 10 */
    flex:1;/* android 4.4 */
}
.flex-pack-center{
    /* 水平布局下的子元素 水平居中 */
    -webkit-box-pack: center;/* android 2.1-3.0, ios 3.2-4.3 */
    -webkit-justify-content: center;/* Chrome 21+ */
    -ms-flex-pack: center;/* WP IE 10 */
    justify-content: center;/* android 4.4 */
}
.flex-align-center{
    /* 水平布局下的子元素 垂直居中 */
    -webkit-box-align: center;/* android 2.1-3.0, ios 3.2-4.3 */
    -webkit-align-items: center;/* Chrome 21+ */
    -ms-flex-align: center;/* WP IE 10 */
    align-items: center;/* android 4.4 */
}
.flex-pack-justify{
    /* 水平布局下的子元素 2端对齐 */
    -webkit-box-pack: justify;/* android 2.1-3.0, ios 3.2-4.3 */
    -webkit-justify-content: space-between;/* Chrome 21+ */
    -ms-flex-pack: justify;/* WP IE 10 */
    justify-content: space-between;/* android 4.4 */
}

强烈建议移动前端开发的同学加强对这块的学习,因为简单实用,这里推荐几个弹性布局的学习网址:

flexyboxes

“老”的Flexbox和“新”的Flexbox

跨浏览器的Flexbox

3.使用 IE10 hack 的兼容方案

由于 webkit 浏览器有不少私有属性,如 -webkit-appearance、-webkit-box-reflect 等,IE10 目前还有类似的写法来支持,那么,我们可使用 IE10 hack 来做好兼容,保证页面结构和功能正常的前提,做好差异化体验~

/* 媒体查询方法一 -ms-high-contrast 是IE10的私有属性,结合媒体查询,可以使用它来做 IE10的兼容*/
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
   /* 这里写入IE10的样式 */
}
/* 媒体查询方法二 该方案兼容IE9和IE10*/
@media screen and (min-width:0\0) {
    /* 这里写入IE10的样式  */
}

 更多 IE10 hack 的兼容方案请见:http://www.cnblogs.com/PeunZhang/archive/2012/12/13/2815914.html

 

此文章作为迎接微信 winphone 5.0 版本做的准备,winphone 版的微信跟 ios、android 版的微信存在很多不同体验,而当它正式发布后,可能还有更多的问题需要关注,像分享到朋友圈、顶部和底部返回导航等,原生界面的布局都不同,那么对交互设计、视觉设计产出的设计稿也可能存在差异化的体验,这也是对前端的响应式设计提出更高要求,让我们拭目以待。

最后提前祝大家元旦快乐~

作者:白树

出处:http://peunzhang.cnblogs.com/

时间: 2024-10-29 17:00:55

【原】迎接微信winphone 5.0 版本的IE10样式兼容的相关文章

Android微信支付3.0版本

问题描述 Android微信支付3.0版本 根据开发文档以及网上给的demo总是调不通,apk也是打包签名了的!客户端自己实现第一次签名和第二次签名总是支付结果总是-1,我也是无能为力了!求大神指点 解决方案 android微信支付android 微信支付android微信支付 解决方案二: http://download.csdn.net/detail/baidu_17508977/8521101 解决方案三: 可以看下 Ping++ Android 支付接口:https://www.ping

具有颠覆效应的微信5.0版本(ForiOS版)正式发布

8月5日,此前被市场预期具有颠覆效应的微信5.0版本(ForiOS版)正式发布.与以前版本不同,微信5.0版本在功能上引入了微信支付.表情商店.游戏中心.二维码扫描条形码报价.扫描英文翻译.封面.街景等功能. 受此消息影响,近期大热的手游概念股昨日再度活跃,截至收盘,手游概念板块大涨4.68%. 个股方面,手游概念板块内15只昨日进行交易的成份股全部实现上涨,其中,博瑞传播(10.01%).天音控股(9.94%)强势涨停,此外,浙报传媒(7.10%).华谊兄弟(6.93%).鸿博股份(6.08%

微信5.0版本将推出与财付通合作的微信支付功能

7月17日中午,cypress看到一个挂着大幅"二维码"的易拉宝宣传画放在北京建外SOHO群楼间的广场上,易拉宝周围几个年轻人忙碌着给刚刚吃过午餐的人们赠送促销品--可乐,他们只有一个请求,就是请拿到赠品的每一个路人,用手机中的微信"扫一扫"那个大幅的"二维码",并确认关注.这是一家在微信平台开发预订各大景点门票运用的商家. Cypress跟它们的工作人员聊了一会,得到的基本信息如下:已经开通北京.上海等城市各大景区的门票预订功能,可以预订后直接

腾讯或近日发布微信5.0版本 强化摇一摇功能

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   据消息人士透露,微信5.0版本将于近日正式发布.新版本将在原有基础上强化"收藏"."扫一扫"."摇一摇"三方面功能.此外,微信移动支付功能也有望 正式上线.据透露,通过新版微信,用户可以将聊天信息和朋友圈消息收藏,以备有时间后仔细查看:同时,新版微信的扫描功能也将得到大幅提升,用户可通过微 信扫描功能直

“来往”上线5.0版本 欲抄微信“后院”?

摘要: 中国的网络双雄阿里巴巴与腾讯,这次又在腾讯的主场展开了用户争夺大战.沉寂数月之后,来往5.0版本的上线,主动打破了被阿里巴巴放弃的谣言,而且还在暗地里憋大招. 微信5. 中国的网络双雄--阿里巴巴与腾讯,这次又在腾讯的"主场"展开了用户争夺大战.沉寂数月之后,"来往"5.0版本的上线,主动打破了被阿里巴巴放弃的谣言,而且还在暗地里"憋大招". 微信5.0曾凭借"打飞机"小游戏而一夜爆红,不少人因为疯狂游戏患上了腱鞘炎:

微信 for Windows 10英文版升至1.2.0版本

面向Windows 10桌面的官方微信应用升至1.2.0版本,不过目前官方并未公布更新日志.从初步的使用体验来看通过QR代码扫描登陆速度有明显改善,此外在用户界面上也有所调整且载入时间得到进一步缩短.在今年9月发布的版本更新中可在群聊中@人,常用消息类型可以转发,没有发送的内容保留草稿和关闭微信不会立即退出登录. 本文转自d1net(转载)

微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ---------------------------------------------------------------------------- 4月24日,感谢@八二制造的提醒,修复了自定义菜单查询返回的错误,现已修正. ----------------------------------------------------------------------------

微信小视频微信卡包功能如约现身6.0版本

前面提到微信5.5版内测,今天微信直接跳过5.x版本升级为微信6.0版本,微信小视频和微信卡包功能如约到来,我们来上手体验一下吧.(微信公众平台新增卡券功能 配合微信6.0卡包功能) 微信6.0版微信小视频,可在聊天或朋友圈拍摄一段小视频分享给好友 微信聊天界面的⊕添加小视频 在朋友圈中分享微信小视频     微信卡包,把优惠券.会员卡.机票.电影票等发到微信卡包里,方便使用:此外,新版本中还可为微信钱包设置手势密码 查看微信6.0.2版本更新: 安卓微信6.0.2更新 自定义表情可同步字体大小

9月30日,微信正式更新6.0版本

摘要: 9月30日,微信正式更新6.0版本,主打更新有三个,分别为: 一是,新增的小视频功能,该功能与短视频产品类似,但没有 滤镜 和配乐效果,从实际效果看,更像是为微信增加了有声音 9月30日,微信正式更新6.0版本,主打更新有三个,分别为: 一是,新增的"小视频"功能,该功能与短视频产品类似,但没有 滤镜 和配乐效果,从实际效果看,更像是为微信增加了有声音的动态图片功能: 二是,卡包功能,此前搜狐IT曾独家报道过微信将增加卡包功能,该功能需要用户获取卡券后才能使用: 三是,微信游戏