JavaScript判断浏览器对CSS3属性是否支持的多种方法


Posted in Javascript onNovember 13, 2016

前言

CSS3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候。比如transitionanimation-play-state,就只有部分浏览器支持。

下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性:

第一种:javascript比较常用下面这个代码:

var support_css3 = (function() {
 var div = document.createElement('div'),
  vendors = 'Ms O Moz Webkit'.split(' '),
  len = vendors.length;
 
 return function(prop) {
  if ( 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;
 };
})();

使用:检查是否支持transform

if(support_css3('transform')){

}else{

}

第二:JavaScript方法2:不支持ie6

function isPropertySupported(property)
{
 return property in document.body.style;
}

使用:

记得上面的属性,要用backgroundColor替换background-color

if(isPropertySupported('opacity')){

}else{

}

第三:CSS.supports

CSS.suports是CSS3 @support 规则中比较特别的一个,每一个支持@support规则的都支持下面这个函数(不推荐这种方法,毕竟@support也有兼容性,某些浏览器可能支持CSS3属性中的一个,但却不支持@support

//pass the same string as you pass to the @supports rule
if(CSS.supports("(background-color: red) and (color:white"))
{
 document.body.style.color = "white";
 document.body.style.backgroundColor = "red";
}

最后再分享一个判断浏览器是否支持某些HTML5属性的函数,比如input属性是否支持palaceholder.

function elementSupportsAttribute(element, attribute) {
 var test = document.createElement(element);
 if (attribute in test) {
 return true;
 } else {
 return false;
 }
};

用法:

if (elementSupportsAttribute("textarea", "placeholder") {

} else {
 // fallback
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
通过js来制作复选框的全选和不选效果
May 22 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
基于iview的router常用控制方式
May 30 Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 Javascript
JS实现的几个常用算法
Nov 12 #Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 #Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 #Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 #Javascript
使用JS代码实现点击按钮下载文件
Nov 12 #Javascript
JavaScript中浅讲ajax图文详解
Nov 11 #Javascript
javascript 实现动态侧边栏实例详解
Nov 11 #Javascript
You might like
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
解析link_mysql的php版
2013/06/30 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
jQuery 位置插件
2008/12/25 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
python中hashlib模块用法示例
2017/10/30 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
python实现3D地图可视化
2020/03/25 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
美国最大点评网站:Yelp
2018/02/14 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
行政助理求职自荐信
2013/10/26 职场文书
火车来了教学反思
2014/02/11 职场文书
征婚广告词
2014/03/17 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
个人事迹材料范文
2014/12/29 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书