`
yuyongkun4519
  • 浏览: 43138 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

常用CSS书写技巧和CSS HACK技巧

阅读更多
常用CSS书写技巧和CSS HACK技巧


不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别下划线“_”和星号“ * ”,IE7能识别星号“ * ”,但不能识别下划线“_”,而firefox两个都不能认识。等等
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面列举常用的CSS hack方法
1:!important
!important作用是提高指定样式规则的应用优先权。
IE7以及所有标准浏览器能识别!important
区别IE6与IE7与其他浏览器

以下为引用的内容:
.browserTest
{
    border:20px solid #60A179 !important;
    border:20px solid #00F;
}

在Mozilla中或者IE7浏览时候,能够理解!important的优先级,因此显示#60A179的颜色:
在IE6中浏览时候,不能够理解!important的优先级,因此显示#00F的颜色:
2:*
IE都能识别*;标准浏览器(如火狐)不能识别*
区别IE6与火狐

以下为引用的内容:
.browserTest
{
    border:20px solid #60A179;
    *border:20px solid #00F;
}

区别IE7与火狐

以下为引用的内容:
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F;
}
区别IE7,IE6与火狐
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F !important;
   *border:20px solid ###;
}

3:_
IE6支持下划线,IE7和firefox均不支持下划线
区别IE7,IE6与火狐

以下为引用的内容:
.browserTest
{
   border:20px solid #60A179;
   *border:20px solid #00F;
   _border:20px solid ###;
}
/*不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面*/

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

以下为引用的内容:
.browserTest { width: 120px; }      /* FireFox fixed */
*html .browserTest { width: 80px;}  /* ie6 fixed */
*+html .browserTest { width: 60px;} /* ie7 fixed */

注意:
*+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设置display:inline。

以下为引用的内容:
<div id=”float”></div>
相应的css为
#float
{
   float:left;
   margin:5px;/*IE下理解为10px*/
   display:inline;/*IE下再理解为5px*/
}

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

6)IE和FF对盒模型的解释区别
#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这样设计:
#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? "600px": "auto" );}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。
10:万能float闭合
将以下代码加入Global CSS 中,给需要闭合的div加上

以下为引用的内容:
<style>
/* Clear Fix */
.clearfix:after
{
   content:".";
   display:block;
   height:0;
   clear:both;
   visibility:hidden;
}
*html .clearfix{
   height:1%;
}
*+html .clearfix{
   height:1%;
}
.clearfix
{
   display:inline-block;
}
/* Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac */
/* end of clearfix */
</style>
/**********************************************/
<div id="wrap">
   <div class="column_left">
     <h1>Float left</h1>
   </div>
   <div class="column_right">
     <h1>Float right</h1>
   </div>
</div>
#wrap{ border:6px #ccc solid; overflow:auto; _height:1%;}
.column_left{ float:left; width:20%; padding:10px;}
.column_right{ float:right; width:75%; padding:10px; border-left:6px #eee solid;}
分享到:
评论

相关推荐

    CSS常用技巧之CSS书写技巧和CSS HACK技巧

    不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题,本文给大家分享CSS常用技巧之CSS书写技巧和CSS HACK技巧 ,需要的朋友参考下

    HTML+CSS前端编码规范.pdf

    Id 和 class 是两个常用的 CSS 选择符,但它们有着不同的应用场景。Id 用于唯一地标识一个元素,而 class 则用于标识一组元素的共性特征。 5. CSS 的优先级 CSS 的优先级是指 CSS 规则的应用顺序。 CSS 的优先级...

    CSS Hack 浏览器兼容整理

    书写顺序一般是将识别能力强的浏览器的CSS写在后面,CSS hack书写顺序一般为FF IE7 IE6 div+css浏览器兼容IE6,IE7,FF之间的标识区别:   IE6 IE7 FF * √ √ × important × √ √   1. IE都能...

    CSS后处理工具CSSGrace.zip

    CSS Grace 是一个由 PostCSS 驱动,面向未来的 CSS 后处理工具。实现了大部分常用的 IE Hack,获取图片宽高等,position: center 等功能。...而你,只用书写和关心标准的 CSS 语法。 标签:CSSGrace CSS框架

    如何书写高效、可维护、组件化的CSS的演示文档

    高效的CSS 可维护的CSS 组件化的CSS hack-free CSS

    达内科技内部资料一CSS总结.pptx

    高效的CSS、可维护的CSS、组件化的CSS、hack-free CSS 书写高效CSS: 1、使用外联样式替代行间样式或者内嵌样式 2、不推荐使用内嵌样式

    css hack问题

    ie5 hack, ie 6 hack, ie 8 hack,ie 9 我没用,暂时也没接触过9的hack,随着浏览器的更新(而且换代越来越快),...IE6,CSS hack书写顺序一般为FF IE7 IE6 以: " #demo {width:100px;} "为例; 复制代码代码如下:#demo

    CSS 兼容问题

    什么叫CSS HACK呢? 针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。 CSS Hack的原理是什么(CSS的兼容问题) 由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系...

    浏览器hack总结 详细的浏览器兼容性的快速解决方法

    所谓CSS Hack就是针对不同的浏览器书写不同的CSS样式,通过使用某个浏览器单独识别的样式代码,控制该浏览器的显示效果。CSS Hack主要分为两类 CSS 选择器Hack CSS选择器Hack是指通过在CSS选择器的前面,加上一些...

    css 兼容性书写记录

    很早开始就知道css hack并使用之,以前觉得css hack是个很神奇的东西能解决很多兼容性问题,渐渐地发现,其实不容hack的页面才是更好的选择

    IE6789,FF之间Css Hack整理

    大家在使用的过程中,需要注意书写顺序

    让CSS代码更具有易维护性

    有些时候是源于一开始书写时的混乱和草率,有时候也是因为后期的维护和各种HACK的需要,但不管如何,书写出干净、易于管理的CSS很简单,下面是10条改进的方法:1.井井有条。和许多其他的事情一样,首先要保持一个...

    css+div的一些易错点小结

    开发尽量不要用margin和padding属性,因为在不同...注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面,今天我就忘了次序问题,因为我用到的了margin-left,所以知道要在IE6和IE7

    qst:quick styling toolkit - Stylus样式工具库

    无需写css hack 文本浮凸、凹陷、3d等效果 封装文本溢出省略号、画小三角等常用代码 ##快速开始 下载最新版qst 在.styl文件中引入、配置 // 引入qst @import 'qst/all'; // 设置基础变量 $default-font-size =

    styled-roam:am Roam Research [[roamjs]]扩展程序,可使用可爱的卡片和精美的主题进行书写

    风格漫游(研究) 漫游研究 :writing_hand: 用可爱的卡片写字 :puzzle_piece: 和美丽的主题 :artist_palette: 我用于自定义CSS和JavaScript扩展 :NEW_button: 漫游研究 :writing_hand: :card_file_box:快速开始首先...

Global site tag (gtag.js) - Google Analytics