图解 CSS3:核心技术与案例实战 – 廖伟华 著

讲的很详细。

读完时间:2019 年 3 月 24 日

出版时间:2015 年 1 月

2.4 动态伪类选择器

锚点伪类的设置必须遵守一个“爱恨原则”LoVe/HAte,也就是“link-visited-hover-active”。

2.5 目标伪类选择器

E:target 目生效标。伪类选择器是动态选择器,只有存在URL指向该匹配元素时,样式效果才会生效。

2.8 结构伪类选择器

通过 :nth-child(-n+5) 来选择列表中前5个子元素 li

:empty 用来选择没有任何内容的元素,这里“没有任何内容”指的是一点内容都没有,哪怕是一个空格。这个选择器用来处理动态输出内容方面非常方便。例如想高亮提示用户搜索出来的结果为空时,就可以这样使用。

2.10 伪元素

伪元素 ::selection 仅接受两个属性,一个是 background,另一个是 color

2.11 属性选择器

E[attr|=val] 为特定属性选择器,选择 attr 属性值等于 val,或以 val- 开头的所有字符串属性的元素。

a[title~=links] 属性值中的 links 是一个单词,而 a[title*=links] 中的 links 不一定是一个单词,就如上面的示例中,可以是 linksitem。换句话来说,<a title='linksitem'></a > 元素只有 a[title*=links] 匹配,但是 <a title='links item'></a > 元素,a[title~=links]a[title*=links] 都匹配。

表示选择 attr 属性值以 val 结尾的所有元素。运用在一些特殊的链接加背景图很方便,例如给 PDF、PNG、DOC 等不同文件加上不同的 ICON 图标就可以使用这个属性。

3.2 CSS3 边框颜色属性

border-color 只设置一个颜色值时,效果和 CSS1 中的 border-color 效果一样。只有设置了 n 个颜色,并且边框宽度也为 n 像素,就可以使用 CSS3 的 border-color 属性设置 n 个颜色,每种颜色显示 1 像素的宽度,如果宽度值大于颜色数量的值,最后一种颜色用于显示剩下的宽度。

3.4 CSS3 圆角边框属性

四个子属性取值和 border-radius 是一样的,只不过水平和垂直方向仅一个值,/ 前面的值为水平方向半径,后面的值为垂直方向半径。

border-radius 半径值小于或等于 border 的厚度时,元素边框内部就不具有圆角效果。

3.5 CSS3 盒子阴影属性

主要通过 box-shadow 的水平和垂直阴影的偏移量来实现,其中 x-offset 为正值时,生成右边阴影,反之为负值时,生成左边阴影;y-offset 为正值时,生成底部阴影,反之为负值时生成顶部阴影。

box-shadow 不会影响页面的任何布局。div.border 元素的边框被计算了宽度,但 div.box-shadow 的阴影被浏览器忽略不计,所以借助 box-shadow 属性的这个特性,border-shadow 用来模拟元素的边框效果可以自由地使用,但必须注意其层级关系。

边框在内阴影之上,内阴影在背景图片之上,背景图片在背景色之上,背景色在外阴影之上。

在使用多层级 box-shadow 时,还需要特别注意阴影的顺序,最先写的阴影将显示在最顶层。

4.2 CSS3 背景原点属性

background-origin 属性主要用来决定 background-position 属性的参考原点,即决定背景图片定位的起点。

IE8 下以版本 background-origin 的默认值 border,背景图片的 background-position 是从 border 开始显示背景图片。

如果将 background-attachment 设置为 fixedbackground-origin 将不起任何作用。

4.3 CSS3 背景裁切属性

在 CSS2.1 至 CSS3 中,背景在整个盒模型中,它是布满整个元素的盒子区域的,并不是从内部补白( padding )开始,只不过边框部分遮住了部分 background,但有一点需要注意,当元素的 background-repeatno-repeat 时,background-color 是从元素的边框左上角起到边框右下角止,而 background-image 却不一样,从内部补白( padding )边缘的左上角起到元素边框( border )的右下角边缘止。

4.4 CSS3 背景尺寸属性

background-size 取值为百分值时,不是相对于背景图片的尺寸大小来计算,而是相对于元素宽度来计算。

background-size:cover 配合 background-position:center 常用来制作满屏背景效果。唯一的缺点是,需要制作一张足够大的背景图片,不然在较大分辨率浏览器下会致使背景图片失真。

4.6 CSS3 多背景属性

background-color 只能设置一个,如果设置了多个 background-color 将是一种致命的语法错误( ? )。

5.3 CSS3 溢出文本属性

text-overflow 属性仅用于决定文本溢出时是否显示省略标记( ),并不具备样式定义的功能。要实现文本溢出时裁切文本显示省略标记( )效果,还需要两个属性的配合;强制文本在一行显示( white-space:nowrap )和溢出内容隐藏( overflow:hidden ),并且需要定义容器的宽度。

要让 text-overflow 属性起到实际的样式效果,必须同时具备以下三个属性,缺一不可。

  • width:明确给需要截取文本的容器设置宽度值。
  • white-space:nowrap:给文本容器设置强制不换行,让元素文本一行内显示。
  • overflow:hidden:设置容器文本溢出时隐藏。

5.4 CSS3 文本换行

