《The Book of CSS3》学习笔记

一.浏览器前缀

E{
    -moz-name : value;      /* Firefox */
    -ms-name : value;       /* IE */
    -o-name : value;        /* Opera */
    -webkit-name : value;   /* WebKit */
    name : value;           /* 适应未来标准方式 */
}

二.媒体查询

1.使用媒体查询的3种方式

  1. head部分

    <link href="css.css" rel="stylesheet" media="mediaType and (expr)" />
  2. css文件首行
    @import url("css.css") mediaType and (expr);
  3. 样式规则内部
    @media mediaType and (expr) {
        /* styles */
    }

2.mediaType的取值

只有all(没有意义,不如不加)、screen和print是浏览器厂商广泛支持的,可选值还有:

  • braille:盲文
  • embossed:盲文打印
  • handheld:手持设备,并不好用
  • projection:投影设备
  • speech:演讲
  • tty:显示等宽字体的设备,比如电传打字机
  • tv:电视

所以算上前三个广泛支持的,一共有10个可选值

3.expr的取值

最常用的是min-[device-]width和max-[device-]width,例如:

@media screen and (min-width : 800px) {
    /* 当浏览器窗口宽度>=800px时应用该样式 */
}
/*
 * 一般分界值:
 * 480px以下 ~ 手机浏览器
 * 800px以上 ~ 桌面浏览器
 * 480px到800px ~ 平板上的浏览器
 */

此外还有orientation方向、device-aspect-radio宽高比、device-pixel-radio像素比等等其它属性,更多信息请查看前端观察:media type与media query

4.构造复杂表达式

用and和only可以构造复杂表达式

  • (expr1) and (expr2):与
  • only (expr):用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表,更多信息请查看博客园:Media Queries详解
  • mediaType1 (), mediaType2 ():或

5.支持性

[IE9+]支持CSS3标准,但对于非标准的属性,比如device-pixel-ratio,IE11都只是部分支持,更多支持性差异请查看Can I use

三.使用网络字体

最安全的字体引入方式:

@font-face {
    font-family : "font";
    src : url("font.eot");
    src : local(" "),   /* 注意引号包裹了一个空格,也可以是其它单个字符 */
          url("font.woff") format("woff"),
          url("font.ttf") format("truetype"),
          url("font.svg#font") format("svg");
}

还有类似的方式,请查看Fontspring

好用的@font-face生成器,可以转字体格式并生成CSS代码,请查看Fontsquirrel

四.文字效果

1.立体效果

主要用text-shadow属性实现,[IE10+]支持,语法如下:

text-shadow : xOffset yOffset blur-radius color;

具体代码:

.shadow1 {
    text-shadow :
        0 -2px 3px #fff,
        0 -4px 3px #aaa,
        0 -6px 6px #666,
        0 -8px 9px #000;
}

.shadow2 {
    color : #fff;
    text-shadow :
        0 2px rgba(0, 0, 0, 0.4),
        0 4px rgba(0, 0, 0, 0.4),
        0 6px rgba(0, 0, 0, 0.4),
        0 8px 0 rgba(0, 0, 0, 0.4);
}

.shadow3 {
    background-color : #565656;
    color : #333;
    text-shadow : 0 1px 0 #777, 0 -1px 0 #000;
}

示例:

shadow1:黯羽轻扬 shadow2:黯羽轻扬 shadow3:黯羽轻扬

P.S.超大号的字体立体效果比较好,小字阴影效果看不清

2.控制文字溢出

text-overflow : clip/ellipsis ~ 截断/省略号(...),例如:

p {
    /* 要想在一行显示省略号,下面3个属性缺一不可 */
    text-overflow : ellipsis;
    white-space : nowrap;
    overflow : hidden;
}

支持性:[IE8+]支持

3.控制长单词自动换行

word-wrap : normal/break-word ~ 不换行,会顶破容器/自动换行

支持性:[IE6+]都支持,当然,只对英文单词有效,中文无效

五.边框样式

  1. border-radius:[IE9+]支持
  2. border-image:效果很诱人,[IE11+]支持,虽然可以用JQ插件勉强支持,但效果也很勉强,更多信息请查看张鑫旭博客:CSS3 border-image详解、应用及jQuery插件
  3. box-shadow:[IE9+]支持,具体用法请查看W3School:CSS3 box-shadow 属性

六.透明度

  1. opacity : 0.0 – 1.0; [IE9+]支持,IE8部分支持
  2. color : rgba(r, g, b, a); [IE9+]支持

七.渐变

线性渐变/放射渐变,[IE10+]支持,具体用法请查看CSS-Tricks

八.变换、过渡、动画

有几个很相似的属性,区别如下:

  • transform:变换。2D/3D变换、平移、旋转、倾斜、缩放
  • translate:平移。2D变换的子属性
  • transition:过渡。由事件触发,如hover、active等等
  • animation:动画。定义keyframes,再用animation应用动画

用这些东西可以实现常见的酷炫效果,例如:

  1. 过渡可以让简单动画平滑进行,比如鼠标悬停时链接文本“飘”向右边,div宽度缓慢增大至指定值等等
  2. 3D变换可以显示背面,比如鼠标进入,出现图片翻转效果
  3. 变换可以实现绶带效果,比如常见的右上角斜向fork me on githup,具体实现请查看博客园:给你的博客加上“Fork me on Github”彩带

九.flex布局

