第1章 从网站重构说起
1、所谓高质量的代码,在Web标准的思想指导下,在实现结构、样式、行为分离的基础上,还要做到三点:精简、重用、有序。精简的代码可以让文件变小,有利于客户端快速下载;重用可以让代码更易于精简,同时有助于提升开发速度;有序可以让我们更清晰地组织代码,使代码易于维护,有效应对变化。
2、Web标准是一套理论性的指导思想,它的最终目的是让代码更易于维护,标准本身是手段,而不是目的。在应用Web标准的实践中,有时候不遵循标准反而能带来更好的可维护性,如果你确信你的方案利大于弊,那么就去做吧,尽信标不如无标准,过于教条主义是一件很愚蠢的事情。
第2章 团队合作
1、前端开发工程师应该关注的知识领域:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYDO0AzM4QzMy8CX4AzMxAjMvwFduVWboNWY0RXYvwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.png)
第3章 高质量的HTML
1、标签语义对照表:
标签名 | 英文全拼 | 中文翻译 |
---|---|---|
div(无语义) | division | 分隔 |
span(无语义) | span | 范围 |
ol | ordered list | 排序列表 |
ul | unordered list | 不排序列表 |
li | list item | 列表项目 |
dl | definition list | 定义列表 |
dt | definition term | 定义术语 |
dd | definition description | 定义描述 |
h1~h6 | header 1 to header 6 | 标题1到标题6 |
p | paragraph | 段落 |
a | anchor | 锚 |
var | variable | 变量 |
pre | preformed | 预定义格式 |
blockquote | block quotation | 区块引用语 |
strong | 加重 | |
em | emphasized | |
b | bold | 粗体 |
br | break | 换行 |
font | 字体 | |
u | underlined | 下划线 |
fieldset | 域集 | |
legend | 图标 | |
caption | 标题 |
2、正确的做法:先确定HTML,确定语义的标签,再来选用合适的CSS。
3、判断网页标签语义是否良好的一个简单方法就是:去掉样式,看网页结构是否组织良好有序,是否仍然有很好的可读性。Firefox的Web Developer插件有禁用网页中CSS的功能,有了这个功能,我们可以轻松而快速地查看网页去样式后的表现。
4、当页面内标签无法满足设计需求时,才会适当添加 div 和 span 等无语义标签来辅助实现。
5、一般来说,表单域要用fieldset标签包起来,并用legend标签说明表单的用途。因为fieldset默认有边框,所以可以把fieldset的“border”设为“none”,把legend的“display”设为“none”,去掉它们的默认样式,以兼顾语义和设计两方面的要求。每个input标签对应的说明文本都要用label标签,并通过为input设置id属性,在label标签中设置“for = someId”来让说明文本和相应的input关联起来。
6、在CSS布局中table不推荐用来布局,但是在二维数据展示方面它是最好的选择。table常用的标签除了table、tr、td,还有caption、thead、tbody、tfoot和th。一般,表格标题要用caption,表头用thead包围,主体部分用tbody包围,尾部要用tfoot包围,表头和一般单元格要区分开,表头用th,一般单元格用td。
7、语义化标签应注意的一些其他问题:
(1)、尽可能少用无语义标签div和span;
(2)、在语义不明显,既可用div也可用p的地方,尽量用p,因为p默认下有上下间距,去样式后的可读性更好,对兼容特殊终端有利。
第4章 高质量的CSS
1、作者推荐一种组织CSS的方法:base.css + common.css + page.css:
(1)、base层:提供CSS reset功能和粒度最小的通用类——原子类。这一层会被所有页面所引用,是页面样式所依赖的最底层,这一层与具体UI无关。
(2)、common层:提供组件级的CSS类。
(3)、page层:网站中非高度重用的模块,可以放在 page 层里。
2、推荐的base.css内容:
/* CSS trdry */
body, div, dl, dt, dd, ul, ol, li, h1, h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,block, quote,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;}
ol,ul {list-style:none;}
capation,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;}
/*文字排版*/
.f12{font-size:12px;}
.f13{font-size:13px;}
.f14{font-size:14px;}
.f16{font-size:16px;}
.f20{font-size:20px;}
.fb{font-weight:bold;}
.fn{font-weight:normal;}
.t2{text-indent:2em;}
.lh150{line-height:150%}
.lh180{line-height:180%}
.lh200{line-height:200%}
.unl{text-decoration:underline;}
.no_unl{text-decoration:none;}
/* 定位*/
.tl{text-align:left;}
.tc{text-align:center;}
.tr{text-align:right;}
.bc{margin-left:auto;margin-right:auto;}
.fl{float:left;display:inline;}
.fr{float:right;display:inline;}
.cb{clear:both;}
.cl{clear:left;}
.cr{clear:right;}
.clearfix:after{content:'.';display:block;height:0;clear:both;visibility:hidden}
.clearfix{display:inline-block;}
*html .clearfix{height:1%}
. Clearfix{display:block;}
.vm{vertical-align:center;}
.pr{position:relative;}
.pa{position:absolute;}
.abs-right{position:absolute;right:0;}
.zoom{zoom:1}
.hidden{visibility:hidden;}
.none{display:none;}
/*长度高度*/
.w10{width:10px;}
.w20{width:20px;}
.w30{width:30px;}
.w40{width:40px;}
.w50{width:50px;}
.w60{width:60px;}
.w70{width:70px;}
.w80{width:80px;}
.w90{width:90px;}
.w100{width:100px;}
.w200{width:200px;}
.w300{width:300px;}
.w400{width:400px;}
.w500{width:500px;}
.w600{width:600px;}
.w700{width:700px;}
.w800{width:800px;}
.w{width:100%}
.h50{height:50px;}
.h80{height:80px;}
.h100{height:100px;}
.h200{height:200px;}
.h{height:100%}
/*边距*/
.m10{margin:10px;}
.m15{margin:15px;}
.m30{margin:30px;}
.mt5{margin-top:5px;}
.mt10{margin-top:10px;}
.mt15{margin-top:15px;}
.mt20{margin-top:20px;}
.mt30{margin-top:30px;}
.mt50{margin-top:50px;}
.mt100{margin-top:100px;}
.mb5{margin-bottom:5px;}
.mb10{margin-bottom:10px;}
.mb15{margin-bottom:15px;}
.mb20{margin-bottom:20px;}
.mb30{margin-bottom:30px;}
.mb50{margin-bottom:50px;}
.mb100{margin-bottom:100px;}
.ml5{margin-left:5px;}
.ml10{margin-left:10px;}
.ml15{margin-left:15px;}
.ml20{margin-left:20px;}
.ml30{margin-left:30px;}
.ml50{margin-left:50px;}
.ml100{margin-left:100px;}
.mr5{margin-right:5px;}
.mr10{margin-right:10px;}
.mr15{margin-right:15px;}
.mr20{margin-right:20px;}
.mr30{margin-right:30px;}
.mr50{margin-right:50px;}
.mr100{margin-right:100px;}
.p10{padding:10px;}
.p15{padding:15px;}
.p30{padding:30px;}
.pt5{padding-top:5px;}
.pt10{padding-top:10px;}
.pt15{padding-top:15px;}
.pt20{padding-top:20px;}
.pt30{padding-top:30px;}
.pt50{padding-top:50px;}
.pt100{padding-top:100px;}
.pb5{padding-bottom:5px;}
.pb10{padding-bottom:10px;}
.pb15{padding-bottom:15px;}
.pb20{padding-bottom:20px;}
.pb30{padding-bottom:30px;}
.pb50{padding-bottom:50px;}
.pb100{padding-bottom:100px;}
.pl5{padding-left:5px;}
.pl10{padding-left:10px;}
.pl15{padding-left:15px;}
.pl20{padding-left:20px;}
.pl30{padding-left:30px;}
.pl50{padding-left:50px;}
.pl100{padding-left:100px;}
.pr5{padding-right:5px;}
.pr10{padding-right:10px;}
.pr15{padding-right:15px;}
.pr20{padding-right:20px;}
.pr30{padding-right:30px;}
.pr50{padding-right:50px;}
.pr100{padding-right:100px;}
3、.fl{float:left;} .fr{float:right}还应设 display:inline ,防止ie6双边距Bug。例如设置margin-left:10px,在IE6下会显示为margin-left:20px。
4、 .bc{margin-left:auto;margin-right:auto }使块级元素居中,还应该设置宽度。