外观
CSS3 - 新增内容
2937字约10分钟
2024-05-09
颜色:RGBA,HSLA 模式
- RGBA:
background-color: rgba(179, 133, 133, 0.5); - HSLA:
background-color: hsla(120, 60%, 70%, 0.3)hsla(hue, saturation, lightness, alpha):hue:色相,色彩的基本属性,平常所说的颜色。saturation:饱和度,色彩的纯度,越高色彩越纯,低则逐渐变灰,取值 0-100%lightness:亮度,增加亮度,颜色会向白色变化,减少会向黑色变化。取值 0-100%,alpha:透明度,取值 0-1 之间,代表透明度。
文字阴影 text-shadow
text-shadow: h-shadow v-shadow blur color;
h-shadow:必需。水平阴影的位置,允许负值v-shadow:必需。垂直阴影的位置,允许负值blur:可选,模糊的距离color:可选,阴影的颜色
边框阴影 box-shadow
box-shadow: h-shadow v-shadow blur color;
h-shadow:必需。水平阴影的位置,允许负值v-shadow:必需。垂直阴影的位置,允许负值blur:可选,模糊的距离color:可选,阴影的颜色
圆角 border-radius
border-radius:左上 右上 右下 左下;
盒子模型 Box
盒子模型包括:外边框 margin ,边框 border ,内边框 padding ,和内容 content 。
背景相关
background-size:指定背景图片的大小
- 语法:
background-size: length|percentage|cover|contain;length:设置图片宽高,第一个值宽度第一个值高度。如只有一个值,第二个值设置为 autopercentage:百分比设置宽高。cover:保持图像纵横比将图像缩放成完全覆盖背景定位区域的最小大小contain:保持图像纵横比将图像缩放成完全覆盖背景定位区域的最大大小
background-origin:规定图片相对于什么位置来定位
- 语法:
background-origin: padding-box|border-box|content-box;padding-box:背景相对于内边框来定位(默认)boder-box:背景相对于边框盒来定位content-box:背景相对于内容框来定位
background-clip:规定背景的绘制区域
- 语法:
background-clip: border-box|padding-box|content-box;padding-box:背景被剪切到边框盒boder-box:背景被剪切到内边框盒content-box:背景被剪切到内容框
渐变 linear-gradient
线性渐变
- 语法:
background-image: linear-gradient(direction, color-stop1, color-stop2, ...);direction:方向角度 单位 degcolor-stop1,color-stop2,...:渐变颜色,可以有多个颜色节点
重复线性渐变:
background-image: repeating-linear-gradient(red, yellow 10%, green 20%);径向渐变
- 语法:
background-image: radial-gradient(shape size at position, start-color, ..., last-color);shape:形状,可以是circle或ellipsesize:渐变大小:参数有closest-side,farthest-side,closest-corner,farthset-corner
例如:
background-image: radial-gradient(circle, red, yellow, green);
background-image: radial-gradient(circle at 100% 100%, red, yellow, green);
background-image: radial-gradient(closest-side at 60% 55%, red, yellow, black);重复径向渐变
background-image: repeating-radial-gradient(red, yellow 10%, green 15%);过度 Transition
transition:过渡允许在规定时间内平滑的改变属性值
- 过渡可以连写,一个
transition写多个过渡。 transition:过渡简写,一个属性中设置四个过渡属性transition-property:规定应用过渡的的 CSS 属性名称transition-duration:定义过渡效果花费的时间、transition-timing-function:规定过渡效果的时间曲线。linear,ease,ease-in,ease-out,ease-in-out,cubic-bezoer(n,n,n,n)
transition-delay:规定过渡效果何时开始,以秒或者毫秒计
自定义动画 Animation
animation:
- 语法:
animation: name duration timing-function delay iteration-count direction fill-mode play-state;animation-name:指定要绑定到选择器的关键帧的名字animation-duration:动画指定需要多少秒或多少毫秒完成animation-timing-function:设置动画如何完成一个周期animation-delay:设置动画在启动前的延迟间隔animation-iteration-count:定义动画播放的词素animation-direction:是否应该轮流反向播放动画animation-fill-mode:当动画不播放时,要应用到元素的样式animation-play-state:指定动画是否再整运行或已暂停@keyframes:创建动画,指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式
@keyframes myfirst {
from {
background: red;
}
to {
background: yellow;
}
}
@-webkit-keyframes myfirst /* Safari 与 Chrome */ {
from {
background: red;
}
to {
background: yellow;
}
}使用:
animation: myfirst 5s;
-webkit-animation: myfirst 5s; /* Safari 与 Chrome */媒体查询 Media
- 针对不同的媒体类型(根据屏幕大小)定义不同的样式。
- 语法:
@media mediatype and|not|only (media feature) {
/* css */
}mediatype:媒体类型print:打印机和打印预览screen:用于电脑屏幕,平板电脑,智能手机speech:应用于屏幕阅读器等发声设备
/* 如果文档宽度小于 300 像素则修改背景颜色(background-color): */
@media screen and (max-width: 300px) {
body {
background-color: lightblue;
}
}边框图片 border-image
语法:border-image: source slice width outset repeat|initial|inherit;
转换 transform
transform:
2D 转换:
translate(X,Y):从当前位置移动元素到指定位置rotate(deg):根据给定角度旋转元素scale(X,Y):增加或减少元素默认值 1scaleX(X):增加或减少元素宽度scaleY(Y):增加或减少元素高度skewX(X):使元素沿 X 轴倾斜给定角度skewY(Y):使元素沿 Y 轴倾斜给定角度skew(X,Y):使元素沿 X,Y 轴倾斜给定角度matrix():把所有 2D 变换合成为一个matrix(scaleX(),skewY(),skewX(),scaleY(),translateX(),translateY())
3D 转换:
rotate3d(x,y,z,angle)rotateX(deg):使元素绕其 X 轴旋转rotateY(deg):使元素绕其 Y 轴旋转rotateZ(deg):使元素绕其 Z 轴旋转translate3d(x,y,z)translateX(x):移动用于 X 轴translateY(y):移动用于 Y 轴translateZ(z):移动用于 Z 轴scale3d(x,y,z):3D 缩放scaleX(x)scaleY(y)scaleZ(z)
transform 其他相关样式
transform-style:指定嵌套元素是怎样在三维空间中呈现。flat:所有子元素再 2D 平面呈现preserve-3d:表示所有子元素再 3D 空间中呈现
transform-origin:设置元素转换中心点- X 轴
- Y 轴
- Z 轴
字体图标 iconfont
特殊的一种字体,通过这种字体显示给用户的就像一个个图片一样 优点:不会变形,加载速度快。可以使用 CSS 来控制它的大小和颜色。
以 iconfont 为例:
unicode 引用
unicode 是字体再网页端最原始的应用方式
- 优点:
- 兼容行最好,支持 ie6+,及所有现代浏览器
- 支持按字体的方式去动态调整图表达大小颜色
- 缺点:
- 不支持多色,多色图标会自动取色
- 使用步骤:
- 第一步:拷贝项目下面生成的
font-face
- 第一步:拷贝项目下面生成的
@font-face {
font-family: "iconfont";
src: url("iconfont.eot");
src:
url("iconfont.eot?#iefix") format("embedded-opentype"),
url("iconfont.woff") format("woff"),
url("iconfont.ttf") format("truetype"),
url("iconfont.svg#iconfont") format("svg");
}
//支持网络地址
@font-face {
font-family: "iconfont";
src: url("//at.alicdn.com/t/font.eot");
src:
url("//at.alicdn.com/t/font.eot?#iefix") format("embedded-opentype"),
url("//at.alicdn.com/t/font.woff2") format("woff2"),
url("//at.alicdn.com/t/font.woff") format("woff"),
url("//at.alicdn.com/t/font.ttf") format("truetype"),
url("//at.alicdn.com/t/font.svg#iconfont") format("svg");
}- 第二步:定义使用 iconfont 的样式
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
}- 第三步:挑选相应图标并获取字体编码,应用于页面
<i class="iconfont">3</i>font-class 引用
font-class 是 unicode 使用方式的一种变种,主要是解决 unicode 书写不直观,语意不明确的问题。
- 与 unicode 相比,优点:
- 兼容性良好,支持 ie8+,及所有现代浏览器。
- 相比于 unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
- 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 unicode 引用。
- 缺点:
- 本质上还是使用的字体,所以多色图标还是不支持的。
- 使用步骤:
- 第一步:拷贝项目下面生成的 fontclass 代码
//at.alicdn.com/t/font_8d5l8fzk5b87iudi.css- 第二步:挑选相应图标并获取类名,应用于页面
<i class="iconfont icon-xxx"></i>symbol 引用
全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。
- 这种用法其实是做了一个 svg 的集合,与上面两种相比具有如下特点:
- 支持多色图标了,不再受单色限制。
- 通过一些技巧,支持像字体那样,通过 font-size,color 来调整样式。
- 缺点:
- 兼容性较差,支持 ie9+,及现代浏览器。
- 浏览器渲染 svg 的性能一般,还不如 png。
- 使用步骤:
- 第一步:拷贝项目下面生成的 symbol 代码:
//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js- 第二步:加入通用 css 代码(引入一次就行):
<style type="text/css">
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
</style>- 第三步:挑选相应图标并获取类名,应用于页面:
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-xxx"></use>
</svg>弹性布局 Flex
flex:CSS3 的一种全新布局
提供一种更有效的方式来对一个容器中的子元素进行排列,对其和分配空白空间
flex-direction:指定子元素在父容器中的位置(用来调整主轴的方向)row:横向从左到右排列(默认)row-reverse:翻转横向排列,从后往前排column:纵向排列column-reverse:反转纵向排列,从后往前排
justif-content:内容对其,元素在弹性容器上的对其方式(主轴)flex-start:默认值,所有元素在开始位置紧挨着填充flex-end:所有元素在尾部紧挨着填充center:容器内元素居中紧挨着布局space-between:平均分布在改行上,两边紧挨着容器space-around:平均分布在改行上,两边留有一半的间隔空间
align-items:设置元素在侧轴方向的对其方式flex-start:默认值,侧轴的开始位置对其flex-end:侧轴的结束位置对其center:中间位置对其baseline:基线对其,不会拉伸高度stretch:拉伸对其,子元素不用设置高度
flex-wrap:指定弹性盒子的子元素换行方式nowrap:默认,不换行。会溢出容器wrap:换行wrap-reverse:反转 wrap 排列
align-content:子元素在侧轴的对其方式(多行模式)stretch- 默认。各行将会伸展以占用剩余的空间。flex-start- 各行向弹性盒容器的起始位置堆叠。flex-end- 各行向弹性盒容器的结束位置堆叠。center-各行向弹性盒容器的中间位置堆叠。space-between-各行在弹性盒容器中平均分布。space-around- 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。
align-self:自身在侧轴方向的对齐方式auto:如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与flex-start等效。其它情况下,该值将参与基线对齐。stretch:如果指定侧轴大小的属性值为auto,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照min/max-width/height属性的限制。
弹性布局子元素属性:
order:用整数来定义排列书序,数值小的排在前面margin:设置为auto时可以在两轴上水平居中flex:指定弹性子元素如何分配空间
