前端的指导方针---css篇
英语是渣渣,想学英语,又不想花钱报培训班。看不懂的文章,还是翻译一下留着自己看吧。
引自 : https://github.com/bendc/frontend-guidelines
HTML
语义
HTML5提供了语义元素的目的是精确描述的内容很多。确保你的词汇丰富的效益。
<!-- 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>
确保你了解你所使用的元素的语义。更糟糕的是在一个错误的方式使用语义元素比保持中立。
<!-- bad -->
<h1>
<figure>
<img alt=Company src=logo.png>
</figure>
</h1> <!-- good -->
<h1>
<img alt=Company src=logo.png>
</h1>
简洁
保持代码的简洁。忘记你的旧的XHTML的习惯。
<!-- 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> <!-- 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>
(head,body标签都省略掉)
可访问性
可访问性不应该是一个事后的想法。你不一定作为一名 WCAG 专家来优化您的网站,你可以立即开始通过修复小事带来巨大的改变。
例如:
1适当的学习使用alt属性
2确保你的链接和按钮标志等这样标记的(不是<div class=”按钮>暴行)
3不专门依赖于颜色来传达信息
4明确标记的表单控件
<!-- bad -->
<h1><img alt="Logo" src="logo.png"></h1> <!-- good -->
<h1><img alt="My Company, Inc." src="logo.png"></h1>
语言
在定义语言和字符编码是可选的,它的建议总是声明在文档级别的,即使他们在你指定的HTTP头。支持UTF-8字符编码的任何其他。
<!-- bad -->
<!doctype html>
<title>Hello, world.</title> <!-- good -->
<!doctype html>
<html lang=en>
<meta charset=utf-8>
<title>Hello, world.</title>
</html>
性能
除非有一个正当的理由需要在你的内容之前加载脚本,否则不要阻止你的网页的渲染。如果你的样式表内容比较多,就需要在开始的时候延迟加载,在一个单独的样式表里第二次声明加载。两次HTTP请求有一个明显的加载缓慢,但速度感知是最重要的因素。
<!-- 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分号分隔,始终把它作为一个终结者。
/* bad */
div {
color: red
} /* good */
div {
color: red;
}
盒模型
盒模型在理想的情况下应该跟整个文档是相同的。通配符* {box-sizing: border-box;}是好的,没有必要的话,就不要在特定的元素上更改默认的盒模型。
/* bad */
div {
width: 100%;
padding: 10px;
box-sizing: border-box;
} /* good */
div {
padding: 10px;
}
流
没必要的话,就不要更改默认属性。就这样保持元素在正常文档流。例如,去除一张图片下面的白色空间不应该改变它的默认显示:
/* bad */
img {
display: block;
} /* good */
img {
vertical-align: middle;
}
同样,如果你能避免,就不要让文档脱离正常文档流了。(绝对定位 脱离正常文档流)
/* bad */
div {
width: 100px;
position: absolute;
right:;
} /* good */
div {
width: 100px;
margin-left: auto;
}
定位
在css中有很多方法来定位元素。除非你想尝试把自己限制在属性/值下。
按照优先级顺序:
display: block;
display: flex;
position: relative;
position: sticky;
position: absolute;
position: fixed;
选择器
减少选择器与DOM紧密耦合。
/* bad */
div:first-of-type :last-chid > p ~ * /* good */
div:first-of-type .info
/* bad */
img[src$=svg], ul > li:first-child {
opacity:;
} /* good */
[src$=svg], ul > :first-child {
opacity:;
}
不要让值和选择器硬覆盖。减少id的使用,避免!important的使用。
/* bad */
.bar {
color: green !important;
}
.foo {
color: red;
} /* good */
.foo.bar {
color: green;
}
.foo {
color: red;
}
重写
重写样式选择器和调试更加困难了。尽可能的避免。
/* bad */
li {
visibility: hidden;
}
li:first-child {
visibility: visible;
} /* good */
li + li {
visibility: hidden;
}
继承
不重复的样式声明是可以继承的。
/* bad */
div h1, div p {
text-shadow: 0 1px 0 #fff;
} /* good */
div {
text-shadow: 0 1px 0 #fff;
}
简洁
保持代码的简洁。使用速记属性,避免使用多个属性时。
/* 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;
}
语言
多使用英语而不是数学语言
/* bad */
:nth-child(2n + 1) {
transform: rotate(360deg);
} /* good */
:nth-child(odd) {
transform: rotate(1turn);
}
浏览器私有前缀
积极地干掉过时的浏览器私有前缀前缀,如果需要使用,就在标准属性之前插入。
/* 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;
}
动画
避免不透明度和变换的属性进行动画处理。
/* bad */
div:hover {
animation: move 1s forwards;
}
@keyframes move {
100% {
margin-left: 100px;
}
} /* good */
div:hover {
transition: 1s;
transform: translateX(100px);
}
单位
当你可以用没有单位的值。如果你使用相对单位选择rem。喜欢秒超过毫秒。
/* bad */
div {
margin: 0px;
font-size: .9em;
line-height: 22px;
transition: 500ms;
} /* good */
div {
margin:;
font-size: .9rem;
line-height: 1.5;
transition: .5s;
}
颜色
如果需要使用透明的颜色,就用rgba,否则,就使用十六进制格式。
/* bad */
div {
color: hsl(103, 54%, 43%);
} /* good */
div {
color: #5a3;
}
制图
当资源可以用css实现的时候,避免http请求。
/* bad */
div::before {
content: url(white-circle.svg);
} /* good */
div::before {
content: "";
display: block;
width: 20px;
height: 20px;
border-radius: 50%;
background: #fff;
}
Hacks
不使用
/* bad */
div {
// position: relative;
transform: translateZ(0);
} /* good */
div {
/* position: relative; */
will-change: transform;
}
个人翻译水平实在太渣,有问题希望有大神来指点出来,跪谢。。。
前端的指导方针---css篇的更多相关文章
- web前端面试试题总结---css篇
CSS 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(m ...
- YUI前端优化之javascript,css篇
三.JavaScript和CSS篇 JavaScript和CSS也是我们页面中经常用到的内容,对它们的优化也提高网站性能的重要方面:CSS:把样式表置于顶部避免使用CSS表达式(Expression) ...
- 前端高频面试题 CSS篇
通过从网上看到的面经,总结的一些高频的前端CSS面试题,有很多不会,于是找资料,并通过代码实现,自己提供了一些参考答案. 目录 1.怎样会产生浮动? 2.如何清除浮动? 3.盒子模型,以及IE和其他浏 ...
- 前端开发面试题 — css篇
1.介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(mar ...
- web前端面试试题总结---html篇
HTML Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器 ...
- web前端面试试题总结---javascript篇
JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...
- BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正 ...
- 面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇
BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内 ...
- BAT及各大互联网公司前端笔试面试题--Html,Css篇
注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5931347.html )作者:wangwen896 整理分享出来希望更多的前端er共同进步吧,不仅适用 ...
随机推荐
- laravel之伪造跨站请求保护CSRF实现机制
Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击.跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 为每个活跃用户 ...
- http以及http协议简单理解
HTTP协议是超文本传输协议的缩写,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议:HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查询结果等)HTTP作 ...
- XtraBackUp 热备份工具
是一款强大的在线热备份工具 备份的过程中,不锁表 使用percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm yum源安装: 1.安装Percona的库: ...
- Spring上传报错413
SpringMVC上传文件报错413 笔者今天工作时,运维的同事反馈我们上线不久的项目上传文件过大时,总是提示上传失败. 场景重现一下,发现报错信息显示413:Request entity too l ...
- AT2663 Namori Grundy
题目描述: luogu 题解: 好多细节,比如说每个点有且仅有一条入边. 所以说这个图一定是一个基环外向树. 考虑只是一个环的情况,我们可以发现,当环长为偶数时我们可以$01$交替染色,但环长为奇数时 ...
- [模板] Exgcd
求解一组ax+bc=gcd(a,b) #include<iostream> #include<cstdio> using namespace std; int exgcd(in ...
- cobbler 无人值守-安装
环境准备 准备两台主机,如centos6和centos7 centos7当作server服务器 关闭selinux 关闭防火墙 安装 cobbler包光盘里是没有的,要配置epel源,这里就说怎么配置 ...
- Linux组和提权
目 录 第1章 组命名管理** 1 1.1 group组信息和密码信息 1 1.1.1 /etc/group 组账户信息 1 1.1.2 /etc/gshadow 组密码信息 ...
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- 条款4:确定对象被使用前已被初始化(Make sure that objects are initialized before they're used)
其实 无论学何种语言 ,还是觉得要养成先声明后使用,先初始化再使用. 1.永远在使用对象之前先将其初始化. 内置类型: 必须手工完成. 内置类型以外的:使用构造函数完成.确保每一个构造函数都将对象的一 ...