CSS3

173 阅读10分钟

新边框属性

属性说明CSS
border-image设置所有边框图像的速记属性。3
border-radius一个用于设置所有四个边框- *-半径属性的速记属性3
box-shadow附加一个或多个下拉框的阴影3

圆角

border-radius25px;
border-radius: 15px 50px
border-radius: 15px 50px 30px
border-radius: 15px 50px 30px 5px //top-left top-right bottom-right bottom-left
border-radius50px/15px //创建椭圆边角

背景

  • background-image
  • background-size //规定背景图片的尺寸
  • background-origin //指定了背景图像的位置区域
  • background-clip //背景剪裁属性是从指定位置开始绘制
background-image: url(img_flwr.gif), url(paper.gif);
background-position: right bottom, left top; 
background-repeat: no-repeat, repeat;

background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat; //允许你在元素上添加多个背景图像

渐变

  • 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
  • 径向渐变(Radial Gradients)- 由它们的中心定义
background-image: linear-gradient(#e66465, #9198e5);
background-image: radial-gradient(red, yellow, green);
background-image: repeating-radial-gradient(red, yellow 10%, green 15%);//重复的径向渐变:

CSS3 渐变也支持透明度(transparent),可用于创建减弱变淡的效果。

为了添加透明度,我们使用 rgba() 函数来定义颜色节点。rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明。

文本效果

  • text-shadow
  • box-shadow
  • text-overflow
  • word-wrap
  • word-break

字体

@font-face

<style> 
@font-face { 
    font-family: myFirstFont; 
    src: url(sansation_light.woff);
    font-weight:bold;
    } 
div { font-family:myFirstFont; } 
</style>

2D转换 transform

  • translate()
  • rotate()
  • scale()
  • skew()
  • matrix()

3D转换 transform

3D转换属性

属性描述CSS
transform向元素应用 2D 或 3D 转换。3
transform-origin允许你改变被转换元素的位置。3
transform-style规定被嵌套元素如何在 3D 空间中显示。3
perspective规定 3D 元素的透视效果。3
perspective-origin规定 3D 元素的底部位置。3
backface-visibility定义元素在不面对屏幕时是否可见。3
transform: rotateY(130deg);

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 转换元素的透视视图。

过渡 transition

过渡属性

下表列出了所有的过渡属性:

属性描述CSS
transition简写属性,用于在一个属性中设置四个过渡属性。3
transition-property规定应用过渡的 CSS 属性的名称。3
transition-duration定义过渡效果花费的时间。默认是 0。3
transition-timing-function规定过渡效果的时间曲线。默认是 "ease"。3
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;
    }
//综合
transition: width 1s linear 2s; 
/* Safari */ 
-webkit-transition:width 1s linear 2s;

动画

@keyframes

//定义(一)
@keyframes myfirst { 
    from {background: red;} 
    to {background: yellow;} 
    }
@-webkit-keyframes myfirst /* Safari 与 Chrome */ 
    {   from {background: red;} 
        to {background: yellow;} 
    }
//定义(二)
@keyframes myfirst { 
    0% {background: red;} 
    25% {background: yellow;}
    50% {background: blue;}
    100% {background: green;} 
} 
@-webkit-keyframes myfirst /* Safari 与 Chrome */ 
{ 
    0% {background: red;} 
    25% {background: yellow;} 
    50% {background: blue;} 
    100% {background: green;} 
}
//使用  
div { 
    animation: myfirst 5s linear 2s infinite alternate; 
    /* Safari 与 Chrome: */ 
    -webkit-animation: myfirst 5s linear 2s infinite alternate;
    }
属性描述CSS
@keyframes规定动画。3
animation所有动画属性的简写属性。3
animation-name规定 @keyframes 动画的名称。3
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。3
animation-timing-function规定动画的速度曲线。默认是 "ease"。3
animation-fill-mode规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。3
animation-delay规定动画何时开始。默认是 0。3
animation-iteration-count规定动画被播放的次数。默认是 1。3
animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。3
animation-play-state规定动画是否正在运行或暂停。默认是 "running"。3

多列

属性描述
column-count指定元素应该被分割的列数。
column-fill指定如何填充列
column-gap指定列与列之间的间隙
column-rule所有 column-rule-* 属性的简写
column-rule-color指定两列间边框的颜色
column-rule-style指定两列间边框的样式
column-rule-width指定两列间边框的厚度
column-span指定元素要跨越多少列
column-width指定列的宽度
columnscolumn-width 与 column-count 的简写属性。
//eg:
div {  
    -webkit-column-count3/* Chrome, Safari, Opera */  
    -moz-column-count3/* Firefox */  
    column-count3;  
}

