这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。

由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。

比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等

书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面列举常用的CSS hack方法

CSS书写技巧-1:!important

!important作用是提高指定样式规则的应用优先权。

IE7以及所有标准浏览器能识别!important

区别IE6与IE7与其他浏览器

  1. .browserTest
  2. {
  3. border:20pxsolid#60A179!important;
  4. border:20pxsolid#00F;
  5. }

在Mozilla中或者IE7浏览时候,能够理解!important的优先级,因此显示#60A179的颜色:

在IE6中浏览时候,不能够理解!important的优先级,因此显示#00F的颜色:

CSS书写技巧-2:*

IE都能识别*;标准浏览器(如火狐)不能识别*

区别IE6与火狐

  1. .browserTest
  2. {
  3. border:20pxsolid#60A179;
  4. *border:20pxsolid#00F;
  5. }

区别IE7与火狐

  1. .browserTest
  2. {
  3. border:20pxsolid#60A179;
  4. *border:20pxsolid#00F;
  5. }

区别IE7,IE6与火狐

  1. .browserTest
  2. {
  3. border:20pxsolid#60A179;
  4. *border:20pxsolid#00F!important;
  5. *border:20pxsolid###;
  6. }

CSS书写技巧-3:_

IE6支持下划线,IE7和firefox均不支持下划线

区别IE7,IE6与火狐

  1. .browserTest
  2. {
  3. border:20pxsolid#60A179;
  4. *border:20pxsolid#00F;
  5. _border:20pxsolid###;
  6. }
  7. /*不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面*/

CSS书写技巧-4:*+html 与 *html

*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签

  1. .browserTest{width:120px;}/*FireFoxfixed*/
  2. *html.browserTest{width:80px;}/*ie6fixed*/
  3. *+html.browserTest{width:60px;}/*ie7fixed*/

注意:

*+html 对IE7的HACK 必须保证HTML顶部有如下声明:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

/*****************************************************************************/

/*****************************************************************************/

以下是一些常用的CSS兼容技巧

1)火狐下给div设置padding后会导致width和height 增加, 但IE不会.(可用!important解决)

2)垂直居中,将 line-height设置为当前div相同的高度, 再通过vertical-align: middle;( 注意内容不要换行)

3)水平居中,margin:0 auto;(当然不是万能)

4)若需给a标签内内容加上样式, 需要设置 display: block;(常见于导航标签)

5)浮动IE产生的双倍距离

在IE下,当一个div设置了float后,然后给他设置margin,就会出现加倍的margin,解决的办法是给div设置

  1. display:inline。
  2. <divid=”float”></div>
  3. 相应的css为
  4. #float
  5. {
  6. float:left;
  7. margin:5px;/*IE下理解为10px*/
  8. display:inline;/*IE下再理解为5px*/
  9. }

Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,...不可控制(内嵌元素);

6)IE和FF对盒模型的解释区别

  1. #browserTest{width:650px!important;width:648px;padding-left:2px;background:#fff;}

browserTest显示的宽度是650px;

IE Box的总宽度是:width+padding+border+margin宽度总和;

FF Box的总宽度就是:width的宽度,padding+border+margin的宽度在含在width内。

如果有BOX{WIDTH:"300"; PADDING:"5PX";}

则BOX在IE的宽度应该为:310

而在FF的宽度则是300

所以在BOX有填充的情况下应该这样使用

BOX{WIDTH:"300" !IMPORTANT; WIDTH:"290";}

7)ul标签在FF下面默认有list-style和padding, 最好事先声明, 以避免不必要的麻烦;(常见于导航标签和内容列表)

8)作为外部wrapper的div不要定死高度, 最好还加上 overflow: hidden;以达到高度自适应;

9)页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个, 而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到 <body> 标签下,然后为div指定一个类:

然后CSS这样设计:

  1. #container{?"600px":"auto");}

第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。

CSS书写技巧-10:万能float闭合

