一、选择器
- element1~element2:例p~ul(选择p元素之后的每一个ul元素)
- [attribute^=value]:例a[src^="https"](选择每一个src属性的值以"https"开头的元素)
- [attribute$=value]:例a[src$=".pdf"](选择每一个src属性的值以".pdf"结尾的元素)
- [attribute*=value]:例a[src*="44lan"](选择每一个src属性的值包含子字符串"44lan"的元素)
- E:first-of-type:例p:first-of-type(选择每个p元素是其父级的第一个p元素)
- E:last-of-type:例p:last-of-type(选择每个p元素是其父级的最后一个p元素)
- E:only-of-type:例p:only-of-type(选择每个p元素是其父级的唯一p元素)
- E:only-child:例p:only-child(选择每个p元素是其父级的唯一子元素)
- E:nth-child(n):例p:nth-child(2)(选择每个p元素是其父级的第二个子元素)
- E:nth-last-child(n):例p:nth-last-child(2)(选择每个p元素的是其父级的第二个子元素,从最后一个子项计数)
- E:nth-of-type(n):例p:nth-of-type(2)(选择每个p元素是其父级的第二个p元素)
- E:nth-last-of-type(n):例p:nth-last-of-type(2)(选择每个p元素的是其父级的第二个p元素,从最后一个子项计数)
- E:last-child:例p:last-child(选择每个p元素是其父级的最后一个子级)
:root:选择文档的根元素 - E:empty:例p:empty(选择每个没有任何子级的p元素(包括文本节点))
- E:target:例 #news:target(选择当前活动的#news元素(包含该锚名称的点击的URL))
- E:enabled:例input:enabled(选择每一个已启用的输入元素)
- E:disabled:例input:disabled(选择每一个禁用的输入元素)
- E:checked:例input:checked(选择每个选中的输入元素)
- E:not(selector):例:not(p)(选择每个并非p元素的元素)
- E::selection:匹配元素中被用户选中或处于高亮状态的部分
- E:out-of-range:匹配值在指定区间之外的input元素
- E:in-range:匹配值在指定区间之内的input元素
- E:read-write:用于匹配可读及可写的元素
- E:read-only:用于匹配设置 "readonly"(只读) 属性的元素
- E:optional:用于匹配可选的输入元素
- E:required:用于匹配设置了 "required" 属性的元素
- E:valid:用于匹配输入值为合法的元素
- E:invalid:用于匹配输入值为非法的元素
二、边框
border-image可以使用图片来绘制边框
border-radius创建圆角边框
box-shadow可以为元素添加阴影
div{
border:2px solid #e0e0e0;
border-radius:25px;
box-shadow: 10px 10px 5px #888888;
border-image:url(border.png) 30 30 round;
}
三、背景
CSS3新增了几个关于背景的属性,分别是background-clip、background-origin、background-size和background-break。
background-clip
background-clip属性用于确定背景画区,有以下几种可能的属性:
- background-clip: border-box; 背景从border开始显示
- background-clip: padding-box; 背景从padding开始显示
- background-clip: content-box; 背景显content区域开始显示
- background-clip: no-clip; 默认属性,等同于border-box
通常情况,背景都是覆盖整个元素的,利用这个属性可以设定背景颜色或图片的覆盖范围。
background-origin
background-clip属性用于确定背景的位置,它通常与background-position联合使用,可以从 border、padding、content来计算background-position(就像background-clip)。
- background-origin: border-box; 从border开始计算background-position
- background-origin: padding-box; 从padding开始计算background-position
- background-origin: content-box; 从content开始计算background-position
background-size
background-size属性常用来调整背景图片的大小,主要用于设定图片本身。有以下可能的属性:
- background-size: contain; 缩小图片以适合元素(维持像素长宽比)
- background-size: cover; 扩展元素以填补元素(维持像素长宽比)
- background-size: 100px 100px; 缩小图片至指定的大小
- background-size: 50% 100%; 缩小图片至指定的大小,百分比是相对包 含元素的尺寸
background-break
CSS3中,元素可以被分成几个独立的盒子(如使内联元素span跨越多行),background-break 属性用来控制背景怎样在这些不同的盒子中显示。
- background-break: continuous; 默认值。忽略盒之间的距离(也就是像元素没有分成多个盒子,依然是一个整体一样)
- background-break: bounding-box; 把盒之间的距离计算在内;
- background-break: each-box; 为每个盒子单独重绘背景。
div{
background:url(img_flwr.gif);
background-repeat:no-repeat;
background-size:100% 100%;
background-origin:content-box;
}
多背景
body{
background-image:url(img_flwr.gif),url(img_tree.gif);
}
四、渐变
CSS3 定义了两种类型的渐变(gradients):
- 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
- 径向渐变(Radial Gradients)- 由它们的中心定义
background: linear-gradient(direction, color-stop1, color-stop2, ...);
background: radial-gradient(center, shape size, start-color, ..., last-color);
五、文本效果
- hanging-punctuation :规定标点字符是否位于线框之外。
- punctuation-trim: 规定是否对标点字符进行修剪。
- text-align-last:设置如何对齐最后一行或紧挨着强制换行符之前的行。
- text-emphasis:向元素的文本应用重点标记以及重点标记的前景色。
- text-justify:规定当 text-align 设置为 "justify" 时所使用的对齐方法。
- text-outline:规定文本的轮廓。
- text-overflow:规定当文本溢出包含元素时发生的事情。
- text-shadow:向文本添加阴影。
- text-wrap:规定文本的换行规则。
- word-break: 规定非中日韩文本的换行规则。
- word-wrap:允许对长的不可分割的单词进行分割并换行到下一行。
六、字体
CSS3以前的版本,网页设计师不得不使用用户计算机上已经安装的字体。使用CSS3,网页设计师可以使用他/她喜欢的任何字体。当你发现您要使用的字体文件时,只需简单的将字体文件包含在网站中,它会自动下载给需要的用户。您所选择的字体在新的CSS3版本有关于@font-face规则描述。您"自己的"的字体是在 CSS3 @font-face 规则中定义的。
七、CSS3 转换和变形
2D新转换属性
- transform:适用于2D或3D转换的元素。
- transform-origin:允许您更改转化元素位置 。
2D转换方法
- matrix(n,n,n,n,n,n):定义 2D 转换,使用六个值的矩阵。
- translate(x,y)定义 2D 转换,沿着 X 和 Y 轴移动元素。
- translateX(n)定义 2D 转换,沿着 X 轴移动元素。
- translateY(n)定义 2D 转换,沿着 Y 轴移动元素。
- scale(x,y)定义 2D 缩放转换,改变元素的宽度和高度。
- scaleX(n)定义 2D 缩放转换,改变元素的宽度。
- scaleY(n)定义 2D 缩放转换,改变元素的高度。
- rotate(angle)定义 2D 旋转,在参数中规定角度。
- skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
- skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
- skewY(angle)定义 2D 倾斜转换,沿着 Y 轴。
3D转换属性
- transform: 向元素应用 2D 或 3D 转换。
- transform-origin:允许你改变被转换元素的位置。
- transform-style: 规定被嵌套元素如何在 3D 空间中显示。
- perspective: 规定 3D 元素的透视效果。
- perspective-origin:规定 3D 元素的底部位置。
- backface-visibility:定义元素在不面对屏幕时是否可见。
3D转换方法
- matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)定义 3D 转换,使用 16 个值的 4x4 矩阵。
- translate3d(x,y,z)定义 3D 转化。
- translateX(x)定义 3D 转化,仅使用用于 X 轴的值。
- translateY(y)定义 3D 转化,仅使用用于 Y 轴的值。
- translateZ(z)定义 3D 转化,仅使用用于 Z 轴的值。
- scale3d(x,y,z)定义 3D 缩放转换。
- scaleX(x)定义 3D 缩放转换,通过给定一个 X 轴的值。
- scaleY(y)定义 3D 缩放转换,通过给定一个 Y 轴的值。
- scaleZ(z)定义 3D 缩放转换,通过给定一个 Z 轴的值。
- rotate3d(x,y,z,angle)定义 3D 旋转。
- rotateX(angle)定义沿 X 轴的 3D 旋转。
- rotateY(angle)定义沿 Y 轴的 3D 旋转。
- rotateZ(angle)定义沿 Z 轴的 3D 旋转。perspective(n)定义 3D 转换元素的透视视图。
八、CSS3 过渡
- transition:简写属性,用于在一个属性中设置四个过渡属性。
- transition-property:规定应用过渡的 CSS 属性的名称。
- transition-duration:定义过渡效果花费的时间。默认是 0。
- transition-timing-function:规定过渡效果的时间曲线。默认是 "ease"。
- transition-delay:规定过渡效果何时开始。默认是 0。
div{
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;/* Safari */
-webkit-transition-property:width;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:linear;-
webkit-transition-delay:2s;
}
九、CSS3 动画
要创建CSS3动画,你需要了解@keyframes规则。@keyframes规则是创建动画。 @keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。
@keyframes 规则和所有动画属性如下:
- @keyframes:规定动画。
- animation:有动画属性的简写属性,除了 animation-play-state 属性。
- animation-name:规定 @keyframes 动画的名称。
- animation-duration:规定动画完成一个周期所花费的秒或毫秒。默认是 0。
- animation-timing-function:规定动画的速度曲线。默认是 "ease"。
- animation-delay:规定动画何时开始。默认是 0。
- animation-iteration-count:规定动画被播放的次数。默认是 1。
- animation-direction:规定动画是否在下一周期逆向地播放。默认是 "normal"。
- animation-play-state:规定动画是否正在运行或暂停。默认是 "running"。
div{
animation-name: myfirst;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
/* Safari and Chrome: */
-webkit-animation-name: myfirst;
-webkit-animation-duration: 5s;
-webkit-animation-timing-function: linear;
-webkit-animation-delay: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-play-state: running;
}
@keyframes myfirst{
0% {
background: red;
}
25% {
background: yellow;
}
50% {
background: blue;
}
100% {
background: green;
}
}
十、CSS3 多列
CSS3 的多列属性:
- column-count:指定元素应该被分割的列数。
- column-fill:指定如何填充列 。
- column-gap:指定列与列之间的间隙 。
- column-rule:所有 column-rule-* 属性的简写。
- column-rule-color:指定两列间边框的颜色 。
- column-rule-style:指定两列间边框的样式 。
- column-rule-width:指定两列间边框的厚度 。
- column-span:指定元素要跨越多少列 。
- column-width:指定列的宽度 。
- columns:设置 column-width 和 column-count 的简写。
十一、CSS3 用户界面
在 CSS3 中, 增加了一些新的用户界面特性来调整元素尺寸,框尺寸和外边框,主要包括以下用户界面属性:
- resize:指定一个元素是否应该由用户去调整大小(none | both | horizontal | vertical | inherit),如果希望此属性生效,需要设置元素的 overflow 属性,值可以是 auto、hidden 或 scroll。
- box-sizing: 允许以确切的方式定义适应某个区域的具体内容(content-box | border-box | inherit)
- outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。
十二、CSS3伸缩布局盒模型(弹性盒)
弹性盒子中常用到的属性:
- display:指定 HTML 元素盒子类型。
- flex-direction:指定了弹性容器中子元素的排列方式。
- justify-content:设置弹性盒子元素在主轴(横轴)方向上的对齐方式。
- align-items:设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
- flex-wrap:设置弹性盒子的子元素超出父容器时是否换行。
- align-content:修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐。
- flex-flow:flex-direction 和 flex-wrap 的简写。
- order:设置弹性盒子的子元素排列顺序。
- align-self:在弹性子元素上使用。覆盖容器的 align-items 属性。
- flex:设置弹性盒子的子元素如何分配空间。
十三、多媒体查询
使用媒体类型
媒体查询规则
@media all and (min-width: 800px) { ... }
// @media all 是媒体类型,也就是说,将此 CSS 应用于所有媒体类型。(min-width:800px) 是包含媒体查询的表达式,如果浏览器的最小宽度为 800 像素,则会告诉浏览器只运用下列 CSS
and 条件
@media (min-width:800px) and (max-width:1200px) and (orientation:portrait) { ... }
or 关键词
@media (min-width:800px) or (orientation:portrait) { ... }
使用 not
@media (not min-width:800px) { ... }