`

CSS简单总结

阅读更多
  多篇文章的合并,向原作者致敬。

一、Hack



例如:style=”*width:10px!important; width:20px;”,其在 IE7下宽度为10px,在IE6下宽度是20px.

IE特有的html条件注释使用规则
1.仅IE可见的写法
<!--[if IE]>此处内容只有IE可见<![endif]–>
2.仅IE6可见的写法
<!-–[if IE 6]>此处内容只有IE6.0可见<![endif]–->
3.仅IE7可见的写法
<!–-[if IE 7]>此处内容只有IE7.0可见<![endif]–->
4.版本区间可显示写法
<!–[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]–>
<!–[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]–>
<!–[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]–>
<!–[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]–>
5.非IE可见的写法(注意:此条不符合WEB标准,但的确实用)
<!–[if !IE]>此处内容只非IE可见<![endif]–>

二、初始化
  由于各种浏览器对元素默认属性的定义不同,可能导致页面所有差异,于是,CSS Reset出现了。
  对各种元素的CSS属性进行重定义,达到各种浏览器无差异的效果。
1.
charset ”utf-8″;
html {background:url(/www/pic/head_back.gif) repeat-x top #FFF}
body {width:920px;font:12px Arial;margin:0 auto;padding:0;color:#000;}
a{color:#000; text-decoration:none}
a:hover {color:#f00; text-decoration:underline}
ul,ol,p,dl{margin:0;padding:0}
ul,ol,dl{height:100%;overflow:hidden}
li{list-style:none}
img {border:none}
h1,h2,h3,h4{font:12px Verdana;margin:0;padding:0}
input {font:12px Verdana}
2.

/*为背景定义了颜色*/
/*html {
color:#000;
background:#FFF;
}*/
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td {
margin:0;
padding:0;
}
/*合并边线,边线空间至零.*/
table {
border-collapse:collapse;
border-spacing:0;
}
/*清除边线*/
fieldset, img {
border:0;
}
address, caption, cite, code, dfn, em, strong, th, var {
font-style:normal;
font-weight:normal;
}
li {
list-style:none;
}
caption, th {
text-align:left;
}
h1, h2, h3, h4, h5, h6 {
font-size:100%;
font-weight:normal;
}
/*添加空字符清除融合*/
q:before, q:after {
content:”;
}
abbr, acronym {
border:0;
font-variant:normal;
}
/* to preserve line-height and selector appearance */
sup {
vertical-align:text-top;
}
sub {
vertical-align:text-bottom;
}
input, textarea, select {
font-family:inherit;
font-size:inherit;
font-weight:inherit;
}
/*to enable resizing for IE*/
/*在ie下重定义*/
input, textarea, select {
*font-size:100%;
}
/*because legend doesn’t inherit in IE */
/*IE下legend不继承 */
legend {
color:#000;
}

三、参数
ss和js带参数(形如.css?t=与.js?t=)

<script type="text/javascript" src="jb51.js?version=1.2.6"></script>
<link rel='stylesheet' href='base.css?version=2.3.3' type='text/css' />


使用参数有两种可能,

第一、脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。
      即上面代码对于文件来说 等价于

<script type="text/javascript" src="jb51.js"></script>
<link rel='stylesheet' href='base.css' type='text/css' />

但浏览器会认为他是 该文件的某个版本!
 
第二、客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用
第二种情况最多,也可能两种同时存在。

版本号,可以是一个随机数,也可以是一个递增的值,大版本小版本的方式,或者根据脚本的生成时间书写,比如 20080727182553 就是精确到了生成脚本的秒,而 2.3.3 就是大版本小版本的方式。

四、haslayout
引自:http://www.webjx.com/css/divcss-16025.html
要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清除的概念。大多IE下的显示错误,就是源于 haslayout。

什么是 haslayout ?
haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分。在Internet Explorer中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。为了调节这两个不同的概念,渲染引擎采用 了 hasLayout 的属性,属性值可以为true或false。当一个元素的 hasLayout 属性值为true时,我们说这个元素有一个布局(layout)

当一个元素有一个布局时,它负责对自己和可能的子孙元素进行尺寸计算和定位。简单来说,这意味着这个元素需要花更多的代价来维护自身和里面的内容, 而不是依赖于祖先元素来完成这些工作。因此,一些元素默认会有一个布局。当我们说一个元素“拥有layout”或“得到layout”,或者说一个元素 “has layout” 的时候,我们的意思是指它的微软专有属性 hasLayout 被设为了 true 。一个“layout元素”可以是一个默认就拥有 layout 的元素或者是一个通过设置某些 CSS 属性得到 layout 的元素。如果某个HTML元素拥有 haslayout 属性,那么这个元素的 haslayout 的值一定只有 true,haslayout 为只读属性 一旦被触发,就不可逆转。通过 IE Developer Toolbar 可以查看 IE 下 HTML 元素是否拥有haslayout,在 IE Developer Toolbar 下,拥有 haslayout 的元素,通常显示为“haslayout = -1”。

负责组织自身内容的元素将默认有一个布局,主要包括以下元素(不完全列表):

* body and html
* table, tr, th, td
* img
* hr
* input, button, file, select, textarea, fieldset
* marquee
* frameset, frame, iframe
* objects, applets, embed

对于并非所有的元素都默认有布局,微软给出的主要原因是“性能和简洁”。如果所有的元素都默认有布局,会对性能和内存使用上产生有害的影响。

如何激发 haslayout?
大部分的 IE 显示错误,都可以通过激发元素的 haslayout 属性来修正。可以通过设置 css 尺寸属性(width/height)等来激发元素的 haslayout,使其“拥有布局”。如下所示,通过设置以下 css 属性即可。

* display: inline-block
* height: (任何值除了auto)
* float: (left 或 right)
* position: absolute
* width: (任何值除了auto)
* writing-mode: tb-rl
* zoom: (除 normal 外任意值)

Internet Explorer 7 还有一些额外的属性(不完全列表):

* min-height: (任意值)
* max-height: (除 none 外任意值)
* min-width: (任意值)
* max-width: (除 none 外任意值)
* overflow: (除 visible 外任意值)
* overflow-x: (除 visible 外任意值)
* overflow-y: (除 visible 外任意值)
* position: fixed

其中 overflow-x 和 overflow-y 是 css3 盒模型中的属性,目前还未被浏览器广泛支持。

对于内联元素(默认即为内联的元素,如 span,或 display:inline; 的元素),

width 和 height 只在 IE5.x 下和 IE6 或更新版本的 quirks 模式下触发 hasLayout 。而对于 IE6,如果浏览器运行于标准兼容模式下,内联元素会忽略 width 或 height 属性,所以设置 width 或 height 不能在此种情况下令该元素具有 layout。
zoom 总是可以触发 hasLayout,但是在 IE5.0 中不支持。
具有“layout” 的元素如果同时 display: inline ,那么它的行为就和标准中所说的 inline-block 很类似了:在段落中和普通文字一样在水平方向和连续排列,受 vertical-align 影响,并且大小可以根据内容自适应调整。这也可以解释为什么单单在 IE/Win 中内联元素可以包含块级元素而少出问题,因为在别的浏览器中 display: inline 就是内联,不像 IE/Win 一旦内联元素拥有 layout 还会变成 inline-block。

haslayout 问题的调试与解决
当网页在 IE 中有异常表现时,可以尝试激发 haslayout 来看看是不是问题所在。常用的方法是给某元素 css 设定 zoom:1 。使用 zoom:1 是因为大多数情况下,它能在不影响现有环境的条件下激发元素的 haslayout。而一旦问题消失,那基本上就可以判断是 haslayout 的原因。然后就可以通过设定相应的 css 属性来对这个问题进行修正了。建议首先要考虑的是设定元素的 width/height 属性,其次再考虑其他属性。

对 IE6 及更早版本来说,常用的方法被称为霍莉破解(Holly hack),即设定这个元素的高度为 1% (height:1%;)。需要注意的是,当这个元素的 overflow 属性被设置为 visible 时,这个方法就失效了。或者使用 IE 的条件注释。

对 IE7 来说,最好的方法时设置元素的最小高度为 0 (min-height:0;)。

haslayout 问题引起的常见 bug
IE6 及更低版本的双空白边浮动 bug
bug 修复: display:inline;

IE5-6/win 的 3 像素偏移 bug
bug 修复: _height:1%;

E6 的躲躲猫(peek-a-boo) bug
bug 修复: _height:1%;
  • 大小: 4.9 KB
分享到:
评论

相关推荐

    学习css及html中主要内容的总结。希望对初学则有帮助

    6. CSS 基本语法:CSS 规则由选择符、属性和值组成,如 `selector { property: value }`。选择符可以是HTML标签、类选择符(`.class`)、ID选择符(`#id`)或其他复杂选择符。属性(如 `color` 或 `text-align`)和...

    上课用CSS实验总结

    在本“上课用CSS实验总结”中,我们将深入探讨CSS(层叠样式表)的核心概念以及在实际项目中的应用。CSS是网页设计的关键技术之一,它负责定义网页内容的外观和布局,使得网页更具视觉吸引力并提高用户体验。在这个...

    CSS实战学习总结,很不错的

    ### CSS实战学习总结 在《CSS实战学习总结》这一篇深度文档中,作者辛磊针对CSS的实际应用进行了全面而深入的解析,旨在帮助读者掌握CSS的核心技能,提升网页设计与开发的能力。以下是对该文档中关键知识点的提炼与...

    DIV+CSS简单登录界面模板

    标题提到的“DIV+CSS简单登录界面模板”是这种技术的一个实例,用于创建一个用户友好的登录页面。下面我们将深入探讨`DIV+CSS`布局以及如何构建这样的模板。 首先,`Div`元素是HTML中的一个块级元素,用于将内容...

    css优先级总结

    初学者往往会觉得CSS非常简单直观,但实际上,随着对CSS掌握程度的加深,我们会发现其中包含着许多复杂的规则与特性,其中之一便是CSS的选择器优先级。 #### 二、CSS优先级基础知识 CSS优先级是指当多个样式规则...

    css+圆角总结

    总之,CSS的`border-radius`属性为我们提供了丰富的圆角设计可能性,无论是简单的圆角矩形还是复杂的圆形元素,都能轻松实现。在实际应用中,结合其他CSS属性和技巧,我们可以创造出更具吸引力的网页界面。

    HTML-CSS学习总结

    ### HTML-CSS学习总结 ...综上所述,虽然CSS中的分号使用看起来简单,但掌握其正确用法对于编写高效、易维护的CSS代码至关重要。此外,不断学习新的CSS特性和最佳实践也是提升前端技能的重要途径。

    CSS内容简单总结(思维导图版本)

    CSS内容简单总结(思维导图版本)

    CSS图像移动总结

    在网页设计中,CSS(层叠样式表)是用于控制网页元素外观的重要工具,而...无论是简单的滑入动画还是复杂的交互式图像,CSS和JavaScript都能提供强大的支持。同时,理解这些知识点也有助于进一步掌握前端开发技能。

    css布局的简易模板

    总结来说,这个"css布局的简易模板"可能涵盖了基本的CSS布局技巧,如盒模型、定位和响应式布局,以及可能使用了Flexbox或Grid Layout。开发者可以通过查阅这个模板学习如何有效地组织和设计网页元素,同时理解如何...

    网页sheji-CSS初学总结

    ### 网页设计-CSS初学总结 ...掌握了CSS的基本语法和常用属性后,便可以开始尝试创建简单的网页样式,随着实践的深入,你将能够运用更高级的技术来实现复杂的设计效果。希望这篇文章能成为你学习CSS道路上的良好起点!

    Html学习总结.md

    css简单总结

    div+css学习总结.doc

    DIV+CSS 学习总结 DIV+CSS 是一对强大的前端开发组合, DIV responsible for structuring content on the web page, while CSS is responsible for styling and layout. In this summary, we will cover the ...

    CSS RESET个人总结

    在"CSS RESET个人总结"中,我们将深入探讨这个主题。 一、为何需要CSS Reset 1. 浏览器差异:不同的浏览器对HTML元素的默认样式处理不一,如字体大小、行高、内边距、外边距等,这会导致页面在不同浏览器上的显示...

    h5+CSS3总结

    ### H5 + CSS3 总结 #### H5 基础 HTML5(HyperText Markup Language 5)是超文本标记语言 HTML 的最新版本,它不仅提供了更丰富的语义化标签,还增强了多媒体的支持能力,并引入了一系列新的功能,使得 Web 开发...

    flex动态加载CSS文件方法总结

    flex 动态加载css文件方法总结,增加flex的界面美化效果。简单易懂,易操作。

    css框架Blueprint CSS

    总结起来,Blueprint CSS 是一个强大且实用的CSS框架,能够帮助开发者快速构建响应式的、视觉统一的网页。其网格系统、预定义样式和打印优化等功能,大大提高了开发效率,同时也降低了维护成本。对于任何希望提升...

    简单设计DIV+CSS模板

    总结来说,"简单设计Div+CSS模板"不仅是网页设计的起点,也是进阶的基石。通过学习和实践,我们可以利用Div+CSS构建高效、美观且易于维护的网页,为用户提供更优质的浏览体验。无论你是初学者还是有经验的开发者,...

    3.1CSS 内容总结(一)基础.md

    ### CSS内容总结 #### 1. CSS简介 - **作用**:CSS,全称为层叠样式表(Cascading Style Sheets),是一种用来美化网页并帮助布局页面的语言。它最大的价值在于让HTML专注于做结构呈现,而将样式设计的任务交给CSS来...

    CSS知识点总结

    这篇“CSS知识点总结”涵盖了从基础到进阶的多个方面,包括CSS的排版样式、文字与文本属性、背景与列表等内容。 首先,让我们深入了解一下CSS的基础知识。CSS允许我们将样式直接应用到HTML元素上,从而实现页面的...

Global site tag (gtag.js) - Google Analytics