用户界面

属性说明CSS
appearance允许您使一个元素的外观像一个标准的用户界面元素3
box-sizing允许你以适应区域而用某种方式定义某些元素3
icon为创作者提供了将元素设置为图标等价物的能力。3
nav-down指定在何处使用箭头向下导航键时进行导航3
nav-index指定一个元素的Tab的顺序3
nav-left指定在何处使用左侧的箭头导航键进行导航3
nav-right指定在何处使用右侧的箭头导航键进行导航3
nav-up指定在何处使用箭头向上导航键时进行导航3
outline-offset外轮廓修饰并绘制超出边框的边缘3
resize指定一个元素是否是由用户调整大小3
div { resize:both; overflow:auto; } //div下角带有一个可拖拉改变div大小的箭头,用户可自行改变div大小

div { 
    box-sizing:border-box; 
    -moz-box-sizing:border-box; /* Firefox */ 
    width:50%; float:left; 
} //border-box 边框边距计入总width;content-box 不包含边框边距

图片

1.圆角图片

img {  
    border-radius8px;  
}

2.缩略图 -- 使用 border 属性来创建缩略图

img {  
    border1px solid #ddd;  
    border-radius4px;  
    padding5px;  
}  
  
<img src="paris.jpg" alt="Paris">

3.响应式图片

img {  
    max-width100%;  
    height: auto;  
}

4.图片文本 -- 利用position定位图片文本
5.卡片式图片
6.图片滤镜 -- CSS filter 属性用为元素添加可视效果 (例如:模糊与饱和度)
7.图片 Modal(模态)
(1)首先,我们使用 CSS 来创建 modal 窗口 (对话框), 默认是隐藏的。 (2)然后,我们使用 JavaScript 来显示模态窗口,当我们点击图片时,图片会在弹出的窗口中显示:

按钮 和 分页

定义宽度样式颜色等

框大小

一、不使用 CSS3 box-sizing 属性

默认情况下,元素的宽度与高度计算方式如下:

width(宽) + padding(内边距) + border(边框) = 元素实际宽度

height(高) + padding(内边距) + border(边框) = 元素实际高度
这就意味着我们在设置元素的 width/height 时,元素真实展示的高度与宽度会更大(因为元素的边框与内边距也会计算在 width/height 中)。

二、使用 CSS3 box-sizing 属性

CSS3 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。

如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中

弹性盒 display

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意:  弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

1.flex-direction 属性指定了弹性子元素在父容器中的位置。
flex-direction: row | row-reverse | column | column-reverse
2.justify-content属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐
justify-content: flex-start | flex-end | center | space-between | space-around
3.align-items 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式
align-items: flex-start | flex-end | center | baseline | stretch
4.flex-wrap属性用于指定弹性盒子的子元素换行方式
flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;
5.align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐
align-content: flex-start | flex-end | center | space-between | space-around | stretch
6.弹性子元素属性
(1) 排序 order --用整数值来定义排列顺序,数值小的排在前面。可以为负值。
(2) 对齐 margin
(3) 居中 --使用弹性盒子,居中变的很简单,只需要设置 margin: auto; 可以使得弹性子元素在两上轴方向上完全居中:
(4) align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式
align-self: auto | flex-start | flex-end | center | baseline | stretch
(5) flex 属性用于指定弹性子元素如何分配空间
flex: auto | initial | none | inherit |  [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

多媒体查询

CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想: 取代了查找设备的类型,CSS3 根据设置自适应显示。

媒体查询可用于检测很多事情,例如:

  • viewport(视窗) 的宽度与高度
  • 设备的宽度与高度
  • 朝向 (智能手机横屏,竖屏) 。
  • 分辨率
语法
@media not|only mediatype and (expressions) { CSS 代码...; }
  • not:  not是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)。
  • only:  用来定某种特别的媒体类型。对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。
  • all:  所有设备,这个应该经常看到。
CSS3 多媒体类型
描述
all用于所有多媒体类型设备
print用于打印机
screen用于电脑屏幕,平板,智能手机等。
speech用于屏幕阅读器
简单实例
@media screen and (max-width: 480px) { //在屏幕可视窗口尺寸小于 480 像素的设备上修改背景颜色
    body { background-color: lightgreen; } 
    }