本帖最后由 月亮是我掰弯的 于 2016-10-14 16:39 编辑
HTML
HTML5为我们提供了很多旨在精确描述内容的语义元素。确保你可以从它丰富的词汇中获益。 [HTML] 纯文本查看 复制代码 <!-- bad --><div id="main">
<div class="article">
<div class="header">
<h1>Blog post</h1>
<p>Published: <span>21st Feb, 2015</span></p>
</div>
<p>…</p>
</div></div><!-- good --><main>
<article>
<header>
<h1>Blog post</h1>
<p>Published: <time datetime="2015-02-21">21st Feb, 2015</time></p>
</header>
<p>…</p>
</article></main> 你需要理解你正在使用的元素的语义。用一种错误的方式使用语义元素比保持中立更糟糕 [HTML] 纯文本查看 复制代码 <!-- bad --><h1>
<figure>
<img alt=Company src=logo.png>
</figure></h1><!-- good --><h1>
<img alt=Company src=logo.png></h1> 简洁保持代码的简洁。忘记原来的XHTML习惯。 [HTML] 纯文本查看 复制代码 <!-- bad --><!doctype html><html lang=en>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8" />
<title>Contact</title>
<link rel=stylesheet href=style.css type=text/css />
</head>
<body>
<h1>Contact me</h1>
<label>
Email address: <input type=email placeholder=you@email.com required=required />
</label>
<script src=main.js type=text/javascript></script>
</body></html> [HTML] 纯文本查看 复制代码 <!-- good --><!doctype html><html lang=en>
<meta charset=utf-8>
<title>Contact</title>
<link rel=stylesheet href=style.css>
<h1>Contact me</h1>
<label>
Email address: <input type=email placeholder=you@email.com required>
</label>
<script src=main.js></script></html> 可访问性可访问性不应该是以后再想的事情。提高网站不需要你成为一个WCAG专家,你完全可以通过修复一些小问题,从而造成一个巨大的变化,例如: 学习正确使用alt 属性 确保链接和按钮被同样地标记(不允许<div>) 不专门依靠颜色来传递信息 明确标注表单控件
[HTML] 纯文本查看 复制代码 <!-- bad --><h1><img alt="Logo" src="logo.png"></h1><!-- good --><h1><img alt="My Company, Inc." src="logo.png"></h1>
语言当定义语言和字符编码是可选择的时候,总是建议在文档级别同时声明,即使它们在你的HTTP标头已经详细说明。比任何其他字符编码更偏爱UTF-8。 [HTML] 纯文本查看 复制代码 <!-- bad --><!doctype html><title>Hello, world.</title><!-- good --><!doctype html><html lang=en>
<meta charset=utf-8>
<title>Hello, world.</title></html> 性能除非有正当理由才能在内容前加载脚本,不要阻塞页面的渲染。如果你的样式表很重,开头就孤立那些绝对需要得样式,并在一个单独的样式表中推迟二次声明的加载。两个HTTP请求显然比一个慢,但是感知速度是最重要的因素。 [HTML] 纯文本查看 复制代码 <!-- bad --><!doctype html><meta charset=utf-8><script src=analytics.js></script><title>Hello, world.</title><p>...</p><!-- good --><!doctype html><meta charset=utf-8><title>Hello, world.</title><p>...</p><script src=analytics.js></script>
CSS分号虽然分号在技术上是CSS一个分隔符,但应该始终把它作为一个终止符。 [HTML] 纯文本查看 复制代码 /* bad */div { color: red
}/* good */div { color: red;
} 盒子模型盒子模型对于整个文档而言最好是相同的。全局性的* { box-sizing: border-box; }就非常不错,但是不要改变默认盒子模型的特定元素,如果可以避免的话。 [HTML] 纯文本查看 复制代码 /* bad */div { width: 100%; padding: 10px; box-sizing: border-box;
}/* good */div { padding: 10px;
} 流不要更改元素的默认行为,如果可以避免的话。元素尽可能地保持在自然的文档流中。例如,删除图像下方的空格而不改变其默认显示: [HTML] 纯文本查看 复制代码 /* bad */img { display: block;
}/* good */img { vertical-align: middle;
} 同样,如果可以避免的话,不要关闭元素流。 [HTML] 纯文本查看 复制代码 /* bad */div { width: 100px; position: absolute; right: 0;
}/* good */div { width: 100px; margin-left: auto;
} 定位在CSS中有许多定位元素的方法,但应该尽量限制以下属性/值。按优先顺序排列: [HTML] 纯文本查看 复制代码 display: block;display: flex;position: relative;position: sticky;position: absolute;position: fixed; 选择器最小化紧密耦合到DOM的选择器。当选择器有多于3个结构伪类,后代或兄弟选择器的时候,考虑添加一个类到你想匹配的元素。 [HTML] 纯文本查看 复制代码 /* bad */div:first-of-type :last-child > p ~ */* good */div:first-of-type .info 当你不需要的时候避免过载选择器。 [HTML] 纯文本查看 复制代码 /* bad */img[src$=svg], ul > li:first-child { opacity: 0;
}/* good */[src$=svg], ul > :first-child { opacity: 0;
} 特异性不要让值和选择器难以覆盖。尽量少用id,并避免!important。 [HTML] 纯文本查看 复制代码 /* bad */.bar { color: green !important;
}.foo { color: red;
}/* good */.foo.bar { color: green;
}.foo { color: red;
} 覆盖覆盖样式使得选择器和调试变得困难。如果可能的话,避免覆盖样式。 [HTML] 纯文本查看 复制代码 /* bad */li { visibility: hidden;
}li:first-child { visibility: visible;
}/* good */li + li { visibility: hidden;
} 继承不要重复可以继承的样式声明。 [HTML] 纯文本查看 复制代码 /* bad */div h1, div p { text-shadow: 0 1px 0 #fff;
}/* good */div { text-shadow: 0 1px 0 #fff;
} 简洁保持代码的简洁。使用简写属性,没有必要的话,要避免使用多个属性。 [HTML] 纯文本查看 复制代码 /* bad */div { transition: all 1s; top: 50%; margin-top: -10px; padding-top: 5px; padding-right: 10px; padding-bottom: 20px; padding-left: 10px;
}/* good */div { transition: 1s; top: calc(50% - 10px); padding: 5px 10px 20px;
} 语言英语表达优于数学公式。 [HTML] 纯文本查看 复制代码 /* bad */:nth-child(2n + 1) { transform: rotate(360deg);
}/* good */:nth-child(odd) { transform: rotate(1turn);
} 浏览器引擎前缀果断地删除过时的浏览器引擎前缀。如果需要使用的话,可以在标准属性前插入它们。 [HTML] 纯文本查看 复制代码 /* bad */div { transform: scale(2); -webkit-transform: scale(2); -moz-transform: scale(2); -ms-transform: scale(2); transition: 1s; -webkit-transition: 1s; -moz-transition: 1s; -ms-transition: 1s;
}/* good */div { -webkit-transform: scale(2); transform: scale(2); transition: 1s;
} 动画视图转换优于动画。除了opacity 和transform,避免动画其他属性。 [HTML] 纯文本查看 复制代码 /* bad */div:hover { animation: move 1s forwards;
}
@keyframes move {
100% { margin-left: 100px;
}
}/* good */div:hover { transition: 1s; transform: translateX(100px);
} 单位可以的话,使用无单位的值。如果使用相对单位,那就用rem 。秒优于毫秒。 [HTML] 纯文本查看 复制代码 /* bad */div { margin: 0px; font-size: .9em; line-height: 22px; transition: 500ms;
}/* good */div { margin: 0; font-size: .9rem; line-height: 1.5; transition: .5s;
} 颜色如果你需要透明度,使用rgba。另外,始终使用十六进制格式。 [HTML] 纯文本查看 复制代码 /* bad */div { color: hsl(103, 54%, 43%);
}/* good */div { color: #5a3;
} 绘画当资源很容易用CSS复制的时候,避免HTTP请求。 [HTML] 纯文本查看 复制代码 /* bad */div::before { content: url(white-circle.svg);
}/* good */div::before { content: ""; display: block; width: 20px; height: 20px; border-radius: 50%; background: #fff;
} Hacks不要使用Hacks。 [HTML] 纯文本查看 复制代码 /* bad */div { // position: relative;
transform: translateZ(0);
}/* good */div { /* position: relative; */
will-change: transform;
}
|