2018-5 - 凉经 - Mozilla Firefox Ltd - 前端工程师
第一章 解开 CSS3 的面纱
使用 CSS3 的好处
- 减少开发和维护成本:如传统实现圆角边框需要绘图、切图才能完成,而使用 css 可以直接完成
- 提高页面性能
渐进增强(Progressive Enhancement)
首先保证核心功能实现,让任何地段的浏览器可以看到站点的内容,然后考虑用高级但非必要的 CSS 和 JS 技术为现代浏览器提供更好的用户体验。
第二章 CSS3 选择器
基本选择器:所有浏览器都可用
包括通配、元素、ID、类、群组(,)
层次选择器:基本所有浏览器都可用(部分 IE7+),
包括后代、子(>)、相邻(+)、通用(~)
伪类选择器:大部分 IE8+9+ 可用
- 动态伪类选择器:锚点的 LoVe/HAte(
:link
-:visited
-:hover
-:active
),和表单元素的:focus
- 目标伪类选择器
:target
:匹配 id 为 hash 的元素 - 语言伪类选择器
:lang(language)
:匹配 lang 属性的值为 language 的元素 - UI 元素状态伪类选择器:单选复选按钮的 checked,和表单元素的 enabled、disabled
- 结构伪类选择器:根据 DOM 结构匹配元素,对已经匹配的到的元素加上 DOM 关系的限制,例如:父元素中的第几个
:nth-child(n)
、没有子元素:empty
- 否定伪类选择器
- 动态伪类选择器:锚点的 LoVe/HAte(
伪元素:IE6~8 仅支持单冒号
包括首字母
::first-letter
、首行::first-line
、开始标签之后::before
、结束标签之前::after
、选中::selection
伪元素为 DOM 树没有定义的虚拟元素。不同于其他选择器,它不以元素为最小选择单元,它选择的是元素指定内容。使用伪元素可以 为 DOM 的部分内容(并非整个 DOM)添加样式
属性选择器:基本所有浏览器都可用(IE7+)
包括拥有这个属性
[attr]
、属性值为 val 或 val-[attr|=val]
、属性值包括 val[attr~=val]
、属性值为 val[attr=val]
、属性值字符串开始为 val[attr^=val]
、属性值字符串结束 val[attr$=val]
、属性值字符串包含 val[attr*=val]
第三章 CSS3 边框
层级:边框 > 内阴影 > 背景图 > 背景色 > 外阴影
边框基本属性
border: border-width border-style border-color
CSS3 边框颜色属性(已经废弃)
CSS3 图片边框属性
border-image:
<'border-image-source'> ||
<'border-image-slice'>
[ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>
例如
border-image:
url("https://mdn.mozillademos.org/files/4127/border.png") /* source */
27 / /* slice TRBL四个方向切的大小 */
36px 28px 18px 8px / /* width TRBL四个方向边框大小 */
18px 14px 9px 4px /* outset TRBL四个方向图像边框的距离边框边缘(border-box)的距离 */
round; /* repeat 水平和垂直方向的填充方式 */
CSS3 圆角边框属性
border-radius: <length-percentage>{1,4} [ / <length-percentage>{1,4} ]?
四角顺序:TL TR BR BL
例如
border-radius: 10px 100px 60px / /* 水平四角半径 10px 100px 60px 100px*/
120px; /* 垂直四角半径 120px*/
平稳退化:对于不支持 CSS3 的浏览器采用另一套样式:使用 CSS2 中的图片模拟圆角(滑动门技术,原理是元素堆叠和背景图对其方向)
CSS3 盒子阴影属性
box-shadow: none | <shadow>#
<shadow> = inset? && <length>{2,4} && <color>?
对于<length>
- 如果只给出两个值, 这两个值将被浏览器解释为 x 轴上的偏移量
<offset-x>
和 y 轴上的偏移量<offset-y>
。 - 如果给出了第三个值, 这第三个值将被解释为模糊半径的大小
<blur-radius>
。 - 如果给出了第四个值, 这第四个值将被解释为扩展半径的大小
<spread-radius>
。
例如
box-shadow: 3px 3px red, /* 第一个阴影 x,y 偏移 3px 的阴影 */
-1em 0 .4em olive; /* 第二个阴影 x 偏移 -1em,y 偏移 0,模糊半径 0.4em 的阴影*/
box-shadow 和 border 不同,box-shadow 不是盒模型的中的属性,不会计算到宽度。
border-radius 会对阴影产生影响。
第四章 CSS3 背景
background - CSS: Cascading Style Sheets | MDN
基本属性
background: background-color background-image background-repeat background-attachment background-position
- 颜色:决定背景的颜色,会被背景图覆盖
- 图片:背景图片在背景颜色上方
- 铺放:决定背景图像的重复方式。
- 固定:决定背景图像的位置是在视口内固定,还是随着包含它的区块滚动。
- 位置:和参考原点一起决定背景图片的位置
CSS3 背景属性
- 参考原点:边框边缘 border-box | 內距边缘 padding-box | 容器边缘 content-box
- 裁切:边框边缘 border-box | 內距边缘 padding-box | 容器边缘 content-box
- 尺寸:决定背景的尺寸,
cover
(缩放背景直到铺满容器,裁剪超出部分)和contain
(缩放背景直到铺满容器,可能会留有空白)都不会使背景变形
CSS3 多背景
多个设置之间用逗号隔开,便于管理和维护。旧的方式是分别给元素设置背景进行拼凑。
第五章 CSS3 文本
CSS 文本功能主要分为三大类:字体(font),颜色(color)和文本(text)。
字体
font
属性可以用来作为 font-style
, font-variant
, font-weight
, font-size
, line-height
和 font-family
属性的简写,或将元素的字体设置为系统字体。
语法:
[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar
where
<font-variant-css21> = [ normal | small-caps ]
font-style
:控制斜体font-variant
:控制大小写等(在 CSS 2.1 中font-variant
只可以是normal
和small-caps
)font-weight
:控制字体宽度font-size
:控制字体大小line-height
:控制行高font-family
:设置使用的字体,多个由逗号分隔- 系统字体:设置字体为系统的标题、对话框、菜单等字体
文本
CSS 文本定义了如何执行文本操作,如换行,调整间距和对齐,空白符处理和文本转换。
overflow-wrap
(别名是word-wrap
):控制超出包裹盒的文字换行word-break
:控制换行符是否出现在超出包裹盒的地方white-space
:控制空白符的显示
注意:对于长的英文单词的处理最好用overflow-wrap: break-word
,而不是word-break: break-all
,因为后者会将普通英文语句中的单词也断开影响阅读。
文本装饰
CSS 文本装饰用于定义与文本修饰相关的功能,例如下划线,文本阴影和强调标记。
其他
color
:控制文本颜色text-overflow
:控制超出包裹盒文本的处理(剪切、显示省略符号或显示自定义字符串)
第六章 CSS3 颜色特性
网页给人留下的第一印象不是设计和内容而是颜色。
Web 页面的安全色
用 16 进制的 00、33、66、99、CC、FF 表达三原色(RGB)中的每一种。Web 设计师不需要一味局限于安全色,而是应搭配好安全色和非安全色的使用,这样才不会让用户看到的效果和设计制作的效果相差太远。
色彩模式
- RBG 色彩模式:红绿蓝三色混合
- CMYK 色彩模式:颜料的青(Cyan)、洋红(Magenta)、黄(Yellow)、黑(Black)混合,用于出版印刷
- 索引色彩模式:已经被限制在 256 种颜色的模式,主要用于 Web 页面安全色和透明 GIF 图片
- 灰度模式:制作黑白图片时使用
- 双色调模式:在黑白图像中加入颜色、使色调更加丰富,主要的用途是使用尽量少的颜色表现尽量多的颜色层次以减少印刷成本
- 位图模式:只用黑白两种颜色
CSS3 透明属性
使用opacity
属性。注意
- alpha 通道是用来对文本、边框、背景色等设置透明度,而 opacity 是对整个元素设置透明度。
- opacity 小于 1 会创建新的堆叠上下文,同时其内部元素都会在在这个透明度的基础上渲染。
CSS3 颜色模式
- RGBA:在 RBG 基础上增加了透明度 alpha 通道
- HSL:基于人对颜色的心理感受的一种颜色模式,使用色泽(Hue)、饱和度(Saturation)和亮度(Brightness)表示颜色。
- HSLA:再 HSL 基础上
使用 HSL 的优势:可以将颜色设置为一个值,当需要调整颜色亮度和浓度时直接调整 L 和 S 即可,而使用 RGB 进行这种调整很困难。
第七章 CSS3 盒模型
- 盒类型:
block
、inline
、inline-block
、flex
等 - 盒属性:宽高、内边距、边框、外边距
W3C 标准盒模型和box-sizing
W3C 标准盒模型是这样的:
- 元素空间尺寸:内容 + 内边距 + 边框 + 外边距
- 元素大小:内容(height 和 width 属性指定的大小)+ 內边距 + 边框
这种方式不将內距和边框算入元素的大小很不方便,而 IE 很早的版本(IE6 以下)有一种好的方案是将内边距和边框纳入元素的大小中,这样当修改内边距和边框大小时元素的代销就不会发生变化了。
那么现代浏览器有办法使用这种计算方法么?
当然可以,那就是将box-sizing
属性设置为border-box
。(默认是content-box
使用 W3c 标准的计算方法)
如果大家” 见 NB 之物必细察其纹理 “就能发现很多前端 UI 库直接就全局都用border-box
了
* {
box-sizing: border-box;
}
CSS3 内容溢出属性
使用overflow:
属性控制 x 轴和 y 轴的内容溢出
CSS3 自由缩放属性
使用resize: none | both | horizontal | vertical | block | inline
控制元素是否可在 x 轴和 y 轴自由缩放。
注意 resize
无法设置在:
- Inline 元素
overflow
为visible
的 Block 元素
CSS3 轮廓属性
轮廓(outline)的呈现效果和边框(border)很像不过,轮廓和边框完全不同:
- 轮廓不属于盒模型(不会计算入元素空间尺寸占用网页布局空间)
- 轮廓无法单独设置各个方向
- 对于行内元素的行为不同,例如:border & outline
第八章 CSS3 伸缩布局盒模型
Flexbox 的语法有旧版本、混合版本、新版本三种版本。2012 年 9 月推出了新版本。
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
PS: 现在的标准是flex-shrink
负值无效,书中的 “flex-shrink
的负值同样生效” 不符合现在的标准。
第九章 CSS3 多列布局
用来实现类似报纸杂志这样的多列布局。
column: <'column-width'> || <'column-count'>
column-rule
:设置列分隔符的属性,用法类似border
break-after
、break-before
和break-inside
:设置如何在盒子之前、之后、中间设置 page、column 或 region 断开。
PS: 当设置的列宽足够大,以至于无法分列显示时,就算设置了列数也按一列显示,并且自动调整列宽等于元素宽度。
第十章 CSS3 渐变
色标
在创建渐变的过程中可以指定多个中间颜色值,这个值称为色标。
兼容方案
对于旧的 IE 可以使用 IE 的滤镜兼容。
线性渐变
径向渐变
重复渐变
repeating-linear-gradient
和 repeating-radial-gradient
圆锥渐变
conic-gradient
:在只有 Chrome 支持,扇形的渐变。
第十一章 CSS3 变形
transform
transfrom
属性指一组转换函数。如果这个属性的值不为none
,则会创建一个层叠上下文。
transfrom: none | <transform-list>
scale()
函数设置负值会先翻转、然后缩放
transform-origin
指定元素的变形的中心点位置,默认为 x 轴和 y 轴的 50% 处。
transform-style
设置元素的子元素是位于 3D 空间中还是平面中。
perspective
指定了观察者与 z=0 平面的距离,使具有三维位置变换的元素产生透视效果。 z>0 的三维元素比正常大,而 z<0 时则比正常小,大小程度由该属性的值决定。
perspective-origin
指定了观察者的位置,用作 perspective
属性的消失点。
backface-visibility
指定当元素背面朝向观察者时是否可见。
第十二章 CSS3 过渡
transition CSS 属性是 transition-property
,transition-duration
,transition-timing-function
和 transition-delay
的一个简写属性。
标准语法
transition: <single-transition>#
where
<single-transition> = [ none | <single-transition-property> ] || <time> || <timing-function> || <time>
注:书中的过渡函数step()
现在已经改为steps()
技巧
auto
属性的过渡非常诡异,应该避免使用- 需要计算的属性会触发隐式过渡
- 在 “关闭 " 时设置较短时间的过渡比较好
- 使用超长延时的过渡可以作出 “永久过渡”(像是用 JS 添加了 class 一样)
- 设置
transform: translate(0)
可以开启硬件加速
第十三章 CSS3 动画
动画和过渡不同的是,动画可以像 Flash 一样通过关键帧控制动画的每一步。
动画播放过程中 CSS 属性完全由 animation 控制,等待和结束后的样式根据 animation-fill-mode 判断。
@keyframe
由多个百分比构成,范围是0%~100%
(from 是 0% 的简写,to 是 100% 的简写)
第十四章 媒体特性与 Responsive 设计
媒体查询
使用
- HTML: link 和 source 标签中使用
- JS: 使用
Window.matchMedia()
创建 mql 对象,并使用MediaQueryList.addListener()
添加媒体查询状态改变事件 - CSS: 在 @import 和 @media 中使用
语法
- 设备类型(Media types):
screen
、print
等 - 媒体特性(Media features):
min-width
、color
等
Responsive 布局
术语
- 流体网格:使用百分比控制格子大小
- 弹性图片:使用百分比控制图片大小
- 媒体查询:根据设备尺寸进行样式适配
- 屏幕分辨率:用户使用设备浏览 Web 页面时的分辨率
- 主要断点:Web 页面宽度的临界点
meta 标签
在 Responsive 布局用来定义初始的宽度和缩放,一般使用<meta name="viewport" content="width=device-width, initial-scale=1.0">
这个设置。
meta 标签还可用于设置字符集等其他元数据。
第十五章 嵌入 Web 字体
@font-face
指定自定义字体名称和字体资源位置等信息。
@font-face {
[ font-family: <family-name>; ] ||
[ src: <src>; ] ||
[ unicode-range: <unicode-range>; ] ||
[ font-variant: <font-variant>; ] ||
[ font-feature-settings: <font-feature-settings>; ] ||
[ font-variation-settings: <font-variation-settings>; ] ||
[ font-stretch: <font-stretch>; ] ||
[ font-weight: <font-weight>; ] ||
[ font-style: <font-style>; ]
}
where
<family-name> = <string> | <custom-ident>+
优势
- 适用性:比雪碧图使用起来方便
- 可拓展性:可以通过 font-size 设置大小
- 灵活性:文字效果可以应用到图标
- 兼容性:支持所有现代浏览器,包括低版本 IE
字体格式
.ttf
TrueType.otf
OpenType.woff
WebOpenFontFormal.eot
EmbeddedOpenType(供旧版 IE 使用).svg
SVG
2018-5 - 凉经 - Mozilla Firefox Ltd - 前端工程师的更多相关文章
- 凉经-Mozilla Firefox Ltd-前端工程师
北京谋智火狐信息技术有限公司(北京市东城区建国门华润大厦 17 层)过去面试的时候感觉电梯好神奇啊!一边的电梯是直达 18 层以上的,我按了 18 层准备到了再往下走一层,一个老司机和我说要做另一边的 ...
- 凉经-Mozilla Firefox Ltd
北京谋智火狐信息技术有限公司(北京市东城区建国门华润大厦17层)过去面试的时候感觉电梯好神奇啊!一边的电梯是直达18层以上的,我按了18层准备到了再往下走一层,一个老司机和我说要做另一边的1-17层的 ...
- 使用Mozilla Firefox插件RestClient测试Http API接口
RESTClient是Mozilla Firefox一个用于测试http请求插件.在火狐附加组件里面查询并安装,非常小巧,界面非常简单,使用非常的方便,看下面这张图你就全明白了,希望对新手有帮助! 1 ...
- Mozilla Firefox的各级版本链接
Mozilla Firefox的各级版本链接 及语言 https://ftp.mozilla.org/pub/firefox/releases/
- chrome google mozilla firefox bookmarks import export
chrome导出导入bookmarks 1◆ google帐号 自己申请,脑补 2◆ google访问 脑补 suggestion Lantern 3◆ 步骤 4◆ 导入 sample ...
- 火狐加载用户配置文件 "C:\XXX\Mozilla Firefox\firefox.exe" http://192.168.1.1:8080 -profile ../kkk
"C:\XXX\Mozilla Firefox\firefox.exe" http://192.168.1.1:8080 -profile ../kkk $("#clic ...
- 建站手册-浏览器信息:Mozilla Firefox 浏览器
ylbtech-建站手册-浏览器信息:Mozilla Firefox 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_firefo ...
- Mozilla Firefox 68 正式发布下载:对刚Chrome
Mozilla Firefox 68开源和跨平台Web浏览器现在正式发布,可以下载适用于GNU/Linux,Mac和Windows平台的Firefox 68了. Firefox 68网络浏览器现在可以 ...
- 50个实用的jQuery代码段让你成为更好的Web前端工程师
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
随机推荐
- 使用Servlet实现验证码
没有验证码带来的问题 对特定用户不断登录破解密码. 对某个网站创建账户. 对某个网站提交垃圾数据. 对某个网站刷票. 通过验证码由用户肉眼识别其中的验证码信息,从而区分用户是人还是计算机. 定义: ...
- npm工作流 与webpack 分同环境配置
npm:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html process.env.npm_lifecycle_event process. ...
- Restful 架构方式的 web service
现在公司项目用的apache wink 搭建的web service ,感觉挺好用的.顺便学习一个这种架构方式 . 个人理解apache 实现Restful 架构方式技术有两种,如果有其他新的知识或不 ...
- java 返回输入中出现次数最多的字符串
举例输入: abc abc de de de fghi fghi 应该返回: de 代码: static List<String> func(String str) { String[] ...
- Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)
菜鸟方案 “/”与swap两个分区就可以应付绝大多数的应用 常用方案 分为3个区 1. 挂载点/:主分区:安装系统和软件:大小为30G:分区格式为ext4: 2. 挂载点/home:逻辑分区:相当于“ ...
- Codeforces Round #575 (Div. 3) E. Connected Component on a Chessboard(思维,构造)
E. Connected Component on a Chessboard time limit per test2 seconds memory limit per test256 megabyt ...
- mysql慢查询分析
mysql慢查询分析 Posted: 29. 08. 2014 | Author: zdz | Category: mysql MySQL 慢查询日志分析 1. pt-query-digest分析慢查 ...
- day2计算机基础作业题
1.什么是编程? 编程就是程序员用某种编程语言的语法格式将将自己脑中想让计算机做的事情写成文件.所以编程的结果就是一堆的文件,一堆文件就是的程序. 2.计算机的组成: 1).CPU 其中CPU又分为控 ...
- [每日一讲] Python系列:字符串(下)
字符串的常见操作 """ DATA STRUCTURE Container: Sequence -- String String is immutable.If stri ...
- java——hasCode是如何对应到数组索引的?为什么HashMap的initailCapacity要设置成2的n次幂?为什么要树化hashMap?
一: 源代码是这样实现的: static final int hash(Object var0) { int var1; return var0 == null ? 0 : (var1 = var0. ...