CSS3

CSS3

CSS3私有前缀

针对于一些不同版本的浏览器支持,CSS3需要在测试中的属性上加入前缀

在实际开发中,开发者并不需要关心这个前缀问题,如果真的需要支持旧版浏览器,webpack会自动帮我们加含有前缀的属性


CSS3新增长度单位

在css3中,除了rem、em单位之外,还存在vw和vh长度单位

vw利用视窗的width作为参考,wh利用视窗的height作为参考

wmax利用width和height数值大的作为参考

vmin利用width和height数值小的作为参考

在移动端常用这些长度单位


CSS3中新增的选择器和颜色

对于这两个知识点,在前面学习css的过程中已经讲完了


CSS3盒子模型

box-sizing

box-sizing属性有两个可选值,一个是content-box,这个也是默认值,使用的是标准盒模型,其盒子模型的width和height是内容区的宽高

还有一个属性值是border-box,使用怪异盒模型,其盒子模型的width和height是盒子总大小

使用怪异盒模型后,再配置border和padding属性时就会向内扩张,影响内容区大小而不是盒子总大小


resize

使用resize属性可以控制是否允许用户调节元素尺寸

  • none:不允许用户调整大小(默认)
  • both:用户可以调节元素的宽度和高度
  • horizontal:用户可以调节元素的宽度
  • vertical:用户可以调节元素的高度

box-shadow

box-shadow属性可以给元素添加阴影

  • h-shadow:水平方向的阴影,必填项,可以为负值
  • v-shadow:垂直方向的阴影,必填项,可以为负值
  • blur:可选项,模糊距离
  • spread:可选项,阴影的外延值
  • color:可选项,改变阴影的颜色
  • inset:可选项,将外部阴影改为内部阴影

opacity

opacity属性可以调整元素的透明度,其中可选值为0(完全透明)到1(完全不透明)

rgba和opacity是有区别的,opacity是设置该元素及其内容的透明度

rgba是单独调整颜色的透明程度


CSS3背景属性

background-origin

背景的起点,其默认值是padding-box,也就是图片默认是从内边距左上角顶点开始展开

  • content-box:从内容区左上角顶点展开
  • border-box:从边框的左上角顶点展开

background-clip

背景的裁剪,其默认值是border-box,也就是超出边框外的背景将会被裁剪

  • content-box:超过内容区的内容会被裁剪
  • padding-box:超过内边距的内容会被裁剪
  • text:超过文本的内容会被裁剪(前置条件是将文字的字体颜色调整为transparent)

background-size
  • 直接使用长度指定图片的大小
  • 使用百分比指定图片的大小
  • auto:背景图片的真实大小,默认值
  • contain:将背景图片等比缩放,将长边放入容器中,需要注意,很有可能出现容器内存在空白的情况
  • cover:将背景图片等比缩放,将短边放入容器中,需要注意,会有一部分图片没有显示出来的情况

多背景图

利用复合属性backgroud配置多个图片,并配置状态和位置,使用逗号分隔

backgroud: url("bg-lt.png") no-repeat left top,
		   url("bg-rt.png") no-repeat right top,
		   url("bg-lb.png") no-repeat left bottom,
		   url("bg-rb.png") no-repeat right bottom;

新增边框属性

border-radius

通过盒子的border-radius属性可以调整一个盒子的圆角

通过将border-radius设置为百分之50,可以将盒子调整成一个圆形

通过border-top-left-radius可以单独调整盒子的单独一个角来设置圆角

以此类推,其他三个角也可以通过这种方式配置


outline

通过盒子的outline属性来配置盒子的外轮廓

外轮廓不计算入盒子大小,并且不占位

outline-offset可以调整外轮廓的偏移量,并且这个属性不能写在复合属性中


新增文本属性

text-shadow

通过text-shadow属性为文本配置阴影,其配置方式和box-shadow方法类似,但不能配置内部阴影和外延值


white-space

通过该属性可以调整文本的换行逻辑

  • normal:默认值

  • pre:该属性值可以调整为容器内容按原文显示,类似pre标签的功能

  • pre-wrap:在pre效果的基础上,超出元素边界自动换行

  • pre-line:在pre效果的基础上,超出元素边界自动换行,且只识别文本中的换行,空格会忽略

  • nowrap:不换行,这个属性值很重要,通常搭配下面的文本溢出处理


text-overflow

通过该属性可以调整文本溢出的处理

该属性要搭配white-space: nowrap; 且 overflow: hidden;

  • clip:超出的部分裁剪掉
  • ellipsis:超出的部分以省略号代替

text-decoration

在css2中,我们就已经学会了这个属性,用以给文本添加划线,中划线,下划线等修饰

在css3中,这个属性有很多子属性,可以为划线更改样式,颜色等

text-decoration: overline solid blue;

渐变

线性渐变

配合js来循环调整角度,可以让渐变动起来

/* 默认从上到下渐变 */
background-image: linear-gradient(red,yellow,green);

/* 默认从上到下渐变,调整颜色占比 */
background-image: linear-gradient(red 50px,yellow 100px,green 150px);

/* to right从左到右渐变 */
background-image: linear-gradient(to right,red,yellow,green);

/* to right top 从左下到右上渐变 */
background-image: linear-gradient(to right top,red,yellow,green);

/* 20deg 自定义角度渐变 */
background-image: linear-gradient(20deg,red,yellow,green);

径向渐变
/* 默认从中心点向四周 */
background-image:radial-gradient(red,yellow,green)

/* 默认从中心点向四周,调整颜色占比 */
background-image:radial-gradient(red 50px,yellow 100px,green 150px)

/* at left top调整中心位置为左上 */
background-image:radial-gradient(at left top,red,yellow,green)

/* at left top调整中心位置为左上 */
background-image:radial-gradient(at left top,red,yellow,green)

/* at 100px 50px调整中心位置为坐标值 */
background-image:radial-gradient(at 100px 50px,red,yellow,green)

/* 通过circle关键字调整图形样式为正圆 */
background-image:radial-gradient(circle,red,yellow,green)

/* 通过像素调整图形样式为正圆 */
background-image:radial-gradient(100px 100px,red,yellow,green)

Web字体

引入.ttf

在CSS2中,我们使用font-family来调整字体,但该字体必须为用户电脑已安装的字体

在CSS3中,我们可以通过Web字体功能引入网络字体,或引入字体文件

@font-face{
    font-family:"方正手迹";
    src: url("./fonts/方正手迹.ttf")
}
定制web字体

中文的字体文件很大,使用完整的字体文件不现实,如果只需要对页面的几个字体进行单独定制再引入,可以通过该平台定制相关文字的字体

iconfont-阿里巴巴矢量图标库

定制字体后的引入方式是相同的


字体图标
  • 相比图片更加清晰
  • 灵活性高,更方便改变大小、颜色、风格等
  • 兼容性好,IE也支持

iconfont-阿里巴巴矢量图标库

有三种使用字体图标的方案,且均可在线使用和下载使用