CSS很强大的一点是,它具有很强的向前兼容性:如果浏览器不识别某个属性或值,它会忽略这个声明;如果不识别某个选择器,它会忽略整个规则。

这意味着新的选择器、属性和值,不会对老的浏览器产生严重影响。因此,设计师就可以大胆的应用CSS3的高级规则和声明,而不必担心老浏览器是否能够识别。

事实上,这些高级规则确实给设计带来极大的便利,设计师都迫不及待的要使用它,并且希望它们在老的浏览器中,和现代浏览器中能够产生相同的效果。

幸运的是,网上存在大量的优秀脚本,可以让老的浏览器支持CSS3的一些高级特性。如,selectivizr、PIE、respond.js 等等。

selectivizr

selectivizr 是一个非常优秀的Javascript工具,它可以让IE6-8浏览器支持CSS3的伪类选择器和属性选择器等。

selectivizr的使用非常简单,但是并不能直接使用,需要在页面的 <head> 标签中,先加载如jQuery、dojo、prototype、mootools等诸多流行的Javascript库中的任意一个。然后,再使用IE条件注释,让IE6-8版本加载 selectivizr 脚本,剩下的工作就交给 selectivizr 来完成:

  1. <script src="[JS library]"></script>
  2. <!--[if (gte IE 6)&(lte IE 8)]>
  3.     <script  src="selectivizr.js"></script>
  4.     <noscript><link rel="stylesheet" href="[fallback css]" /></noscript>
  5. <![endif]-->

其中,JS library 是你要使用的Javascript库,selectivizr会自动检测最佳的Javascript库,如果你没有使用任何 Javascript 库,则伪类选择器和属性选择器等就不起作用。使用不同的库,所能支持的选择器如图 10‑1 所示:

图10-1 selectivizr支持的库和选择器

需要注意的是,selectivizr只解析使用 <link> 标签引入或使用 @import 导入的外部样式表,而不解析在 <style> 标签中定义的样式,也不支持站外样式调用。

考虑到浏览器的安全机制,需要通过 http 或https协议访问页面才行,通过 file:// 协议访问页面,selectivizr则不能发挥它的正常功能。

PIE

PIE.js 也是一款不错的Javascript工具,可以使IE6-8支持CSS3的部分渲染效果,如圆角、盒阴影、边框图像、多背景图像、渐变背景等。

PIE的使用也非常简单,只需在页面的 <head> 标签中,使用IE条件注释,让IE6-8版本加载 PIE 脚本,并调用 PIE.attach() 方法,将所有需要按CSS3进行渲染的选择器名称,添加到PIE对象:

  1. <!--[if lt IE 9]>
  2. <script  src="PIE.js"> </script>
  3. <script>
  4. $(function() {
  5.     $(".rounded").each(function() {
  6.         PIE.attach(this);
  7.     });
  8. }); 
  9. </script>
  10. <![endif]-->

上述代码就表示,包含类 .rounded 的每一个元素,将按CSS3进行渲染。如果有多个选择器,需要按同样的方法都添加到PIE对象中。

使用Javascript 相对麻烦,因此,PIE还提供了 .htc 文件,使用起来更加方便,只需在相应的选择器中,通过 behavior 属性直接链接 pie.htc 文件即可。如:

  1. .rounded  {
  2.     border-radius: 8px;
  3.     behavior: url(pie.htc);
  4. }

respond.js

respond.js 是一个快速、轻量的 Javascript 工具,它可以为IE6-8 提供媒体查询的 min-width 和 max-width 特性,使它们能够支持响应性设计。

respond的使用及其简单,只需在页面的头部,使用IE条件注释,让IE6-8版本加载 respond.js 脚本即可:

  1. <!--[if lt IE 9]>
  2. <script  src="respond.js "></script>
  3. <![endif]-->

说明:.htc 文件

.htc 文件是一种脚本文件,用来描述 web 行为,web 行为允许程序员把自定义的功能“连接”到现有的元素和控件,而不是必须让用户下载二进制文件来完成这个功能。

由于只有IE才能认识 .htc 文件。因此,常常用来解决 IE 特有的问题。如,在 IE6 及更低版本中,只有链接元素 a 才支持 :hover 伪类选择器。

csshover.htc 是一个脚本,只需下载该脚本,并在 body 的元素选择器中,通过 behavior 属性的 url 指向它,就可以让锚以外的元素支持 :hover 伪类选择器。如:

body  { behavior: url(csshover.htc); }

这样一来,就可以在CSS中,定义诸如 div:hover、li:hover、p:hover、img:hover、自定义选择器:hover,使 IE6 及更低版本支持在图像、列表等元素上使用 :hover 伪类选择器。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

客户端脚本selectivizr,PIE,Respond.js相关推荐

  1. Asp.Net 2.0中的客户端脚本

    在使用 ASP.NET 的时候,我们仍然在许多情况下需要使用客户端脚本.以下是笔者根据自己的经验和一些粗浅的研究,对此作一个简要的总结. 一.在 HTML 里直接写脚本 这个方法是最简单的,直到如今我 ...

  2. 增强DropDownList和ListBox控件:保持客户端脚本添加的options

            DropDownList.ListBox由于Items是保存在ViewState中,回传后服务端会从ViewState恢复所有Items,所以,客户端对options的设置在回传后无法 ...

  3. 读《白帽子讲Web安全》之客户端脚本安全(一)

    2019独角兽企业重金招聘Python工程师标准>>> [第2章  浏览器安全] 1.同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能. ...

  4. ECMAScript:客户端脚本语言的标准

    * ECMAScript:客户端脚本语言的标准1. 基本语法:1. 与html结合方式1. 内部JS:* 定义<script>,标签体内容就是js代码2. 外部JS* 定义<scri ...

  5. Respond JS有什么作用

    Respond.js 是一个快速.轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width ...

  6. Media Queries之Respond.js

    一.stackoverflow上面对css3-mediaqueries.js与respond.js的比较 css3-mediaqueries.js Pros Supports min, max and ...

  7. 为什么说JavaScript是一种客户端脚本语言?

    因为它运行于客户端 而不是运行于服务器端 还有就是JS是解释执行的而且它的功能并不像JAVA .NET 等等语言有那么强大的功能,而且在语法的严谨度上安全性上,性能上,等等...各方面也有较大区别,所 ...

  8. JavaScript客户端脚本语言的应用

    1.使用HTML中的表单.表格以及JavaScript客户端脚本语言实现如下图所示的简易计算器页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  9. 在asp.net中使用客户端脚本

    我们常常在asp.net中需要使用到客户端脚本,在asp.net中使用客户端脚本很容易,使用到Page的RegisterClientScriptBlock方法就行了.下面是我写的一段C#代码,用来打开 ...

最新文章

  1. szu 寒训个人复习第一天 线段树入门单点修改,区间修改,以及线段树的扩展运用[线段树+dp][区间最大公约数]
  2. NLP模型压缩六大方法介绍
  3. ansible playbook中使用迭代with_items案例
  4. linux fpga 开发环境,- Vivado+Zedboard之Linux开发环境搭建
  5. pcm5102a解码芯片音质评测_简单测评200元档可能是唯一搭载高通QCC3020芯片的真无线蓝牙耳机...
  6. 关于域名系统DNS解析IP地址的一些总结
  7. 带接口的webservice方式发布
  8. 伪静态化不正常,电脑打不开贴子,手机可以
  9. 概率论与数理统计-读书笔记3
  10. xcode打包ipa配置手动配置证书
  11. SpringBoot filter 责任链
  12. python进行列联表卡方检验
  13. SRAM and DRAM
  14. 用计算机弹琴图纸,cad制作钢琴平面图的操作流程
  15. c语言cyc函数,cyc指标源码
  16. 无盘 电影服务器,网吧电影服务器解决方案完全攻略指南
  17. B端产品的筛选场景调研与设计优化实践
  18. 关于认知升级的思考-认知升级是深度思考、认知升级是探索未知
  19. 服务器被攻击怎么封禁IP
  20. 关于性能测试的这点事,值得收藏~

热门文章

  1. 解决WP后台无法安装插件
  2. 操作系统(14)Linux最常用命令(能解决95%以上的问题)
  3. android系统优势 研究,Android系统关注度持续保持优势
  4. MyEclipse6.5安装SVN插件的三种方法
  5. 程序员笔记|常见的Spring异常处理
  6. 数据库的四大特性以及事务的隔离级别
  7. 子网掩码、掩码长度关系
  8. 精通 R plot—第1部分:颜色,图例和线
  9. Android聊天背景图片变形解决方案
  10. PVSCSI还是LSI logic?VM SCSI控制器驱动的选择