pre 标签自动换行: 主要问题就是长串英文和英文单词会被断开。为了解决这个问题,可使用 word-wrap:break-wordoverflow:hidden 结合,而不是 word-wrap:break-wordwordbreak:break-all 结合。

6.2 CSS3 透明属性

opacity 却只能给整个元素设置一个透明度,并且其透明度直接会继承给其后代元素。

IE8 以下版本不支持 opacity 透明属性,但可以使用其专有的滤镜来实现 opacity 透明属性的透明效果。

6.3 CSS3 颜色模式

H:色调(Hue)。取整数值(),可以为任意整数,其中 0(或 360 或 -360)表示红色,60 表示黄色,120 表示绿色,180 表示青色,240 表示蓝色,300 表示洋红。当它们的值大于 360 时,实际的值等于该值除 360 之后的余数。例如,如果色调的值是 480,则实际的颜色值为 480 除以 360 之后得到的余数 120。

7.1 CSS 盒模型简介

paddingcontentbackground-imagebackground-color,它们四者构成了Z轴(垂直屏幕的坐标)多重层叠关系。但是 bordermarginpadding 三者之间应该是平面上的并级关系,并不能构成Z轴的层叠关系。

7.2 CSS3 盒模型属性

在 W3C 规范中,元素的 box-sizing 默认属性值是 content-box 值,如果不显式重置 box-sizing 属性值为 border-box,才能明确对元素设置一个总宽度。

7.5 CSS3 外轮廓属性

outline-offset:定义轮廓边框的偏移位置的数值,此值可以取负数值。当此参数的值为正数值,表示轮廓边框向外偏离多少个像素;当此参数的值为负数值,表示轮廓边框向内偏移多少个像素。

8.1 Flexbox 模型基础知识

若元素 display 的指定值是 inline-flex 且元素是一个浮动或绝对定位元素,则 display 的计算值是 flex

伸缩流方向主要通过 flex-direction 属性来设置,其默认值为 row。伸缩流方向和书写模式有关系,换句话说,伸缩项目根据书写模式的方向布局。

8.4 新版本 Flexbox 模型的基本使用

CSS 的 columns 在伸缩容器上没有效果;floatclearvertical-align 在伸缩项目上没有效果。

flex-flow 属性和 writing-mode 有直接的关系。当使用 writing-mode:vertical-rl 时转向垂直布局(如传统的中文、日文和韩文排版,也就是竖排),flex-flow:row 将垂直排列伸缩项目,和 column 将水平排列伸缩项目。

如果伸缩项目的任一个侧轴上的外边距为 auto,则 align-self 没有效果。

这个属性只有伸缩项目有多行时才生效,这种情况只有 displayflex-wrapwrap 时,并且没有足够的空间把伸缩项目行放在同一行中。也就是这个属性将对每一行起作用而不是每个伸缩项目。

默认状态下,伸缩项目不会收缩至比其最小内容尺寸更小,可以设置 min-widthmin-height 属性来改变这个默认状态。

9.1 CSS3 多列布局简介

columns:集成 column-widthcolumn-count 两个属性,用于实现元素多列布局效果。

column-gap:定义列间距。

9.3 CSS3 多列布局列宽属性

column-count 属性指定了最大列数。

9.8 CSS3 多列布局列高度属性

在列布局当中,有时由于内容不足,在多列之中最后列往往会没有足够内容填充。但实际制作中往往有时候的页面效果就必须让所有列都具有相同的高度效果。这个时候需要这一节将要介绍的属性 column-fill

11.2 CSS 变形属性详解

CSS3 变形中旋转、缩放、倾斜都可以通过 transform-origin 属性重置元素的原点,但其中的位移 translate() 始终以元素中心点进行位移。

11.4 CSS3 3D 变形

倾斜是二维变形,不能在三维空间变形。元素可能会在 X 轴和 Y 轴倾斜,然后转化为三维,但它们不能在Z轴倾斜。

12.2 CSS3 过渡子属性详解

transition-property 来指定过渡属性并不是所有属性都可以过渡,只有属性具有一个中点值的属性才能具备过渡效果。

transition-delay 用来指定一个动画开始执行的时间,也就是说当改变元素属性值后多长时间开始执行过渡效果,其取值为

12.3 CSS3 触发过渡

触发元素状态变化的另一种方法是使用 CSS3 媒体查询( Media Queries )。

12.4 CSS3 过渡技巧

在这段代码中,将最初的声明转为 :hover 状态,并在触发 :hover 前向元素应用的样式添加了一行新代码。现在,“开启”过渡需要 2 秒(指定为 2s linear ),“关闭”过渡需要 1 秒(指定为 1s ease-out )。

另一项关于过渡的技巧是使用无限延迟模拟永久状态更改,并且无须使用JavaScript脚本代码。

14.2 媒体特性

对于屏幕同样可以使用 min / max 对应参数,如 min-device-width 或者 max-device-width

15.2 实现 @font-face

@font-face 规则中的 font-family 与其他样式中的 font-fmaily 略有不同。在 @font-face 中的 font-family 只是声明了字体的名称(也就是自定义了字体的名称),而没有向元素中分配这种字体。而样式中的 font-family 却是显式地为元素指定字体名称。

发表评论

电子邮件地址不会被公开。 必填项已用*标注