JavaScript快速检测浏览器对CSS3特性的支持情况
在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持“transform”,然后我的布局会有两种完全不同的版式。
当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是modernizr,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表。
优点:
js是可配置的,不需要的特性检测可以在配置脚本中去掉基于特性检测js库简单好用
除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本判断繁琐,还有不稳定。
优点:性能可能是最优的
最后就是本文介绍的这个方法,我写了一个函数快速检测是否浏览器支持某CSS特性,适合的场景是快速需要知道浏览器是否支持某一个CSS特性(而不是好几个)。
优点:
var supports = (function() {
var div = document.createElement('div'),
vendors = 'Khtml O Moz Webkit'.split(' '),
len = vendors.length;
return function(prop) {
if ( prop in div.style ) return true;
if ('-ms-' + prop in div.style) return true;
prop = prop.replace(/^[a-z]/, function(val) {
return val.toUpperCase();
});
while(len--) {
if ( vendors[len] + prop in div.style ) {
return true;
}
}
return false;
};
})();
if ( supports('textShadow') ) {
document.documentElement.className += ' textShadow';
}
这就是最终代码,原理是:
1.创建一个div,然后可以获得div.style,这是它所支持的属性的数组列表。
2.检查text是否包含在数组中,如果是,直接返回true。
3.检查各种前缀,比如Webkit加上text,即webkitTransition,如果包含在style中,返回true。
4.值得注意的是在CSS中属性名为:-webkit-transition,但是在DOM的style中 ,却是对应webkitTransition。我也不知道为什么会这样。
相关推荐
-
CSS3+Js实现响应式导航条
今天制作了一个响应式导航条,能够自动随着不同的屏幕分辨率或浏览器窗口大小的不同而改变导航条的样式,这里主要用到的就是CSS3的Media Query.具体可以查看浅谈响应式布局这篇文章,这里就不花费大量的篇幅介绍了,主要看一下这个导航条该怎么做. 另外需要提到的是,ie6-ie8是不支持CSS3的Media Query的,因此对于ie6-ie8我们需要特殊处理,就让他们保持默认样式,这对于布局及样式上都要考虑到这一点. 首先看一下布局这一块,html代码如下: 复制代码 代码如下: <div c
-
原生javascript+css3编写的3D魔方动画旋扭特效
一直从事于后端编程工作,工作中也经常接触和使用一些前端技术,但大多数还是用于操作和控制数据与客户端交互工作.随着互联网技术的发展以及硬件性能的不断提升,人们对于交互式体验已变得越来越重视,进而前端技术已经越来越突显出它的重要性,特别是一些炫酷的特效,精美的UI设计,都使人眼前一亮,顿时觉得网站平台都高大上不少,很博人们眼球,给人们以很好的视觉冲击,特别是现在的css3,HTML5技术的更新,使得以更小的代价就可以轻松实现这些效果,故此,顿时膜拜起前端技术,悠然起了兴趣,跃跃欲试,随机利用css3
-
wap手机图片滑动切换特效无css3元素js脚本编写
手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行:还有就是用到css3里的 transform:translate(x,y);移动元素,不过发现在不支持css3的设备上马上完蛋了,所 有下定决心自己做一个,谁知出现了很多的问题,其中最重要的是给图片加链接,网页中的上下滚动条不能在拖动图片的时候滚动,并且不能兼容pc机器上的拖动:在这里就简单介绍一下遇到的问题和解决的方法: 问题一:给图片加上链接后,在拖动的时候总是跳到其他页面: 问题根源主要是不能判断是点击还是拖动,
-
javascript判断css3动画结束 css3动画结束的回调函数
css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画是否结束:即使是采用CSS技术生成动画效果,JavaScript仍然能捕获动画或变换的结束事件: transitionend事件和animationend事件标准的浏览器事件,但在WebKit浏览器里你仍然需要使用webkit前缀,所以,我们不得不根据各种浏览器分别检测事件 复制代码 代码如下: var transitions = { 'transition':'transitionend',
-
javascript与css3动画结合使用小结
当Html5,css3已渐渐成为主流的时候,我还非常习惯的用js去做一些简单的动画.因为在桌面浏览器上, 并非所有的都支持css3.用户也倒是很奇怪,用户习惯并不是每个用户都可以被培养.总有不少人会觉得win7.win8没xp好用.但手机方面就大不一样了,手机浏览器对html5和css3的支持还是很不错的.但手机硬件处理能力却又十分有限.在四核.八核手机横行的今天,依然有像我这样使用双核或单核手机的.js虽好,单奈何接触不多,调不好那种感觉.一个简单的页面滑动,在i7的pc上运行十分流畅,可是,
-
JS判断浏览器是否支持某一个CSS3属性的方法
1.引子 css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的animation-play-state,就只有部分浏览器支持. 2.检测方法 下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性: /** * 判断浏览器是否支持某一个CSS3属性 * @param {String} 属性名称 * @return {Boolean} true/false * @
-
wap图片滚动特效无css3元素纯js脚本编写
手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行:还有就是用到css3里的 transform:translate(x,y);移动元素,不过发现在不支持css3的设备上马上完蛋了,所以下定决心自己做一个,谁知出现了很多的问题,其中最重要的是给图片加链接,网页中的上下滚动条不能在拖动图片的时候滚动,并且不能兼容pc机器上的拖动:在这里就简单介绍一下遇到的问题和解决的方法: 问题一:给图片加上链接后,在拖动的时候总是跳到其他页面 问题根源主要是不能判断是点击还是拖动,手机
-
js 获取和设置css3 属性值的实现方法
众多周知 CSS3 增加了很多属性,在读写的时候就没有原先那么方便了. 如: <div style="left:100px"></div> 只考虑行间样式的话,只需 div.style.left 就可获取,设置的时候也只需要 div.style.left='100px' 即可.很简单. 但是css3来了 如: <div style="-webkit-transform: translate(20px,-20px)"></di
-
JavaScript判断浏览器对CSS3属性是否支持的多种方法
前言 CSS3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的animation-play-state,就只有部分浏览器支持. 下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性: 第一种:javascript比较常用下面这个代码: var support_css3 = (function() { var div = document.createElement
-
JavaScript快速检测浏览器对CSS3特性的支持情况
在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持"transform",然后我的布局会有两种完全不同的版式. 当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是modernizr,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表. 优点: js是可配置的,不需要的特性检测可以在配置脚本中去掉基于特性检测js库简单好用 除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本判断繁琐,还有不稳定.
-
Javascript快速实现浏览器系统通知
JS 实现浏览器的 title 闪烁.滚动.声音提示.chrome.Firefox.Safari等系统通知. 下载 $ npm install title-notify --save-dev $ bower install inotify --save-dev 编译 # 下载依赖工具 $ npm install # 压缩inotify $ npm build init effect: flash | scroll | favicon var iNotify = new iNotify().ini
-
javascript 检测浏览器类型和版本的代码
检测浏览器及其版本的代码 复制代码 代码如下: getBrowser : function(){ var browser = { msie: false, firefox: false, opera: false, safari: false, chrome: false, netscape: false, appname: 'unknown', version: 0 }, userAgent = window.navigator.userAgent.toLowerCase(); if ( /(
-
JavaScript编写检测用户所使用的浏览器的代码示例
能力检测 在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数首付存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本. 怪癖检测 怪癖实际上是浏览器实现中存在的bug,例如早期的webkit中就存在一个怪癖,即它会再for-in循环中返回被隐藏的属性.怪癖检测通常涉及到运行一段代码,然后确定浏览器是否存在某个怪癖.由于怪癖检测无法精确地检测特定的浏览器和版本. 用
-
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
废话不多说了,直接给大家贴js代码了,代码附有注释,感兴趣的朋友一起学习吧. /** * Author: laixiangran. * Created by laixiangran on 2015/12/02. * 检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移动设备和游戏系统 * ******************************************************************** * 各版本浏览器在windows10.0下的用户代理字符串:
-
JavaScript检测浏览器cookie是否已经启动的方法
本文实例讲述了JavaScript检测浏览器cookie是否已经启动的方法.分享给大家供大家参考.具体分析如下: JavaScript检测浏览器cookie是否已经启动,代码稍显复杂,通过写入一个测试cookie判断cookie是否已经启动 var dt = new Date(); dt.setSeconds(dt.getSeconds() + 60); document.cookie = "cookietest=1; expires=" + dt.toGMTString(); var
-
javascript检测浏览器的缩放状态实现代码
这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放). 检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供javascript的方法来检测浏览器的缩放. 对于 IE6,就直接无视了,因为 IE6 只能对文本进行缩放. 先来说说浏览器提供的标准检测接口,window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,该属性就可以用于检测网页是否被缩放了.在普通的 PC 浏览器上,在默认无缩
-
JavaScript检测浏览器是否支持CSS变量代码实例
JavaScript可以同样式进行交互,你可以通过编写程序来动态改变文档上元素的样式. 有三种方法可以实现这样的效果: 控制样式表-可以添加.删除.修改样式表. 控制样式规则-可以添加.删除.修改样式规则. 控制DOM中的单个元素-可以不依赖样式表来修改元素样式. JavaScript 检测浏览器是否支持 CSS 变量: const isSupported = window.CSS && window.CSS.supports && window.CSS.supports(
-
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
检测浏览器的方式 1.对象特征检测法:判断浏览器能力的通用方法.如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法.常见的原生Ajax写法中就用这种方法来创建XMLHttpRequest: 复制代码 代码如下: IXHR: function(){ if(window.ActiveXObject){ XHR=new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ XHR=new XMLHttp
随机推荐
- Python如何实现MySQL实例初始化详解
- Java用数组实现循环队列的示例
- JavaScript Event学习补遗 addEventSimple
- 针对aspx木马可以读取iis站点信息,跨网站目录的临时解决方法
- Mybatis 插入和删除批处理操作
- Java 正则表达式功能及应用
- IOS HTTP请求的常见状态码总结
- JS实现列表的响应式排版(推荐)
- 原生js的弹出层且其内的窗口居中
- 自定义一个theme在不同的sdk环境下继承不同的值
- 解析php类的注册与自动加载
- Hadoop1.2中配置伪分布式的实例
- ie和firefox不兼容的解决方法集合
- jQuery实现简单的手风琴效果
- JavaScript获取对象在页面中位置坐标的方法
- xmapp环境搭建注意事项说明
- Android 获取正在运行的任务和服务的小例子
- PHP 实现人民币小写转换成大写的方法及大小写转换函数
- JS中判断某个字符串是否包含另一个字符串的五种方法
- Mpvue中使用Vant Weapp组件库的方法步骤