HTML文档中的所有元素都是由矩形盒子构成的——不管是包含页面结构的容器元素,还是段落中的每行文本,归根结底都是盒子。

1.背景颜色

设置页面背景颜色。

body {background-color: #bada55;
}

简写属性:

body {background: #bada55; /* 这里会把其他属性重置为默认值 */
}

通过background可以一次性地设置与背景相关的多个属性。

十六进制表示法:
一个#后面加上6位十六进制数字构成的字符串。
这个字符串由3组数字(每组各2位)构成,每个数字的取值范围是0~F。十六进制的意思就是每个数字都可能有16种不同的值,因此除了0~9这10个数,还要用A~F补足第11~16位数。
3组数字分别表示颜色中的红、绿、蓝(RGB)通道的值。每种颜色通道的值有256种可能,也就是2位十六进制数所能表示的可能性(16×16=256)。
如果3组数字中每组的2位数字相同,可以简写成3位数字。
颜色值也可以用预定义的关键字表示(比如red、green、blue等等)。

rgb()函数式表示法:
RGB的每个值可以是一个十进制数值,取值范围为0~255,也可以是一个百分比值,取值范围为0%~100%。

body {background-color: rgb(186, 218, 85);
}

hsl()函数式表示法:
色相-饱和度-亮度(hue-saturation-lightness),即HSL模型。

body {background-color: hsl(74, 64%, 59%);
}

注意,使用哪种表示法来表示颜色没有本质区别,它们只是表示同一事物的不同方法而已。

rgba()函数式表示法:
末尾的a表示alpha,是用于控制透明度的阿尔法通道。

body {/* 第四个参数表示透明度,取值范围为0~1.0,1.0表示完全不透明,0表示完全透明。 */background-color: rgba(186, 218, 85, 0.5);
}

CSS提供另一种方式来控制透明度。

.box {background-color: #bada55;opacity: 0.5;
}

使用opacity让整个元素都变透明了,包括元素中包含的内容。
使用opacity把一个元素设置为透明后,将无法再让其子元素变得不那么透明。

2.背景图片

<header class="profile-box">
</header>
.profile-box {width: 100%;height: 600px;background-color: #8Da9cf;background-image: url(img/big-cat.jpg); /* 设置背景图片 */
}

background-repeat的默认值(repeat)决定了图片会平铺到整个元素盒子,即背景图片要沿x轴和y轴重复。

.profile-box {background-image: url(img/big-cat.jpg); /* 设置背景图片 */background-repeat: no-repeat; /* 禁止重复 *//* 支持以空格分隔的针对两个方向的关键字声明语法 *//* background-repeat: repeat no-repeat; */
}

使用url()函数加载图片可以使用相对路径,也可以使用绝对路径,还可以使用图片的base64编码数据。

background-image: url(img/big-cat.jpg);

图片格式:

  • JPEG(有损压缩,适合照片)
  • PNG(无损压缩,适合图标等小尺寸文件)
  • GIF(动图)
  • SVG(矢量图)
  • WebP(Google开发的一种新图片格式)

位图意味着文件会包含每个像素的数据,拥有内在的维度(宽度和高度)。
SVG图形包含的是如何在屏幕上绘制图形的指令,它可以任意缩放,也可以在任意像素密度的屏幕上清晰呈现。

3.背景图片语法

3.1 背景位置

背景图片的位置由background-position属性控制。
background-position属性既可以使用关键字,也可以使用像素、em或百分比。最简单的情况下,可以只给两个值:一个表示相对于左侧的偏移量,一个表示相对于顶部的偏移量。

.profile-box {/* 省略 */background-position: 50% 50%;
}

如果使用像素或em单位来设置背景图片的位置,那么图片的左上角会相对于元素的左上角定位,也就是会偏移指定的数值。如果设置背景图片的位置时使用了百分比,定位的是图片中对应的点。如果水平或垂直方向都设置为20%,那么你定位的实际上是距图片左边和上边各20%的点,而这个点会与距离父元素左边和上边各20%的点重合。

使用关键字来对齐背景图片,要在x轴上用leftcenterright,在y轴上用topcenterbottom。顺序一般都是先x轴后y轴。

.profile-box {/* 省略 */background-position: left top;
}

在只使用两个关键字的情况下,规范并没有限定顺序(如可以使用top left)。

新语法允许给background-position添加外边空声明,先写边界关键字,再写长度值。

<p><a href="/activate" class="link-with-icon">Activate flux capacitor</a>
</p>
.link-with-icon {padding-right: 2em;background-image: url(img/icon.png);background-repeat: no-repeat;background-position: right 1em top 50%;
}

使用calc()函数可以让浏览器替你计算任何数值(角度、像素、百分比,等等),甚至还支持动态计算的混合单位。

.link-with-icon {/* 省略 */background-position: calc(100% - 1em) 50%;
}

3.2 背景裁剪与原点

默认情况下,背景图片是绘制在元素边框以内的。如果把背景图片定位到边框下方,而边框又被设值为半透明,那么图片边缘就会出现半透明的边框。使用background-clip属性可以改变这个行为。
background-clip属性的默认值为border-box

.profile-box {border: 10px solid rgba(220, 220, 160, 0.5);padding: 10px;background-image: url(img/cat.jpg);background-clip: padding-box;
}

使用background-origin属性控制背景定位默认的原点的位置。

3.3 背景附着

背景会附着在指定元素的后面,如果你滚动页面,那么背景也会随着元素移动而移动。可以通过background-attachment属性改变这种行为。