将以下代码加入Global CSS 中,给需要闭合的div加上

  1. <style>
  2. /*ClearFix*/
  3. .clearfix:after
  4. {
  5. content:".";
  6. display:block;
  7. ;
  8. clear:both;
  9. visibility:hidden;
  10. }
  11. *html.clearfix{
  12. height:1%;
  13. }
  14. *+html.clearfix{
  15. height:1%;
  16. }
  17. .clearfix
  18. {
  19. display:inline-block;
  20. }
  21. /*HidefromIEMac*/
  22. .clearfix{display:block;}
  23. /*EndhidefromIEMac*/
  24. /*endofclearfix*/
  25. </style>
  26. /**********************************************/
  27. <divid="wrap">
  28. <divclass="column_left">
  29. <h1>Floatleft</h1>
  30. </div>
  31. <divclass="column_right">
  32. <h1>Floatright</h1>
  33. </div>
  34. </div>
  35. #wrap{border:6px#cccsolid;overflow:auto;_height:1%;}
  36. .column_left{float:left;width:20%;padding:10px;}
  37. .column_right{float:right;width:75%;padding:10px;border-left:6px#eeesolid;}

高手总结CSS书写技巧的更多相关文章

  1. 一些css书写的小技巧

    一.css顺序 首先声明,浏览器读取css的方式是从上到下的.我们一般书写css只要元素具备这些属性就会达到我们预期的效果,但是这会给以后的维护和浏览器的渲染效率带来一定的影响,那么该怎么书写css的 ...

  2. 推荐大家使用的CSS书写规范、顺序

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经 ...

  3. 分享给大家的CSS书写规范、顺序

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经 ...

  4. CSS书写规范及顺序

    CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等)2.大小(width, height, padding, margin)3. ...

  5. 推荐大家使用的CSS书写规范及顺序

    @设计达人网 写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里我总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文 ...

  6. CSS书写规范、顺序

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经验总 ...

  7. CSS hack技巧

    CSS hack技巧一览,原文来自CSDN freshlover的博客专栏<史上最全CSS Hack方式一览> 什么是CSS hack 由于不同厂商的流览器或某浏览器的不同版本(如IE6- ...

  8. CSS书写规范、顺序和命名规则

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考   这些是参考了国外一些文章以及我的个 ...

  9. 推荐大家使用的CSS书写规范、顺序(转载)

    转自:http://www.admin10000.com/document/2979.html 写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体 ...

随机推荐

  1. input限制字符长度 - composition

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 收集python2代码转python3遇到的问题

    在程序中做python版本判断 sys.version_info # sys.version_info(major=2, minor=7, micro=16, releaselevel='final' ...

  3. 关于iframe定位碰到的问题。

    这几天在做自动化测试的时候发现一个问题,用JQUERY定位时,总是报错,MES:JQUERY IS NOT DEFINED. 检查自己定位没有问题,后来想是不是语法出了问题. 切换成XPATH来定位, ...

  4. spring--Springmvc中@Autowired注解与@Resource注解的区别

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...

  5. 【HTML】框架集(Framesets)

    1.Frameset的使用 所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只 要 <FRAMESET> <FRAME> 即可,而所有框架标记 要放在一个总起的 htm ...

  6. 【SQL】事务回滚

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...

  7. Ubuntu12.04下删除文件夹内所有的.svn文件

    前段时间在公司里遇到一个问题,从svn上下载下来的文件含有.svn文件,如何删除当前目录下的所有.svn文件呢? 一个个手动删除显然不可能,太多了.其实在Ubuntu12.04下延伸至其他所搜的Lin ...

  8. Linux 下通过mail命令发送邮件

    mail -s "测试"  1968089885@foxmail.com 需要先配置smtp服务器

  9. centos7下利用nfs搭建wordpress

    拓扑环境 web1 192.168.198.110 web2 192.168.198.120 mysql 192.168.198.130 DNS 192.168.198.10 NFS 192.168. ...

  10. 【POJ】1679 The Unique MST

    题目链接:http://poj.org/problem?id=1679 题意:给你一组数据,让你判断是否是唯一的最小生成树. 题解:这里用的是kuangbin大佬的次小生成树的模板.直接判断一下次小生 ...