六.CSS背景background

325 阅读6分钟

背景

CSS 背景属性用于定义 HTML 元素的背景。

1.标签的背景颜色:

background-color:属性, 就是专门用来设置标签的背景颜色的
bc background-color: #fff;

2.裁剪背景:

 background-clip: border-box;(默认值)
 /*
 border-box	背景被裁剪外边框。	
 padding-box	背景被裁剪内边框(border内)。
 content-box	背景被裁剪到内容框。
 */
 注意:如果遇到圆角属性,背景由background-clip先裁剪,再由border-radius进一步裁剪

3.设置背景图片:

background-image: url();就是专门用于设置背景图片的
如果图片的大小没有标签的大小大, 那么会自动在水平和垂直方向平铺来填充;
使用背景图片搭配背景色最好;

4.背景图片的平铺方式:

background-repeat:repeat 默认, 在水平和垂直都需要平铺

取值:
repeat 默认, 在水平和垂直都需要平铺
no-repeat 在水平和垂直都不需要平铺
repeat-x 只在水平方向平铺
repeat-y 只在垂直方向平铺

应用场景:
可以通过背景图片的平铺来降低图片的大小, 提升网页的访问速度

5.背景图片的位置:

background-position:水平方位,垂直方位;

background-position:center top;
/*可以让最重要的部分位于网站中间,不随窗口变化而*/

取值
默认情况下是左上角
2.1具体的方位名词(如果只设置一个方位,另一个方位默认center)

水平方向: left center right
垂直方向: top center bottom

2.2百分比(如果只设置一个方位,另一个方位默认50%)
 background-position:50% 50%;
 把源图像的中点与与元素背景的中点对齐
 
 2.3具体的像素
 相对于元素背景左上角位置的偏移,(源图像的偏移点是左上角)
例如: background-position: 100px 200px;


特殊性:改变偏移边
以前:(值只能为2个,相对背景区域左上角偏移)
background-position: 33% 20px;
这句话的意思是把源图像放在距左上角横向三分之一的位置,纵向20px处

现在:
background-position: left 33% top 30px;
相对左边界横向偏移33%,相对上边界纵向偏移30px

6.源图像的位置:

background-origin属性确定计算源图像的位置以什么边界为基准
取值:
 border-box	背景被裁剪外边框。	
 padding-box	背景被裁剪内边框(border内)。(默认)
 content-box	背景被裁剪到内容框。


7.背景关联方式:

默认情况下背景图片会随着滚动条的滚动而滚动; 
如果不想让背景图片随着滚动条的滚动而滚动, 那么我们就可以修改背景图片和滚动条的关联方式;
在CSS中有一个叫做background-attachment的属性, 这个属性就是专门用于修改关联方式的

格式
background-attachment:scroll;

取值:
scroll 默认值, 会随着滚动条的滚动而滚动
fixed 不会随着滚动条的滚动而滚动

8.背景图片尺寸:

background-size.PNG

1.改变源图像的尺寸:
background-size:500px auto;(宽高比不变)
/* 一个值: 这个值指定图片的宽度,图片的高度隐式的为auto */


2.图像完全覆盖背景,且不在乎有部分图像超出背景区域:
background-size:cover;(宽高比不变)
/*
缩放背景图片以完全覆盖背景区,可能背景图片部分看不见。
和 contain 值相反,cover 值尽可能大的缩放背景图像并保持图像的宽高比例(图像不会被压扁)。
该背景图以它的全部宽或者高覆盖所在容器。当容器和背景图大小不同时,背景图的 左/右 或者 上/下 部分会被裁剪。
*/


3.缩放背景图片以完全装入背景区:
background-size:contain;(宽高比不变)
/*
缩放背景图片以完全装入背景区,可能背景区部分空白。contain 尽可能的缩放背景并保持图像的宽高比例(图像不会被压缩)。
该背景图会填充所在的容器。当背景图和容器的大小的不同时,容器的空白区域(上/下或者左/右)会显示
由 background-color 设置的背景颜色。
*/

9.背景属性缩写的格式:

background: 背景颜色 背景图片 平铺方式 关联方式 定位方式;

background: red url(images/girl.jpg) no-repeat left bottom;

注意点:
background属性中, 任何一个属性都可以被省略

10.背景图片和插入图片区别:

1.1背景图片仅仅是一个装饰, 不会占用位置,插入图片会占用位置.

1.2背景图片有定位属性, 所以可以很方便的控制图片的位置;
   插入图片没有定位属性, 所有控制图片的位置不太方便.

1.3插入图片的语义比背景图片的语义要强, 所以在企业开发中如果你的图片想被搜索引擎收录, 那么推荐使用插入图片

11.背景图片拼接:

思路

  • 1.div 嵌套----设置两个 div,把大的图片的 div 里面嵌入小的 div,然后给小图片定位

  • 2.背景定位--小的 div 设置与大 div 一样的宽高,然后给小的 div 设置背景图片定位

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>39-背景图片练习</title>
    <style>
      .box1 {
        width: 1024px;
        height: 768px;
        background-image: url(images/bybg.jpg);
      }
      .box2 {
        /*background-color: red;*/
        width: 1024px;
        height: 768px;
        background-image: url(images/bybottom.png);
        background-position: center bottom;
        background-repeat: no-repeat;
        /*background-position: 100px 200px;*/
      }
    </style>
  </head>
  <body>
    <div class="box1">
      <div class="box2"></div>
    </div>
  </body>
</html>

12.CSS 精灵图

1.CSS精灵图是一种图像合成技术,把需要用到的一些图像整合到一张大图片上

2.CSS精灵图作用
可以减少请求的次数, 以及可以降低服务器处理压力

3.如何使用CSS精灵图
CSS的精灵图需要配合背景图片和背景定位来使用

4.替代方案
字体图标替代精灵图

渐变

渐变是指从一个颜色到另一个颜色的平滑过渡,最常使用在背景图片中;

线性渐变

抒写样式:
background: linear-gradient(red, green);/*默认情况下会从上至下的渐变*/

定义方位:
background: linear-gradient(to top ,red, green);/*从下至上渐变*/
   /* 
   to right从左至右 ,
   to left  从右至左 , 
   to top right 往上右方向渐变 
   45deg    45°角渐变
   */
 注意:
      1.至少需要传递2个颜色, 至多没有上限
      2.默认情况下自动回自动计算纯色和渐变色的范围, 但 是,我们也可以手动指定的格式: 颜色 范围;    
background: linear-gradient(to right, red 100px, green 200px, blue 300px);
/*只有第一个颜色后面的范围是指定纯色的范围, 后面的都是指定渐变的范围*/

径向渐变

径向渐变: 默认从中心点向四周扩散

background: radial-gradient(red, green);


 background: radial-gradient(at top left ,red, green);
 /*径向渐变: 可以通过at 关键字的方式修改开始渐变的位置 */


 background: radial-gradient(at 200px 100px ,red, green); 
 /*径向渐变: 可以通过at 位置 位置的方式修改开始渐变的位置*/

 background: radial-gradient(100px, red, green);  
 /*径向渐变也可以指定扩散的范围

 background: radial-gradient(100px at 200px 100px ,red, green);
 /* 如果需要同时指定扩散的位置和扩散的范围, 那么范围必须写到at前面*/