.profile-box {background-attachment: fixed;
}

3.4 背景大小

使用background-size属性可以设置图片大小,也可以让它随元素大小缩放而缩放(不管页面如何缩放,都让内容保持自己的宽高比)。要让图片随元素缩放而缩放,则必须使用百分比值。不过要注意,百分比值并不是相对于图片固有大小,而是相对于容器大小。

.profile-box {/* 让图片宽度保持为100%,同时保持自己固有的宽高比。*/background-size: 100% auto;
}

使用关键字contain让浏览器尽可能保持图片最大化,同时不改变图片的宽高比,避免图片被裁切。

.profile-box {background-size: contain;
}

3.5 背景属性简写

使用background这个简写属性要注意,它会把所有没有明确指出的属性都重置为其默认值。一般而言,明确的代码更不容易出错,而且也更容易让人理解。

.profile-box {background: url(img/cat.jpg) 50% 50% / cover no-repeat padding-box content-box #bada55;
}

参考资料:

  • 菜鸟教程
  • w3school
  • 《精通CSS》— [英] 安迪·巴德、[瑞典] 埃米尔·比约克隆德

转载于:https://www.cnblogs.com/gzhjj/p/10904729.html

CSS漂亮盒子(上)相关推荐

  1. CSS漂亮盒子(下)

    4.多重背景 CSS支持一个元素设置多个背景图片. 每个背景属性有相应的多值语法,多个值由逗号分隔. .multi-bg-shorthand {width: 300px;height: 200px;b ...

  2. CSS知识点——盒子布局及一些常用属性

    CSS知识点--盒子布局及一些常用属性 - 盒子布局 先上一张图,方便理解后面的布局内容 盒子布局的主体通常为 div 标记(分区标签),这里不得不提一下 span 标签,它也是一个区域标签,但是区别 ...

  3. html盒子嵌套居中,css在盒子中垂直居中和固定居中

    顶部固定居中 我是固定的 .w960{ width: 960px; margin:0 auto; } .fixed{ position: absolute; top:0; left: 0; right ...

  4. html盒子模型页面居中,【静态页面架构】CSS之盒子模型

    CSS架构 盒子模型: 以内容区(显示文本和图像) 内边距(内容区至边距的距离) 边距(内容区的边界) 外边距(元素的边框之间的距离) 1.边距: border属性: 简写属性用来设置边距的上(top ...

  5. css就近原则_细品100道CSS知识点(上)「干货满满」

    作者:hh_phoebe 转发链接:https://juejin.im/post/5ee0cf335188254ec9505381 目录 细品100道CSS知识点(上)[干货满满]本篇 细品100道C ...

  6. CSS基础——盒子模型【学习笔记】

    盒子模型(Box Model) 所谓盒子模型: 就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器. 盒子模型有元素的内容.边框(border).内边距(padding).和 ...

  7. 【玩转CSS】盒子模型

    ?? 信仰:一个人走得远了,就会忘记自己为了什么而出发,希望你可以不忘初心,不要随波逐流,一直走下去 ?? 欢迎关注??点赞??收藏??留言?? ?? 本文由 原创,CSDN首发! ?? 系列专栏:H ...

  8. css 弹性盒子 flex布局

    目录 css弹性盒子flex 布局 什么是flex 常见父项属性 概念与案例 主轴与侧轴 flex-direction设置主轴的方向 justify-content 设置主轴上的子元素排列方式 fle ...

  9. CSS (3) | 盒子

    目录 1 盒子模型 1.1 看透页面布局本质 1.2 盒子模型(box model)组成 1.3 边框(border) 1.3.1 width 1.3.2 border-style 1.3.3 边框简 ...

最新文章

  1. It is not safe to rely on the system's timezone settings
  2. Linux下 数据文件 效验问题
  3. 软件开发中 前台、中台、后台英文_中台产品那些事儿-啥是中台
  4. sql datetime转字符串_datetime的用法,时间戳转换
  5. 技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用
  6. XenServer利用XenCenter配置网络选项
  7. 嘻哈电音综合插件-Digikitz Linked Linked Vibes Workstation WiN-MAC
  8. C# 多个点拟合圆并给出圆心坐标
  9. 值得推荐的MAC软件下载软件的网站
  10. 要跳过磁盘检查,请在5秒内按任意键如何解决
  11. 自动驾驶定位技术之争:融合定位才是出路
  12. Python ctypes 调用API函数模拟键盘鼠标事件
  13. 如何启动/停止/重启MySQL + 进入MYSQL
  14. 岁月的剪影【七月My way】
  15. IOS开发中@2x图片等适应不同分辨率手机
  16. BJFU 1399 警察抓小偷
  17. 爬虫训练场项目重要组件,导航栏+轮播图
  18. C++之sync_with_stdio(false)
  19. 解决SiamRPN预训练模型的问题
  20. 陈后金的《信号与系统》视频教程全部目录

热门文章

  1. Oracle事务和常用数据库对象
  2. dva 中使用绝对路径/别名的方法
  3. 苹果:高通的“非法行为”损害了整个行业
  4. Go -- 一致性哈希算法
  5. IE浏览器中,设置指定程序查看源文件
  6. Linux下静态编译的一个TIP
  7. VS2010中添加第三方库目录VC++ Directories
  8. 堆木板问题——木板能堆无限远而不倒吗?
  9. 《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题
  10. 云上护航服务—保障云上的尖峰时刻