【原】webapp开发中兼容Android4.0以下版本的css hack

话说现在的手机型号越来越多,主要还是android和ios这2个巨头称霸了江湖,而他们自带的浏览器内核是webkit,那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了,看起来很简单,其实背后还有一个大坑等着你。

虽说是webkit内核,但页面的展现效果还会受到自身系统的影响,升级后的系统打了补丁,新增了新的属性,支持更多丰富炫丽的效果,那么旧的系统(未升级的)就不支持一些新的属性,开发哥哥就是没有做好低端版本兼容的话,就会产生所谓的bug的,再加上android和ios系统各个版本也会带私有属性或者少带某个属性,于是坑爹的东西就这样产生,各种奇葩的bug,仿佛又回到IE时代,还是上次在文章(使用iScroll.js解决ios4下不支持position:fixed的问题)中的那句话:回到头来我们还是乖乖去做好兼容,要么就找到完美的解决方案,谁让可爱的用户和亲爱的老板是上帝呢,于是,我们沦落为苦逼的攻城狮~

几个月前写过一篇文章:[webkit移动开发笔记]之如何去除android上a标签产生的边框,在android2+的版本中,按钮边框会产生bug,需要清除掉,解决方案如下:

a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0);}/* 1.去除android a/button/input标签被点击时产生的边框 2.去除ios a标签被点击时产生的半透明灰色背景 */

大家在注释中可以看到,ios被点击时产生的半透明灰色背景会被这个属性也清除掉,没有了效果,用户体验一般,这个时候我们要保留android4+的边框和ios系统的半透明灰色背景显示正常,那么我们标题中的问题来啦,如何让页面只兼容android4.0以下版本的系统,无需JS也可以做到,有木有!!!

在CSS3的兼容中,相信大家对使用media的兼容并不陌生,我之前也提到过很多次,那么今天使用的hack也是跟它离不开的,代码如下:

@media all and (-webkit-transform-3d){/* Android4.0下不识别该-webkit-transform-3d,使用它可做Android4.0下版本兼容 */
.css{...}
}

这里利用-webkit-transform-3d属性,因为Android4.0下不识别该选择器,浏览器解析代码时,会直接跳过此步骤,那么我们简单写下代码,就是做好对Android4.0以下版本的兼容啦!

测试例子:http://jsbin.com/aziyor/1

测试代码:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>webapp开发中兼容Android4.0下版本的css hack</title>
<style type="text/css">
body{color:red}
@media all and (-webkit-transform-3d){
.green{color:green}
}
</style>
</head>
<body>
  <h1 class="green">android4.0+和ios浏览器中,我是绿色的;android4.0以下浏览器中,你会看到我是红色的</h1>
</body>
</html>

android4.0+和ios浏览器中效果图:

android4.0以下浏览器中效果图:

ok,本篇文章结束,感谢公司某同事提供的兼容办法,写出来共享,希望好的东西能够帮助到更多的朋友,解决大家的困扰~

作者:白树

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

时间: 2024-10-30 01:15:06

【原】webapp开发中兼容Android4.0以下版本的css hack的相关文章

android-求助:Android 开发中eclipse4.2.0和ndk-r10配置问题

问题描述 求助:Android 开发中eclipse4.2.0和ndk-r10配置问题 450248298_989119.png) 解决方案 Eclipse中配置NDK R10环境 解决方案二: ni zixianh 解决方案三: 图片挂掉了..重新传一个吧

android开发-android4.0以上版本联网问题

问题描述 android4.0以上版本联网问题 之前没考虑到4.0联网问题,后来发现了,到网上查了帖子,加了StrictMode,模拟器上可以了,高兴死了,但是一到真机就发现又不行了,而且也没报错,大神,救命 解决方案 你要在非ui线程中发送网络请求 也就是在new Thread里面联网操作 解决方案二: 其实还有另一种方法的啊!另外要检查一下网络的问题.

兼容IE6/IE7/IE8/FireFox的CSS hack

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns=""> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>区别IE6.IE

怎么在Win7等系统中跑Android4.0

玩转Android应用很方便,几乎也碰不到啥兼容性问题.现在Android 4.0 ICS(Android 系统4.0 命名为 Ice Cream Sandwich,简称ICS)来了,想直接体验怎么搞? 刷机?买新的安卓设备? 不用不用,找个很土但很实用的办法--下载个预先配置好的Android 4.01 ICS 虚拟机镜像(.7z压缩格式)就是了.你想怎么玩,就怎么玩,只需要下载一个镜像外加免费的虚拟机软件--Oracle VirtualBox. 安装完虚拟机软件后,解压下载下来的Androi

2010全面兼容IE6/IE7/IE8/FF的CSS HACK写法

浏览器市场的混乱,给设计师造成很大的麻烦,设计的页面兼容完这个浏览器还得兼容那个浏览器,本来ie6跟ff之间的兼容是很容易解决的.加上个ie7会麻烦点,ie8的出现就更头疼了,原来hack ie7的方法又不能用了,怎么办呢? 第一种方法: 还好,微软提供了这样一个代码: <meta http-equiv="x-ua-compatible" content="ie=7" /> 把这段代码放到里面,在ie8里面的页面解析起来就跟ie7一模一样的了,所以,基本

html5-HTML5音频文件不能在android4.0.4本地浏览器播放

问题描述 HTML5音频文件不能在android4.0.4本地浏览器播放 一个关于HTML5的工程 在android系统本地浏览器,多次播放相同的音频文件,在Android ICS 4.0.4版本中,只播放一次,再次启动音频就不会播放,在Android ICS 4.0.3版本和更新的4.1.1版本中就正常. 测试设备: Samsung Galaxy(Android 4.0.4):只播放一次 HTC(Android 4.0.4):只播放一次 索尼(Android 4.0.3):正常播放 HTC S

仿android4.0 Spinner下拉效果

 1.自定义控件需求     自从android4.0发布后,android的桌面效果进一步得到增强以及美化,增加了动画特效,可是这仅仅用于android4.0以上的版本, 对于很多停留在android2.3或者更低的版本时,很多只有感叹.     为了获得更好的用户体验,很多软件产品在设计时,已经考虑到在android4.0以下版本加入android4.0以上版本的特效,那么 自定义控件来达到效果.     2.效果展示    3.技术点    1.自定义控件spinner包含Button和P

PyOdps 0.4版本发布,从一个故事说起

有这么个故事(如有雷同,纯属巧合).有一天,某运营同学给某开发同学一个excel文件,里面是个客户清单. "帮我查下这些用户的消耗呢". 开发同学扫了一眼,几百个用户.这个事肯定是可以办的,但是想到麻烦程度,开发同学心里肯定是有不少羊驼经过的啦. "有点麻烦啊",开发同学轻轻抱怨. "我懂的,把这个表和ODPS里的表join下就好了嘛."运营同学努努嘴. "--".于是,开发同学把excel数据导出成文本格式,然后dship上

android开发-android4.0中如何用代码设置vpn

问题描述 android4.0中如何用代码设置vpn 做毕业设计,目标系统是android4.2,要用软件自动连接vpn服务器,网上代码只能在2.2以下系统实现.求大神给一个android4.0方案.