box-sizing

在CSS 2中设置元素的width和height仅仅是设置了元素内容区的宽和高,元素实际的尺寸是margin + border + padding + 内容区。

CSS 3(截止到2016年12月6日该属性还是草案)中新加了box-sizing属性,用来重新规定设置元素的width和height时,到底包含哪些区域。

box-sizing的可取值有两个:content-box(默认值)和border-box。

content-box 默认值。该值表示设置元素的width和height时,这两个尺寸实际指的是内容区的尺寸。即:

width = 内容区的宽度

height = 内容区的高度

border-box 该值表示设置元素的width和height时,这两个尺寸实际指的是border + padding + 内容区 这三项的总尺寸。即:

width = border-left + padding-left + 内容区宽度 +padding-right + border-right

height = border-top + padding-top + 内容区高度 +padding-bottom + border-bottom

背景

通过background属性可以设置元素的背景样式。

实际上background是以下八个属性的简写(后面跟的是默认值):

background-color                           transparent

background-image                         none

background-size                            auto auto

background-position                      0%  0%

background-repeat                        repeat

background-origin                          padding-box

background-clip                             border-box

background-attachment                scroll

background-color

background-color 设置元素的背景颜色

可取值:transparent || 某些表示颜色的英文单词 || 十六进制的颜色名  || rgb颜色名 || rgba

background-image

background-image设置元素的背景图像。通过url()引入,可以引入多张背景图片,用逗号隔开。

默认情况下背景图片从元素的左上角开始(包含border区域)渲染。

background-size

background-size用于重新计算引入背景图片的尺寸。

可以设置多组值,有多组值时,按照图片引入的顺序一一对应。如果设置的值的组数小于引入图片的张数,则余下的图片的尺寸按第一组值计算。每组值可以设置1~2个值,第一个值表示宽度,第二个值表示高度,如果只设置了一个值,第二个值为auto;也可以设置规范中指定的关键字,设置为关键字时,只有一个值。

background-size的可取值:

cover 关键字。表示根据引入图片的原始比例放大图片,使其完全填充整个背景区域。放大后的图片的宽度和高度可能超过背景区域的尺寸,超过部分不显示。

contain 关键字。表示根据引入图片的原始比例放大图片,使图片的宽度或高度中的某一个刚好完全填充背景区域对应的宽度或高度。这种填充方式的结果就是背景区域在水平会垂直方向上会留有空白。

auto 不是关键字。当两个值都是auto时,使用引入图片本来的尺寸。如果只有一个值为auto,那么为auto的值的计算方法是:

  1. 如果另一个值是百分数,先根据背景区域的尺寸计算这个百分数的具体值,再用这个计算来的具体值根据引入图片的固有比例计算为auto的那个值。
  2. 如果另一个值不是百分数,则直接用这个值根据引入图片的固有比例计算原为auto的那个值。

<percentage> 根据背景区域的尺寸计算。不能为负。如果background-attachment的值为fixed,则根据浏览器视口(viewport)的尺寸计算。

<length> 使用指定的值。不能为负。

注意:有些图片没有固有比例,有些图片没有固有尺寸,还有的图片两者都没有。原则是:

  1. 对于contain 或 cover,有固有比例的用固有比例放大。没有的,就使用背景区域的尺寸。
  2. 对于两个值都是auto的情况,图像如果有固有宽度和高度,则按这个尺寸。如果没有固有尺寸与固有比例,则按背景区的大小。如果没有固有尺寸但是有固有比例, 效果同 contain。如果只有一个固有长度(宽度或高度),但有固有比例,则用这一个固有长度根据固有比例计算另一个值的大小。如果只有一个固有长度(宽度或高度),但没有固有比例,则使用此一个固有长度,另一个值使用背景区域的相应的长度(宽度或高度)。
  3. 一个为 auto 另一个不是auto,如果图像有固有比例,则指定的长度使用指定值,未指定的长度由指定值与固有比例计算。如果图像没有固有比例,则指定的长度使用指定值,未指定的长度使用图像相应的固有长度(宽度或高度),若即没有固有比例也没有固有长度(宽度或高度),则使用背景区相应的长度(宽度或高度)。

background-position

background-position 用于指定背景图片在背景区域中的初始位置。

可以设置多组值对应多张背景图片。每组值可以设置1~2个值。

可取值:

  1. 关键字:top,bottom,center,left,right。如果只指定一个关键字,则另一个默认为center。
  2. <percentage> 相对于背景区域的尺寸计算,可以为负值。如果只指定一个百分数,则另一个默认为50%。第一个为水平位置,另一个为垂直位置。
  3. 像素值或其他CSS单位的值,可以为负值。第一个为水平位置,另一个为垂直位置。如果只指定一个,则另一个默认为50%(相对于背景区域)。

如果引入背景图片的张数大于指定的值的组数,则余下的背景图片的位置根据第一组值计算。

background-repeat

background-repeat指定是否重复或如何重复背景图片。默认其情况下,图片在水平方向上和垂直方向上重复以填满整个背景区域。(根据background-size属性重新计算背景图片的尺寸后再重复)

可取值:

repeat  默认值。在不缩放图片的前提下,在水平方向上和垂直方向上重复图片以填满整个背景区域。

space 不缩放图片。指定为space后,会忽视background-position属性的值,除非某一方向上的空间不足以容纳两张背景图片,此时不会忽视该方向上的background-position的值。填充规则是先紧挨着背景区域的四周边界填充,再向内填充,最后剩余空间会被均分到已填充图片的周围(不包括挨着背景区域四周边界的那一面,可以理解为两端对齐)。

