102
CSS101 by 小鱼, http://sofish.de

CSS 101

Embed Size (px)

DESCRIPTION

2011 新人培训, 讲 CSS 基础。

Citation preview

Page 1: CSS 101

CSS101by 小鱼,http://sofish.de

Page 2: CSS 101

CSS101by 小鱼,http://sofish.de

我没办法在1个小时内把你变成高手

Page 3: CSS 101

今天要讲的

盒模型选择器定位

兼容与Hack1.2.3.

5.6.7.规划你的CSS

工具8.浮动4.CSS3

Page 4: CSS 101

盒模型1.

Page 5: CSS 101

盒模型

外边距:margin内边距:padding边框:border

1.

Page 6: CSS 101

盒模型

外边距:margin内边距:padding边框:border

不可置换的(non-­‐replaced)行内元素没有  margin-­‐top  和margin-­‐bottom

http://reference.sitepoint.com/css/replacedelements

replaced  /  non-­‐replaced  elements

1.

Page 7: CSS 101

Q&A

Page 8: CSS 101

Q&A

Page 9: CSS 101

选择器2. (什么是选择器)

(1)#id  .class

(2)[rel=”nofollow”]  :hover

(3)元素(4)*(元素通配符)

Page 10: CSS 101

选择器2. (什么是选择器)

(1)#id  .class

(2)[rel=”nofollow”]  :hover

(3)元素(4)*(元素通配符)

分离样式和结构样式重用

Page 11: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

Page 12: CSS 101

选择器2.(1)优先级

(2)效率

(有什么是重要的)

Page 13: CSS 101

选择器2.(1)优先级

(2)效率

ID 0,  1,  0,  0CLASS、属性选择符、伪类 0,  0,  1,  0元素、伪元素 0,  0,  0,  1* 不计分

style=”” 1,  0,  0,  0!important 高于一切继承 没有specificity值,低于  *  选择器@import 通常有冲突时,相同规则  at  rule  进的优化级都比较低

(有什么是重要的)

Page 14: CSS 101

选择器2.(1)优先级

(2)效率

ID 0,  1,  0,  0CLASS、属性选择符、伪类 0,  0,  1,  0元素、伪元素 0,  0,  0,  1* 不计分

style=”” 1,  0,  0,  0!important 高于一切继承 没有specificity值,低于  *  选择器@import 通常有冲突时,相同规则  at  rule  进的优化级都比较低

(有什么是重要的)

同级后来居上* 虽然不计分,但比继承更权重更高

Page 15: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        .a{color:green;}        .b{color:blue;}</style>

Page 16: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

同级后来居上

Page 17: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        div{color:green;}        span{color:blue;}</style>

同级后来居上

Page 18: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

同级后来居上

继承是不计分的

Page 19: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        div{color:green!important;}        #alipay{color:blue;}</style>

同级后来居上

继承是不计分的

Page 20: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

同级后来居上

继承是不计分的

!important  高于一切

Page 21: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        div  span{color:green;}        span{color:blue;}</style>

同级后来居上

继承是不计分的

!important  高于一切

Page 22: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        div  span{color:green;}        span{color:blue;}</style>

同级后来居上

继承是不计分的

!important  高于一切

base:  得分高者权重高

Page 23: CSS 101

选择器2.(1)优先级(示例)

<div  id=”alipay”  class=”b  a”>        <span>sofish</span></div>

<style>        div  span{color:green;}        span{color:blue;}</style>

同级后来居上

继承是不计分的

!important  高于一切

base:  得分高者权重高

作业:IE  @import  有什么问题?

Page 24: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

Page 25: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

Page 26: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

ID 高效、最快CLASS 高效、较快属性选择符、伪类 低效、慢* 低效、慢

Page 27: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

ID 高效、最快CLASS 高效、较快属性选择符、伪类 低效、慢* 低效、慢

http://code.google.com/speed/page-speed/docs/rendering.html

选择器效率详情:

Page 28: CSS 101

选择器2.(1)优先级(2)效率

