CSS3实用指南 初读笔记
1.7.1 浏览器前缀
当一个浏览器实现了一个新的属性、值或者选择器,而这个特性还不是处于候选推荐标准状态的时候,在属性前面会添加一个前缀以便于它的渲染引擎识别。
CSS属性的浏览器前缀:
前缀 渲染引擎 使用该引擎的浏览器
- -khtml- KHTML konqueror
- -ms- Trident Internet
- -moz- Mozilla Firefox、Camino、Flock
- -o- Presto Opera、Opera Mobile、Opera Mini、Nintendo Wii
- -webkit- Webkit Safari、Safari on iOS、Chrome、Android
使用浏览器前缀属性的时候,应该总是包含无前缀的属性并将它放在最后。这就可以确保当前浏览器可以支持无前缀的属性时,这个属性就能够生效。前缀属性因为位置靠前从而会被靠后的无前缀属性所重载,这才是正确的行为。
使用Modernizr检测CSS3支持
使用JavaScript模拟CSS3
在html标签上添加IE版本类
<!--[if lt IE 7]><html lang="en" class="ie6"><![endif]-->
<!--[if IE 7]><html lang="en" class="ie7"><![endif]-->
<!--[if IE 8]><html lang="en" class="ie8"><![endif]-->
<!--[if IE 9]><html lang="en" class="ie9"><![endif]-->
<!--[if gt IE 9]><html lang="en" class="ie6"><![endif]-->
<!--[if lt IE7]><html lang="en"><![endif]-->
<!--[if !IE]>--><html lang="en"><!--<![endif]-->
放在html标签上的原因是: html标签不会阻塞IE8下面的样式表的并行下载。
2.2 包裹长文本
word-wrap属性控制着文本是否可在词内断开(与text-wrap属性不同,它控制着词间如何折行)。word-wrap属性的取值可以是normal(默认值)或break-word.
除了强制断开过长URL的需求,你还可以将word-wrap应用在如下场景中:
- 防止数据表格因为过宽而溢出或破坏布局。
- 使pre标签里的代码片段折行显示。
2.3.1 圆角的实现
border-radius是实现圆角的W3C标准语法,它指定所有四个圆角的半径是20像素,该语法目前可被Opera、Chrome、Safari 5 和 IE 9 支持。Firefox和Safari 4及之前的版本则分别使用-moz-border-radius和-webkit-border-radius属性。
除了气泡对话框之外,你还可以将border-radius用于如下场景:
- 按钮(button)
- 标签栏(tab)
- 对话框(Dialog box)
- 圆形标记(Circular badge)
- 柱状图(Bar chart)
- 表情图(Smiley face)
2.3.2 增加气泡的尾巴
1. 利用边框做出三角形:将一个元素的width和height设置为0,然后为它设置较粗的边框,并将其中三个边框的颜色设为透明。
2. 生成尾巴:content="" + ::before/after + position: relative && absolute + top/right/bottom/left
2.3.3 利用RGBA或HSLA实现半透明背景
一个增加层次感的好方法是使背景变成半透明。通过显露一点页面背景的方式,你就能使界面显得更有层次,仿佛半透明的元素是悬浮于背景之上。我认为这种效果与气泡对话框非常相衬,因为"气泡"总是轻飘飘的。
HSLA代表“色调、饱和度、亮度和Alpha透明度”(Hue-Saturation-Lightness-Alpha);
甜甜圈取色器[ http://www.workwithcolor.com/hsl-color-picker-01.htm ] ;
HSLA关键的8个色调值:
- 0或360 = 红色 (red)
- 30 = 橙色 (orange)
- 60 = 黄色 (yellow)
- 120 = 绿色 (green)
- 180 = 青色 (cyan)
- 240 = 蓝色 (blue)
- 270 = 紫色 (purple)
- 300 = 紫红色 (magenta)
得到你想要的色调值之后,如果想让它浓一点或淡一点就调整饱和度,想让它更暗一些或亮一些就调亮度。获取同色系的不同颜色或是对颜色进行微调是很简单的。
opacity属性的作用是使整个元素都半透明,包括前景内容,而不仅仅是背景。
2.3.4 无图实现色彩渐变
给气泡对话框的背景增加一些渐变效果可进一步增强它的圆润感和立体感。
1. Firefox及W3C的语法
background-image: -moz-linear-gradient(
hsla(0, 0%, 100%, .6),
hsla(0, 0%, 100%, 0) 30px
);
函数里我们指定了渐变的起始色(hsla(0, 0%, 100%, .6))、终止色(hsla(0, 0%, 100%, 0))和终止色的位置(30px)。由于并未指定渐变的起始点及其角度,Firefox将会使用默认值,即从顶部开始垂直向下进行渐变。
这里,我没有增加-moz-前缀,也能够在我的chrome浏览器上显示正常的结果。
2. Webkit的语法
background-image: -webkit-gradient(linear,
0 0, 0 30,
from(hsla(0, 0%, 100%, .6)),
to(hsla(0, 0%, 100%, 0))
);
要使用Webkit的语法来实现渐变,首先得指定渐变的类型是线性还是径向,并将其作为参数传入-webkit-gradient函数使用,而不是使用linear-gradient和radial-gradient这两个独立的函数。
然后需要指定水平和垂直两个方向上的起始点位置,紧接着是终止点的位置。它的值可以是关键字(如top或left)、百分数或像素值。
指定了起始点和终止点之后,我们还需要指定起始色和终止色。和Firefox的语法一样,你可以使用任意颜色格式,但需要注意的是必须把每个颜色包裹在from()和to()里。
除了用CSS3渐变来实现高光效果外,你还可以将它用于如下场景:
- 使某些物体的表面看起来像按钮一样呈现弧面。
- 使一些东西看起来更有光泽,像是金属、玻璃或是CD。
- 实现倒影效果。
- 实现光晕(Vignette)效果,使图片或盒容器的边缘像旧照片似的逐渐变暗。
- 为背景图层添加一个渐变来实现淡入淡出效果。
- 等高多列布局。
2.3.5 无图实现盒状阴影
在CSS3里,使用box-shadow属性实现盒容器的阴影。在该属性中,你需要设置阴影相对于盒容器水平及垂直方向上的偏移值、阴影的颜色,还可以选择性地设置模糊半径(Blur Radius)和扩展半径(Spread Radius)。
-webkit-box-shadow: 1px 1px 2px hsla(0, 0%, 0%, .3);
-moz-box-shadow: 1px 1px 2px hsla(0, 0%, 0%, .3);
box-shadow: 1px 1px 2px hsla(0, 0%, 0%, .3);
每个属性的第一个1px表示相对于盒容器的水平偏移,它告诉浏览器将阴影从盒容器的边界向右移动1像素。第二个值1px则是垂直偏移,它将阴影向下移动1像素。你可以使用负值来使阴影向左和向上移动。
第三个值2px表示模糊半径,它指定有多少像素的阴影将被拉伸。一个很大的值将使阴影更模糊更朦胧,而取值为0将使它有锐利的边界。
第四个值是阴影的颜色,在本例中是拥有30%不透明度的黑色。
除了为盒容器实现基本的阴影之外,你还可以将它用于下列场景:
- 发光效果(不设置位置偏移,并可以选择性地设置一个正数值的扩展半径)。
- 3D效果的按钮。
- 为盒容器模拟多层边框(使用多组box-shadows值,并将模糊半径均设为0以使阴影有清晰的边界)。
- 模拟渐变效果(使用box-shadow的inset关键词来实现内阴影)。
2.3.6 无图实现文字阴影
text-shadow属性需要设置阴影的颜色以及它在水平和垂直两个方向上的位置偏移。还可以设置模糊半径,留空则取默认值0;
除了用text-shadow为文本实现基本的阴影之外,还可以将它用于如下场景:
- 发光文字。
- 凸版,镌刻,镂空或浮雕效果的文字(在一边使用淡色阴影,在另一边则使用深色阴影)。
- 火焰文字(层叠使用黄色、橙色和红色阴影)。
- 模糊文字(使用与文字相同颜色的阴影,或干脆使用透明文字)。
- 将文字层叠形成3D效果(使用多层阴影实现)。
2.4.1 什么是“变形”
变形是一些效果的集合,每个效果都被称作变形函数(Transform Function),他们可以操纵盒容器发生旋转、缩放和倾斜等变化;
变形函数有很多:
- translate在指定X和Y坐标后,能将物体移动到新的位置。取正值是向右、下方移动;反之,取负值则向左、上方移动。
- scale能将物体缩放X倍。指定负数值将使物体发生翻转。要使物体变小,请取0至1之间的小数。如果你指定了一对用逗号分隔开来的数,那么前一个数就是横轴的缩放值,而后一个则用来在纵轴上进行缩放。
- rotate可将物体旋转X角度(单位是deg)。正数值按顺时针方向旋转;负数值则按逆时针旋转。
- skew能使物体按X角度发生倾斜(单位也是deg)。用逗号分隔的前后两个值分别控制横轴或纵轴的倾斜度,如果仅使用一个值,那么默认纵轴的倾斜度为0;
你可以在同一个transform属性中使用多个变形函数,并用空格将它们分隔开,变形将按你书写的顺序进行。
你还可以用transform-origin属性来指定变形发生的原点,取值可以是关键词、数值或百分数。默认值是center。
CSS3实用指南 初读笔记的更多相关文章
- JavaScript权威指南(第六版) 初读笔记
JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...
- CSS 设计指南(第3版) 初读笔记
第1章 HTML标记与文档结构 关于<title>标签:搜索引擎会给<title>标签中的文字内容赋予很高的权重.而且这些文字也会作为网页标题出现在搜索结果列表中. 无论你想了 ...
- 《HTML5与CSS3权威指南》读书笔记(下册)—CSS3篇
大而全的CSS3 API类型书,并带有一些实用案例讲解,层次分明分类明确,新增技术都做了详情介绍.个人觉得如果在细节和文字表达上再下些功夫会更出色,其中部分内容如:rem.Media Queries网 ...
- 《CSS3使用指南》读书笔记
一.CSS3的来龙去脉 1.CSS3的新特性: 1)不依赖图片的视觉效果 2)盒容器变形 3)独一无二的字体 4)强大的选择器 5)过渡与动画 6)媒体信息查询 7)多列布局 2.CSS标准发布分5个 ...
- 《HTML5与CSS3权威指南》读书笔记(上册)—HTML5篇
豆瓣上的评分少且评价不太好,阅读当中发现几处刊物上的小问题,不过线下口碑貌似不错,基本上人手一本 上册五百多页,主讲H5,分为标签,本地存储,离线应用程序,新的API,获取地理位置信息标签包含表单,C ...
- [初读笔记] Cloud Migration Research: A Systematic Review (TCC, 2013)
Pooyan Jamshidi, Aakash Ahmad, Claus Pahl, "Cloud Migration Research: A Systematic Review," ...
- node.js入门经典 初读笔记
2.1 npm是什么 npm(Node Package Manager)是Node.js的包管理器.它允许开发人员在Node.js应用程序中创建.共享并重用模块. 2.3 安装模块 npm insta ...
- 锋利的jQuery(第二版) 初读笔记
window.onload(): 必须等待网页中所有的内容加载完毕后(包括图片)才能执行. $(document).ready(): 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没 ...
- 深入浅出JavaScript(中文版)__莫里森 初读笔记
创建变量,使用关键字var; 创建常量,使用关键字const; 大驼峰用于对象,小驼峰用于变量和函数. 在试图相加数字时意外做了字符串相连,是种常见的JavaScript错误.如果想做数字相加,请确定 ...
随机推荐
- Summer training round2 #1
A:水 B:求两个三角形之间的位置关系:相交 相离 内含 ①用三个点是否在三角形内外判断 计算MA*MB.MB*MC.MC*MA的大小 若这三个值同号,那么在三角形的内部,异号在外部 #incl ...
- 用IDesktopWallpaper接口设置png壁纸
#include <Windows.h> #include <string> #include "Shobjidl.h" int main() { std: ...
- JavaScript基础——JavaScript入门(笔记)
JavaScript入门(笔记) JavaScript是一种轻量级.解释型的Web开发语言,该语言系统不是很庞杂,简单易学.由于所有现代浏览器都已嵌入JavaScript引擎,JavaScript源代 ...
- 【JZOJ5430】【NOIP2017提高A组集训10.27】图
题目 有一个n个点的无向图,给出m条边,每条边的信息形如\(<x,y,c,r>\) 给出q组询问形如\(<u,v,l,r>\) 接下来解释询问以及边的意义 询问表示,一开始你在 ...
- 写在centos7 最小化安装之后
1.最小化安装之后首先解决联网问题(https://lintut.com/how-to-setup-network-after-rhelcentos-7-minimal-installation/) ...
- javascript中继承方式及优缺点(二)
一.原型链继承 方式1: 原型链继承 (1)流程: 1.定义父类型构造函数. 2.给父类型的原型添加方法. 3.定义子类型的构造函数. 4.创建父类型的对象赋值给子类型的原型. 5 ...
- matplotlib中plt.scatter()参数详解
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, l ...
- webpack3升级webpack4
cnpm i webpck@4 webpack-cli -D cnpm i webpack-cli -D cnpm update npm WARN deprecated extract-text-we ...
- TL;DR
英文文章中,偶尔会出现TL;DR 的字符. TL;DR=>Too Long; Don’t Read=>太长了,读不下去=>长话短说 一般用于在文章开头先给出干货.
- webDriver各版本对应
chromeDriver http://npm.taobao.org/mirrors/chromedriver/ http://chromedriver.storage.googleapis.com/ ...