SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Box Model



     2011-04-19
• 拔赤
 淘宝前端开发工程师
 http://jayli.github.com
Hack !
#box {
  color:black; /*firefox*/
  color:red9; /*所有ie*/
  *color:blue; /*ie7*/
  _color:green; /*ie6*/
}
CSS Basic Box Model
#box {
  border:20px solid red;
  padding:20px;
  width:100px;
  height:100px;          <div id=“box”>
}                          <p>#box</p>
#box p {                 </div>
  width:100%;
  height:100%;
}
Firefox with W3C box layout
IE with W3C box layout
IE with W3C box layout
What about IE with
  Quirks Mode?
IE with Quirks box layout
指定 Doctype!

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


             <!DOCTYPE HTML>
IE6 Double Margin
float:left
margin-left:100px               !IE6




            float:left
            margin-left:100px   IE6
This is a bug!
float:left
margin-left:100px
                    Fix this
display:inline         bug
IE hasLayout
div#box {
  background:red;
  filter:alpha(opacity=50);
}


<!DOCTYPE html>
…
<div id=“box”>
  text
</div>
Filter is ok in IE8




Filter dosn’t work in IE6/7
div#box {
  background:red;
  filter:alpha(opacity=50);
}


<!DOCTYPE html>
…
<div id=“box”>
  text            在IE6/7下没有
                   hasLayout
</div>
没有 hasLayout 的元素上
    Filter 无作用
Why?
降低渲染压力
默认不具有 hasLayout
     • div
     • span
激活元素的 hasLayout
   •   position
   •   float
   •   width(!auto)
   •   height(!auto)
   •   zoom
   •   overflow
div#box {
  background:red;
  filter:alpha(opacity=50);
  height:19px;
}                   让div具有
                   hasLayout
<!DOCTYPE html>
…
<div id=“box”>
  text
</div>
Filter is ok in IE8




Filter is ok in IE6/7
Warning !!!
hasLayout 元素呈现为
      ”矩形”
I want this !
#pic {
  float:left;width:50px;height:50px;
}
#content {
  border:1px solid blue;
  background:yellow;height:100%;
}


<div>
  <div id=“pic”></div>
  <div id=“content”>long text…</span>
</div>
It’s correct in Firefox 3.6




    It’s correct in IE8
It’s incorrect in IE7




It’s incorrect in IE6
#pic {
  float:left;width:50px;height:50px;
}
#content {
  border:1px solid blue;
  background:yellow;height:100%;
}
         height触发了#content
             的hasLayout
<div>
  <div id=“pic”></div>
  <div id=“content”>long text…</span>
</div>
#pic {
  float:left;width:50px;height:50px;
}
#content {             IE6/7下 #content
  border:1px solid blue; 显示为矩形
  background:yellow;height:100%;
}
        height触发了#content
            的hasLayout
<div>
  <div id=“pic”></div>
  <div id=“content”>long text…</span>
</div>
#pic {
  float:left;width:50px;height:50px;
}
#content {
  border:1px solid blue;
  background:yellow;height:100%;
}
                    样式定义在wrapper上

<div style=“background:yellow”>
  <div id=“pic”></div>
  <div id=“content”>long text…</span>
</div>
It’s correct in IE7




It’s correct in IE6
Margin Overlap
Rules
•   水平margin不重叠
•   浮动元素上下margin不重叠(float)
•   飘动元素上下margin不重叠(position)
•   常规折行上下margin重叠
#wrapper {
  width:500px;
}
#wrapper p{
  width:100px;margin:50px;float:left;
}


<div id=“wrapper”>
  <p></p>
  <p></p>
  …
</div>
margin:50px
100px
        margin:50px




浮动元素上下margin不重叠
#wrapper {
  width:500px;
}                        如果去掉浮动?
#wrapper p{
  width:100px;margin:50px;float:left;
}


<div id=“wrapper”>
  <p></p>
  <p></p>
  …
</div>
margin:50px




无浮动/飘动元素上下margin重叠
More & More…
秘籍?
知己知彼,百战不殆!
战争是持久的,胜利是我们的!
鉴定信念,战胜 IE6!
ref

• http://htmlhelp.com/tools/validator/docty
  pe.html
• http://www.positioniseverything.net/explor
  er/floatIndent.html
• http://msdn.microsoft.com/en-
  us/library/bb250481%28v=vs.85%29.aspx
box model

Contenu connexe

Tendances

Thinking about CSS Architecture
Thinking about CSS ArchitectureThinking about CSS Architecture
Thinking about CSS Architecture拓樹 谷
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시동현 조
 
Web standard 2
Web standard 2Web standard 2
Web standard 2Eb Styles
 
Professional Web Development
Professional Web DevelopmentProfessional Web Development
Professional Web DevelopmentJoseph Chiang
 
第二节课:样式之美 web前端课程体系之css
第二节课:样式之美 web前端课程体系之css第二节课:样式之美 web前端课程体系之css
第二节课:样式之美 web前端课程体系之cssTommy Chang
 
Html基础
Html基础Html基础
Html基础Alipay
 

Tendances (8)

Thinking about CSS Architecture
Thinking about CSS ArchitectureThinking about CSS Architecture
Thinking about CSS Architecture
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시
 
Web standard 2
Web standard 2Web standard 2
Web standard 2
 
Professional Web Development
Professional Web DevelopmentProfessional Web Development
Professional Web Development
 
第二节课:样式之美 web前端课程体系之css
第二节课:样式之美 web前端课程体系之css第二节课:样式之美 web前端课程体系之css
第二节课:样式之美 web前端课程体系之css
 
Mengenal HTML
Mengenal HTMLMengenal HTML
Mengenal HTML
 
Why Sass?
Why Sass?Why Sass?
Why Sass?
 
Html基础
Html基础Html基础
Html基础
 

Plus de jay li

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版jay li
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Jswebapps
JswebappsJswebapps
Jswebappsjay li
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼jay li
 
F2e security
F2e securityF2e security
F2e securityjay li
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟jay li
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎jay li
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问jay li
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developerjay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Html5form
Html5formHtml5form
Html5formjay li
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkitjay li
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计jay li
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计jay li
 

Plus de jay li (20)

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Jswebapps
JswebappsJswebapps
Jswebapps
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
 
F2e security
F2e securityF2e security
F2e security
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developer
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Html5form
Html5formHtml5form
Html5form
 
Slide
SlideSlide
Slide
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkit
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计
 

box model