(有什么是重要的)

ID 高效、最快CLASS 高效、较快属性选择符、伪类 低效、慢* 低效、慢

http://code.google.com/speed/page-speed/docs/rendering.html

选择器效率详情:

速度差别是多少?真的有那么重要吗?有些事让浏览器去优化吧。

Page 29: CSS 101

Q&A

Page 30: CSS 101

Q&A

Page 31: CSS 101

定位3.(1)static

(2)relative

(3)absolute

(4)fixed

Page 32: CSS 101

定位3.(1)static

(2)relative

(3)absolute

(4)fixed

-­‐-­‐>  一般

Page 33: CSS 101

定位3.(1)static

(2)relative

(3)absolute

(4)fixed

-­‐-­‐>  一般

-­‐-­‐>  相对定位

Page 34: CSS 101

定位3.(1)static

(2)relative

(3)absolute

(4)fixed

-­‐-­‐>  一般

-­‐-­‐>  相对定位

-­‐-­‐>  绝对定位

Page 35: CSS 101

定位3.(1)static

(2)relative

(3)absolute

(4)fixed

-­‐-­‐>  一般

-­‐-­‐>  相对定位

-­‐-­‐>  绝对定位

-­‐-­‐>  固定定位

Page 36: CSS 101

定位3.(1)static -­‐-­‐>  一般

-­‐-­‐>  相对定位

-­‐-­‐>  绝对定位

-­‐-­‐>  固定定位

Page 37: CSS 101

定位3.(1)static 元素默认。影响文档流,占位-­‐-­‐>  一般

-­‐-­‐>  相对定位

-­‐-­‐>  绝对定位

-­‐-­‐>  固定定位

Page 38: CSS 101

定位3.(2)relative

Page 39: CSS 101

定位3.(2)relative 影响文档流,依然占位

Page 40: CSS 101

定位3.(3)absolute

Page 41: CSS 101

定位3.(3)absolute 不影响文档流,不占位

Page 42: CSS 101

定位3.(4)fixed

Page 43: CSS 101

定位3.(4)fixed 不影响文档流,不占位

Page 44: CSS 101

定位3.(4)fixed 不影响文档流,不占位

可以说是  position:absolute;  的一个变种。像是根据“html”来做绝对定位。

Page 45: CSS 101

定位3.(1)基于非  static  的父节点定位(2)fixed  基于页面窗口定位

(有什么是重要的)

(3)定位在  ie6/ie7  有  bug

Page 46: CSS 101

定位3.(1)基于非  static  的父节点定位(2)fixed  基于页面窗口定位

(有什么是重要的)

(3)定位在  ie6/ie7  有  bug

IE6/7正常

Page 47: CSS 101

定位3.(1)基于非  static  的父节点定位(2)fixed  基于页面窗口定位

(有什么是重要的)

(3)定位在  ie6/ie7  有  bug

IE6/7正常

作业:如何解决这个bug?

Page 48: CSS 101

Q&A

Page 49: CSS 101

Q&A

Page 50: CSS 101

浮动4.(1)none  (默认)

(2)right

(3)left

Page 51: CSS 101

浮动4.(1)none  (默认)

Page 52: CSS 101

浮动4.(1)none  (默认)

Page 53: CSS 101

浮动4.(2)right  

Page 54: CSS 101

浮动4.(2)right  

Page 55: CSS 101

浮动4.(3)left  

Page 56: CSS 101

浮动4.(3)left  

Page 57: CSS 101

浮动4.(3)left  

Page 58: CSS 101

浮动4.(3)left  

Page 59: CSS 101

浮动4.(3)left  

Page 60: CSS 101

浮动4.(3)left  

浮动会使元素脱离文档。如果浮云后面还有内容的话,元素的框会把浮动忽略,但文本仍会被浮动影响。环绕于浮动框。

Page 61: CSS 101

浮动4.(1)浮动  vs  定位(2)clearfix

(有什么是重要的)

Page 62: CSS 101

