热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图解CSS3读书笔记——背景

CSS背景属性基本属性background-color:默认值为transparent,可以以”颜色名”、”rgb(css3新增rgba)”、”hls(css3中新增hlsa)”、

CSS背景属性

基本属性

background-color: 默认值为transparent,可以以”颜色名”、”rgb(css3新增rgba)”、”hls(css3中新增hlsa)”、”十六进制”的方式设置颜色值
background-image: none(默认) || url()
background-repeat: repeat(默认) || repeat-x || repeat-y || no-repeat
background-attachment: scroll(默认) || fixed

注意:background-attachment取值为fixed时,需要运用在html或body标签上。使用在其他标签上没有固定效果。

background-position:水平位置 垂直位置

说明:一般来说,背景图片的左上角是和元素的左上角对齐的,background-position这一属性可以改变背景图片与元素的对齐点。

先来看看水平位移和垂直位移单位都是px的时候

background-position: 30px 50px

以元素左上角为坐标原点,水平向右延展方向为x轴正轴,垂直向下延展方向为y轴正轴。那么此时图片的左上角与元素的(30,50)坐标点对齐。

现在来看百分比的情况:
计算方式为:
水平偏移x:(元素宽度-图片宽度)*百分比
垂直偏移y:(元素高度-图片高度)*百分比

此时同样的,图片左上角跟计算出的元素的(x,y)坐标点对齐。

当然啦。实际做项目的时候我们不会这么麻烦的去计算,这里只是总结一下它的计算方式。
实际项目中只需要记住:

1、背景图片水平垂直居中:

background-position: center

2、雪碧图情况:
原理跟使用px的情况相似,这里不赘述了。可以去看看这篇文章:Click here

css3新增属性

background-origin: 指定绘制背景图片的起点
background-clip: 指定背景图片的显示范围
background-size: 指定背景图片的尺寸大小(很常用)
background-break: 指定内联元素的背景图片进行平铺时的循环方式

CSS3 background-origin

该属性主要用来决定背景图片与元素对其原点的参考点。默认是以元素左上角为坐标原点进行对其,这一属性可以打破这一格局。

background-origin有三个属性:
padding-box:默认值。表明图片的原点和元素padding外边缘(border的内边缘)进行对齐。
border-box:表明图片的原点和元素border的外边缘进行对齐。
content-box:表明图片的原点和元素content外边缘(padding的内边缘)进行对齐。

浏览器兼容性:
现代浏览器都支持和ie9+。但是使用时还需要加上浏览器前缀。
如下:

/*old Webkit and Gecko*/
-moz-background-origin: padding || border|| content;
-webkit-background-origin: padding || border|| content;
/*new Webkit and Gecko*/
-moz-background-origin: padding-box || border-box || content-box;
-webkit-background-origin: padding-box || border-box || content-box;
background-origin: padding-box || border-box || content-box; /*w3c标准*/

例子:
1、padding-box

《图解CSS3 读书笔记——背景》

2、border-box

《图解CSS3 读书笔记——背景》

3、content-box

《图解CSS3 读书笔记——背景》

CSS3 background-clip

该属性用来定义背景图片的裁剪区域。这样说得会比较抽象,稍后会通过实例为大家说明。

属性:

border-box: 背景图片在边框下(边框外边缘,不会超出边框),默认值
padding-box: 背景延伸到padding的外边缘,但不会超出边框范围(默认)
content-box: 背景仅在内容区描绘,不会超过padding和边框范围

是不是觉得似曾相识呢?没错,就是background-origin刚刚提到的三个属性。

浏览器兼容性:

  • 在Gecko内核浏览器(FF3.6-)不支持content-box,并且使用border和padding来代替标准语法中的border-box和padding-box

  • safari5能够在标准属性中支持border-box和padding-box,但content-box属性值也需要加上-webkit-前缀

我们先来看看默认情况下如果背景图片超出了元素的范围,元素会对背景图片进行怎样的裁剪。
测试图片200宽200高。

  • repeat:
    /代码:/
    .box {

    width: 260px;height: 150px;
    border: 10px dashed lightgreen;
    background-color:slateblue;
    background-image: url(img/test.jpg);
    background-repeat: repeat;

    }
    效果:

    《图解CSS3 读书笔记——背景》

  • no-repeat:
    /代码:/
    .box {

    background-repeat: repeat;

    }

