用JavaScript检测用户的浏览器是否支持CSS3
当前位置:以往代写 > 网页教程 >用JavaScript检测用户的浏览器是否支持CSS3
2019-06-14

用JavaScript检测用户的浏览器是否支持CSS3

       大家都知道,除了旧版本的IE之外,其它主流浏览器基本都支持了css3,而且Windoes XP系统下也能升级。所以最简单粗暴的办法,就是判断浏览器厂商和版本。只要是IE浏览器,并且版本不超过8,那么就不支持CSS3。

用JavaScript检测用户的浏览器是否支持CSS3_CSS3教程_JavaScript_浏览器支持_课课家

  但此法精度不高,因为非IE浏览器也有一些较低的版本对CSS3的支持不太好,此其一。其二,另一方面国产浏览器对内核的改动也一定程度上影响了CSS3的最终运行效果。最后,移动端平台的浏览器在CSS3方面也未必做得尽善尽美。

  不支持CSS3最直接的表现是网页上的元素没有按照预期的效果正确显示出来。利用这一点,我们可以更准确地判断浏览器是否支持CSS3,这跟邓小平金句“不管白猫黑猫,抓到老鼠就是好猫”是一样的道理。

  既然要通过元素进行判断,那么我们必须先创建一个html元素。所以我们先来编写基础的HTML代码。

       html代码

基础代码

  为什么要使用ID而不用class呢?因为这样可以让javaScript访问起来更加方便。

  接下来我们通过ID选择器为check设置样式

  #check {

  display:none;

  width:0;

  height:0;

  }

  这样的话,id=check的元素将完全不可见。然而这并不能判断浏览器是否支持CSS3。因为CSS1都可以识别这个,所以接下来的才是重点。

  我们为id=check的span元素设置了rel属性。为此,我们利用属性选择器对这个元素再设置另一套样式(注意两套样式的先后顺序不能调换)。

  #check[rel^=”D”] {

  display:block;

  width:0;

  height:0;

  }

  rel^=”D”被称作“子串匹配属性选择器”,它类似于模糊搜索。虽然W3CSchool把该选择器放到早期CSS教程中进行讲述,但文中也明确指出它是在CSS2完成之后才发布的。所以CSS2尚未支持这类选择器,只有CSS3才支持。

  下面我们来看一下两套样式同时设置的效果。

  本例中,#check[rel^=”D”]和#check都匹配同一个元素。按照CSS默认的优先级规则,下面的#check[rel^=”D”]选择器中的样式会把#check里面同名的属性给替换掉,display属性将等于block。但若浏览器不支持CSS3,它将会无法识别#check[rel^=”D”]的写法,于是覆盖失败,display属性仍然等于#check中所设置的none。

  换而言之,判断check这个元素的display样式就可以知道浏览器是否支持CSS3了。

判断check这个元素的display

  Javascript获取元素样式中某一属性的方法很简单,一般使用“obj.style.属性名”就能得到结果。但是style指的是通过CSS或者JavaScript直接设置所得到的属性值,它并不能反映最终渲染出来的效果。比如我们设置一个div的height=100px,overflow=auto,然后在里面放入大量的文字把容器撑大,那么div的实际高度将会超过100像素,但通过div.style.height获取出来的值仍然等于我们设定的100像素,而非撑大后的高度。

  对于这样的问题,我们需要把style换成另一个属性,使其可以反映元素的最终效果。对于不同的浏览器,这个属性有不同的名字,IE里面是currentStyle,而非IE浏览器里面则叫getComputedStyle。两者不会在同一浏览器共存,所以我们分别判断这两个属性是否存在,存在的话我们就获取该属性下的display样式。

  if (window.getComputedStyle){

  stat = window.getComputedStyle(obj,null).getPropertyValue(“display”);

  }else if(obj.currentStyle){

  stat = obj.currentStyle.display;

  }

  接下来,是否支持CSS3就是看stat是否等于block了

  css3 = (stat==”block”);

  if(css3){

  alert(“您的浏览器支持CSS3”);

  }else{

  alert(“您的浏览器不支持CSS3”);

  }

  把这些代码都追加到JavaScript中,运行即可通过alert的信息得知你的浏览器是否支持CSS3了。

  很多时候,判断是否支持CSS3的目的也就为了在完成判断以后作出兼容性处理。可能有的朋友会觉得这样做很没必要,反正CSS3也就是一些效果,利用IE的filter样式一半都能兼容下来。但实际情况往往没有这么简单,至少除了IE以外,还有一些旧版本的非IE浏览器不支持CSS3。而且,filter也不是万能的,想想通过transition,keyframes那些强大的动画功能,旧版IE要兼容它们,哪会是一两行filter就能搞定的?

#p#分页标题#e#

  此时我们就需要编写大量的JavaScript,如果功能很复杂,那大概还要再专门为不支持CSS3的浏览器重新给页面制作一个版本,然后在浏览器不支持CSS3的时候跳转过去。所有的这些操作,都需要建立在判断CSS3可用性的的基础上,否则一切都是空谈。因此我们不应过度追求CSS3的纯粹性,必要时我们还是得借助JavaScript完成任务。技术,没有最好的,只有最合适的。

    关键字:

在线提交作业