浮动4.(1)浮动  vs  定位(2)clearfix

(有什么是重要的)

/*  清理浮动  */.clearfix:after  {   visibility:hidden;   display:block;   font-­‐size:0;   content:"  ";   clear:both;   height:0;}.clearfix  {   zoom:1;  /*  for  IE6  IE7  */}

Page 63: CSS 101

浮动4.(1)浮动  vs  定位(2)clearfix

(有什么是重要的)

/*  清理浮动  */.clearfix:after  {   visibility:hidden;   display:block;   font-­‐size:0;   content:"  ";   clear:both;   height:0;}.clearfix  {   zoom:1;  /*  for  IE6  IE7  */}

作业:列举你所知道的所有浮动清理方法

Page 64: CSS 101

Q&A

Page 65: CSS 101

Q&A

Page 66: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

(2)其他游览器  HACK

Page 67: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

Page 68: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

IE特有的条件注释:<!-­‐-­‐[if  lte  IE  7]>  ...  <![endif]-­‐-­‐>

Page 69: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

.all-­‐IE{property:value\9;}

.gte-­‐IE-­‐8{property:value\0;}

.lte-­‐IE-­‐7{*property:value;}

.IE-­‐7{+property:value;}

.IE-­‐6{_property:value;}  

.not-­‐IE{property//:value;}

Page 70: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

在  IE6/7  中的大部会  bug  都是  hasLayout  引起的问题

.all-­‐IE{property:value\9;}

.gte-­‐IE-­‐8{property:value\0;}

.lte-­‐IE-­‐7{*property:value;}

.IE-­‐7{+property:value;}

.IE-­‐6{_property:value;}  

.not-­‐IE{property//:value;}

Page 71: CSS 101

兼容与HACK5.(1)IE  bug  &&  hasLayout

在  IE6/7  中的大部会  bug  都是  hasLayout  引起的问题

作业:什么是  hasLayout?找出  hasLayout  导致的  3  个  bug。并提供解决文案。

.all-­‐IE{property:value\9;}

.gte-­‐IE-­‐8{property:value\0;}

.lte-­‐IE-­‐7{*property:value;}

.IE-­‐7{+property:value;}

.IE-­‐6{_property:value;}  

.not-­‐IE{property//:value;}

Page 72: CSS 101

兼容与HACK5.(2)其他游览器  HACK

Page 73: CSS 101

兼容与HACK5.(2)其他游览器  HACK

@-­‐moz-­‐document  url-­‐prefix()  {  .firefox{property:value;}  }

@media  all  and  (-­‐webkit-­‐min-­‐device-­‐pixel-­‐ratio:0)  {          .webkit{property:value;}  }

@media  all  and  (-­‐webkit-­‐min-­‐device-­‐pixel-­‐ratio:10000),not  all  and  (-­‐webkit-­‐min-­‐device-­‐pixel-­‐ratio:0)  {          .opera{property:value;}  }

@media  screen  and  (max-­‐device-­‐width:  480px)  {          .iphone-­‐or-­‐mobile-­‐s-­‐webkit{property:value;}  }

Page 74: CSS 101

兼容与HACK5. (如何权衡)

Page 75: CSS 101

兼容与HACK5.权衡成本在浏览器被淘汰后,如何快速清理掉无用代码

可维护在资源成本和完美间平衡的向后兼容

可读省力、易记

(1)

(2)

(3)

(如何权衡)

Page 76: CSS 101

兼容与HACK5. (如何权衡)

Page 77: CSS 101

兼容与HACK5.尽量使用单独HACK 这样维护起来成本比较低,改动不会影响其他的浏览器,而一旦有浏览器淘汰,只要搜索关键字,就可以批量去掉这些代码。比如,ie6的单独hack:_padding:6px;;

向后兼容的目标:1年 你想现在的网站兼容IE10么,谁不想,但这可预见性太低了,也可以说,成本太高了。暂时没必要。不过,IE9可能要发布了,所以,选择像padding:8px\0;这样的IE8+的hack,在删掉其他代码不影响向后兼容上,会更好;并且,如果IE10出来,一旦支持这个hack,而又没有这个bug,可能删掉只影响2个浏览器,也会更方便;

尽可能省资源 你要是不考虑页面加载速度,不考虑服务器承受能力的话,那在向后兼容和淘汰的处理上可以做得很完美(从代码上),但这从某种程度上,不如不做。

(如何权衡)

Page 78: CSS 101

兼容与HACK5.尽量使用单独HACK 这样维护起来成本比较低,改动不会影响其他的浏览器,而一旦有浏览器淘汰,只要搜索关键字,就可以批量去掉这些代码。比如,ie6的单独hack:_padding:6px;;

向后兼容的目标:1年 你想现在的网站兼容IE10么,谁不想,但这可预见性太低了,也可以说,成本太高了。暂时没必要。不过,IE9可能要发布了,所以,选择像padding:8px\0;这样的IE8+的hack,在删掉其他代码不影响向后兼容上,会更好;并且,如果IE10出来,一旦支持这个hack,而又没有这个bug,可能删掉只影响2个浏览器,也会更方便;

尽可能省资源 你要是不考虑页面加载速度,不考虑服务器承受能力的话,那在向后兼容和淘汰的处理上可以做得很完美(从代码上),但这从某种程度上,不如不做。

关于兼容和HACK的权衡,更详细的介绍:http://sofish.de/1331

(如何权衡)

Page 79: CSS 101

Q&A

Page 80: CSS 101

Q&A

Page 81: CSS 101

规划你的CSS6.(1)浏览器  Reset

(2)页面  Reset

(3)模块化

Page 82: CSS 101

规划你的CSS6.(1)浏览器  Reset

Page 83: CSS 101

规划你的CSS6.(1)浏览器  Reset

/* 防止用户自定义背景颜色对网页的影响 */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,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { margin:0;padding:0;}...

Page 84: CSS 101

规划你的CSS6.(1)浏览器  Reset

/* 防止用户自定义背景颜色对网页的影响 */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,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { margin:0;padding:0;}...

推荐  YUI  的  Reset:http://developer.yahoo.com/yui/3/cssreset/

Page 85: CSS 101

规划你的CSS6.(1)浏览器  Reset

/* 防止用户自定义背景颜色对网页的影响 */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,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { margin:0;padding:0;}...

推荐  YUI  的  Reset:http://developer.yahoo.com/yui/3/cssreset/

作业:写一个属于你自己的  CSS  Reset。

Page 86: CSS 101

规划你的CSS6.(2)页面  Reset

重用:效率 + 体积整体规划

h1{font-­‐size:30px}h2{font-­‐size:20px}h3{font-­‐size:10px;}

.h1{font-­‐size:30px}

.h2{font-­‐size:20px}

.h3{font-­‐size:10px;}

Page 87: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

Page 88: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

Page 89: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

Page 90: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

Page 91: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

Page 92: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

.module{}

.module  .head{}

.module  .body{}

.module  .foot{}

Page 93: CSS 101

规划你的CSS6.(2)模块化

与 HTML 同序可维护

.module{}

.module  .head{}

.module  .body{}

.module  .foot{}

Alice  Style  Library  Guideline

你到前端来工作的时候,会让你深入了解支付宝前端部的  CSS  架构和开发流程

Page 94: CSS 101

Q&A

Page 95: CSS 101

Q&A

Page 96: CSS 101
Page 97: CSS 101

关于  CSS3  的内容周三我的另一节课再深入讲

CSS37.

Page 98: CSS 101

工具推荐8.(1)Firebug

(2)新手们去用  Dreamweaver  吧(3)css.vim

(4)CSS  Tidy

(5)内网的  alice  solutionshttp://arale.alipay.net/alice/documentation.php

(6)鸽子的点亮网页

工具只是工具,用它来提升你效率关键还是使用的人。

Page 99: CSS 101

Q&A

Page 100: CSS 101