效果:
《图解CSS3 读书笔记——背景》

默认情况下:

背景平铺时会填满整个元素,包括border的范围。此时border-color完全在background-image下,而且background-image元素边框左上角起到元素边框右下角止。但background-position的起始点却是从元素的内部补白(padding)外边缘开始。

背景不平铺时border-color从元素边框左上角起到元素边框的右下角边缘止,background-image从内容补白(padding)外边缘的左上角起到元素边框的右下角止。

现在使用background-clip属性可以改变背景图片的填充范围。

  • 默认情况下,background-clipborder-box

  • background-clippadding-box时:背景图片的填充范围为,元素padding外边缘左上角元素padding外边缘右下角。注意此时背景颜色的填充范围也会改变。

平铺时:

《图解CSS3 读书笔记——背景》

不平铺:

《图解CSS3 读书笔记——背景》

  • background-clipcontent-box时:背景图片的填充范围为,元素padding内边缘左上角元素padding内边缘右下角。注意此时背景颜色的填充范围也会改变。

平铺时:

《图解CSS3 读书笔记——背景》

不平铺:

《图解CSS3 读书笔记——背景》

CSS3 background-size

现在来看一个用得相对比较多的属性。background-size属性可以用来指定背景图片的尺寸,可以控制背景图片在水平和垂直两个方向上的缩放,也可以控制图片拉伸覆盖背景区域的方式。背景图片能够自适应元素盒子的大小。

属性:

background-size: auto || || || cover || contain

  • auto: 默认值。将保持背景的原始高度和宽度。

  • : 取具体的整体值(如px),将以设定的宽高值对背景图片进行缩放。

  • : 取值为百分值,可以是0% ~
    100%。注意这个值是对于元素的宽度进行计算的,计算出来的宽高值再作为背景图片的宽高值对背景图片进行缩放。

  • cover: 将背景图片宽度或者高度放大,以使图片宽高能适应铺满容器宽高较大的一方,但不同于background-cover:100% 100%的方式。

1、宽度为100,高度为250《图解CSS3 读书笔记——背景》
2、宽度为250,高度为100
《图解CSS3 读书笔记——背景》
3、宽度为80,高度为100
《图解CSS3 读书笔记——背景》

  • contain:保持背景图像本身的宽高比例,将背景图像缩放到宽度或高度正好适应所定义背景容器的区域。

《图解CSS3 读书笔记——背景》

  • 当background-size只取一个值时,另一个值自动设为auto。

浏览器兼容性:
ie9+以及其他主流。老版本浏览器需要加上前缀。

background-size的其他适用场合:

  • 在流体布局或者响应式布局中,确保背景图像能始终适配容器大小。

  • 对于平铺的重复性背景图像,确保背景图像不会有截断效果。

  • 解决Retina屏幕双倍像素下背景图像模糊问题。(将大图缩小一倍)

  • 使用链接或者列表元素的背景图像能和文本一起进行缩放。

其他新增CSS3背景属性

因为这两个属性浏览器兼容性比较差,项目中使用较少,所以这里不进行具体总结了。收集了一些相关的文章供有兴趣的小伙伴进行阅读。

1、内联元素背景图像平铺循环方式:暂无文章
2、CSS3多背景:Click here


推荐阅读
  • 【clientX,offsetX,screenX】  【scrollWidth,clientWidth,offsetWidth】的区别
    一、深刻认识clientX,offsetX,screenX概念(来源于网络):clientX设置或获取鼠标指针 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • html结构 ... [详细]
  • 为什么三角形与菜单背景的颜色不同? - Why is the triangle a different colour shade to the menu background?
    Imnotunderstandingastowhythetrianglewhichappearswhenthemousehoversoverthemenuitem, ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • DOM事件大全
    1.事件:js与html的交互就是通过事件的,观察者模式2.事件流:从页面中接收事件的顺序IE::事件冒泡流,事件冒泡,事件从最具体的元素接收,然后逐级向上传播,主流浏览器都支持N ... [详细]
  • jsdocument.documentElement document.body
    其实之前一直对于document.documentElement和document.body不是很清楚,查了下资料-在html和xhtml中定义的差别..要获取当前页面的滚动条纵 ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
author-avatar
wo缘相聚在空间
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有