round 不会忽视background-position属性的值。重复填充时会对图片进行缩放(忽视图片的固有比例),最后的结果是背景区域刚好被引入图片的整数个重复填满。

no-repeat 背景图片不会被重复,位置由background-position属性的值确定。

该属性支持单值语法和双值语法。在双值语法中,第一个值表示在水平方向上的重复行为,第二个值表示在垂直方向的重复行为。

单值和双值对照表:

单值 双值
repeat-x

repeat  no-repeat

repeat-y

no-repeat  repeat

repeat

repeat  repeat

no-repeat

no-repeat  no-repeat

space

space  space

round

round  round

background-origin

background-origin规定了背景图片出现区域的具体范围,注意与背景区域区分。

要看到该属性的效果background-repeat属性的值必须为no-repeat。

可取值:

border-box:背景图片延伸到边框border的外边界,但背景图片在下,border的样式在上。

padding-box:背景图片从padding区域的外边界开始渲染,border区域不会出现背景图片。

content-box:背景图片只在内容区域渲染。

background-clip

background-clip用于指定背景区域显示出来的范围。

可取值:

border-box:表示border外边界以内的背景区域都显示出来。

padding-box:表示padding外边界以内的背景都显示,不显示border范围的背景。

content-box:表示内容区的背景都显示,不显示border和padding范围的背景。

background-attachment

background-attachment 如果引入了背景图片,用该属性决定背景图片的滚动特性。支持多张背景图片,可以设置多组值。

可取值:

fixed:表示引入的背景图片相对于浏览器视口(viewport)固定。类似于元素的固定定位。

local:表示背景图片相对于元素的内容固定。如果元素具有滚动机制,则背景图片随着元素内容的滚动而滚动。

scroll:表示背景图片相对于元素本身固定。如果元素具有滚动机制,则背景图片不随元素内容的滚动而滚动。

参考文章:

1、深入浅出CSS3:background-clip,background-origin和border-image教程

2、MDN

3、规范

CSS 3学习——box-sizing和背景的更多相关文章

  1. CSS入门级学习

    css入门学习1:认识CSS 1.1:css简介,css全称是层叠样式表,Cascading style sheets 1.2:css的作用,主要是用于定义html内容在浏览器内的显示样式,如文字大小 ...

  2. (2)《Head First HTML与CSS》学习笔记---img与基于标准的HTML5

    1.浏览器处理图像的过程: 1.服务器获取文件,显示出文本结构,以及预留默认的大小给<img>(如果该<img>有width-1值和height-1值,则根据这个值提前设好页面 ...

  3. 11种常用css样式学习大结局滚动条与显示隐藏

    滚动条展示 overflow-x: hidden;/*是否对内容的左/右边缘进行裁剪*/overflow-y: hidden;/*是否对内容的上/下边缘进行裁剪*/overflow:scroll;/* ...

  4. css居中学习笔记

    css居中学习笔记 一.水平居中 以下面的代码为例: <body> <div class="parent"> <div class="chi ...

  5. css奇特用法之 IMG添加背景图片配合显示--效果惊艳

    IMG标签本身是显示图片的,但通过CSS可以再为其设置背景图片,让其和自身的图片配合来显示,最终的效果会让你惊叹.当然,这个发现来自于老外,所以代码马上与大家分享.再此之前,我也从来没有想到过这个思路 ...

  6. HTML&CSS基础学习笔记—创建列表

    创建一张表格 很多时候我们需要在网页上展示一些数据,使用表格可以很好的来展示数据. 在HTML中<table>标签定义 表格. <table> </table> 添 ...

  7. css background之设置图片为背景技巧

    css background之设置图片为背景技巧-css 背景 Background是什么意思,翻译过来有背景意思.同样在css里面作为css属性一成员同样是有背景意思,并且是设置背景图片.背景颜色. ...

  8. CSS 3 学习笔记

    css 3 学习笔记 文本: word-wrap : normal | break-word取值:normal:    控制连续文本换行.break-word:    内容将在边界内换行.如果需要,词 ...

  9. css盒模型(Box Model)

    所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和 ...

  10. css属性学习

    CSS display 属性 display 属性规定元素应该生成的框的类型. none:此元素不会被显示. block:此元素将显示为块级元素,此元素前后会带有换行符. inline默认.此元素会被 ...

随机推荐

  1. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  2. nginx+php的使用

    原文来自:windows下配置nginx+php环境 按照他的步骤走,亲测可用! 但是这里他后面说的根目录可能有些人有点懵. 其实在设置的时候就设置了: 网站根目录就是www这个目录,如果没创建请自行 ...

  3. 为.NET Core项目定义Item Template

    作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常 ...

  4. 15个关于Chrome的开发必备小技巧[译]

    谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...

  5. 快递Api接口 & 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

  6. iOS -- CocoaPods

    CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具.CocoaPods 的项目源码在 GitHub( https://github.com/CocoaP ...

  7. Storm

    2016-11-14  22:05:29 有哪些典型的Storm应用案例? 数据处理流:Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去.不像其它的流处理系统,Storm不 ...

  8. 第12章 Linux系统管理

    1. 进程管理 1.1 进程查看 (1)进程简介 进程是正在执行的一个程序或命令(如ls命令也是一个进程),每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的作用 ...

  9. EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象

    最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久.功能要求包括: (1)底图使用百度地图: (2)可以在地图上叠加显示ech ...

  10. 《开源博客Q群》和《NET上海Q群》入群须知

    开源博客Q群 群名:<嗨-博客> 群号:469075305(已满) 491585006(New) 群简介:“我们每个猿都有一个搭建自己独立博客的梦”. 入群要求: 您可以是HR,私聊管理员 ...