有一篇非常强大的完整教程:前端开发博客:CSS3弹性盒模型flexbox完整版教程

十.在线资源

  • Can I Use:[IE8+]以及其它浏览器对CSS/HTML5属性支持性
  • Modernizr:检测浏览器对HTML5和CSS3特性支持的JS库,优雅降级的不二选择
  • 代码生成工具:
  • 免费字体:Fontsquirrel:大量可以免费下载的英文字体
  • CSS3教程/文档:CSS3 Info,国外论坛,文章更新得比较慢,好像有点没落了
  • CSS3新技术:MDN,源码免登录下载

参考资料

  • 《THE BOOK OF CSS3》
  • 前辈博文若干
时间: 2024-08-20 08:38:37

《The Book of CSS3》学习笔记的相关文章

疯狂Android讲义 - 学习笔记(二)

Android应用的用户界面编程 Android推荐使用XML布局文件来定义用户界面 ViewGroup是一个抽象类,通常使用它的子类作为容器,ViewGroup控制其子组件的分布依赖于两个内部类: ViewGroup.LayoutParams 和 ViewGroup.MarginLayoutParams 疯狂Android讲义 - 学习笔记(二),布布扣,bubuko.com

疯狂Android讲义 - 学习笔记(六)

第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 Android的绘图应该继承View组件,并重写onDraw(Canvas canvas) 方法即可,Canvas代表了“依附”于指定View的画布.表7.1 Canvas的绘制方法 Paint代表了Canvas上的画笔,Paint类主要用于设置绘制风格,包括画笔颜色.画笔粗细.填充风格等. 7.2

疯狂Android讲义 - 学习笔记(八)

第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的过程基本相似.Service一直在后台运行,没有用户界面. 10.1.1 创建.配置Service 需要2个步骤:1 定义基础Service的子类,2 在AndroidManifest.xml文件中配置Service. Service与Activity都是从Context派生出来的,因此都可以调用C

疯狂Android讲义 - 学习笔记(五)

第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点类似于Struts2框架中的逻辑视图设计. Intent还是应用程序组件之间通信的重要媒介:数据封装成Bundle对象,Intent携带Bundle对象. 5.1 Intent对象详解 5.2 Intent的属性及intent-filter配置 5.2.1 Component属性 5.2.2 Act

疯狂Android讲义 - 学习笔记(四)

Android应用通常有多个Activity,多个Activity组成Activity栈,当前活动的Activity位于栈顶.Activity相当于Java Web开发的Servlet.当Activity处于Android应用运行时,同样受系统控制.有生命周期. 4.1 建立.配置和使用Activity 4.1.1 Activity 建立自己的Activity需要集成Activity基类,在不同的应用场景,有时也能集成Activity的子类. Activity间接或直接继承了Context.Co

疯狂Android讲义 - 学习笔记(七)

第8章 Android数据存储与IO  Java IO的数据存储可以移植到Android应用开发上来,Android系统还提供了一些专门的IO API. Android系统内置了SQLite数据库,SQLite是轻量级的,没有后台进程,整个数据库对应一个文件,这样可以非常方便的在不同设备之间移植.Android为访问SQLite提供了大量便捷的API. 8.1 使用SharedPreferences 适用于保存简单格式的数据. 8.1.1 SharedPreferences 与 Editor S

【疯狂Java讲义学习笔记】【数据类型与运算符】

[学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有float(4字节),double(8字节)Java中还有一个字符型char(2字节),本质也是整型Java中的布尔型boolean(1位) 2.类型转换分为自动类型转换和强制类型转换.自动类型转换,比如:范围小的数赋值给了范围大的数:空字符串和基本类型数值连接. 3.表达式类型的自动提升:当一个算术表达

【疯狂Java讲义学习笔记】【流程控制与数组】

[学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变,定义数组时候不能指定数组的长度.为数组分配空间的时候一定要进行初始化,数组初始化的方法有两种,第一种是静态初始化,在数组中直接为每个数组元素赋上初值,另一种是动态初始化,在初始化的时候指定数组的长度,由系统来为每个元素指定初值.注意的是两种初始化不能够同时使用,即既指定数组的长度,同时又为每个元素

疯狂Android讲义 - 学习笔记(三)

Android的事件处理 3.1 Android提供了两套事件处理机制:基于监听的事件处理.基于回调的事件处理. 3.2 基于监听的事件处理 3.2.1 监听的处理模型  主要涉及三类对象:EventSource.Event.EventListener. Android的事件处理机制是一种委派式(Delegation)事件处理方式:普通组件将整个事件处理委托给特定的对象(事件监听器),可以把所有可能的事件授权给不同的事件监听器来处理,也可以让一类事件都使用同一个事件监听器来处理. 事件监听类是一

《疯狂XML讲义》学习笔记

<疯狂XML讲义>主要分为五个部分.第一部分介绍了XML.DTD.XML Schema等基础知识,这些知识主要教读者如何定义有效的XML文档,这部分 内容是深入学习后面知识的基础,也是每个使用XML的开发者都应该掌握的 基础.第二部分介绍了CSS.XSLT和XPath等知识,通过使用CSS或XSLT,可 直接将XML文档当成视图技术.第三部分介绍了DOM.SAX.JAXP.dom4j. JDOM.XQuery和XQJ等,其中的DOM.SAX.JAXP.dom4j和JDOM都以结构化的 方式来创