前言
大家好,今天与大家一起学习分享css3中的background-size,background-clip使用与实践。
知识点讲解
background-size
一般情况下,我们设置的背景图与背景为完全匹配,但也有情况是可能不匹配的,或者大或者小,那么当尺寸不匹配时,你希望如何控制尺寸呢?这就是background-size的价值所在。
可能取值:px|percentage|cover|contain,详细说明如下:
| 取值 | 说明 |
|---|---|
| px | 设置背景图像的宽度和高度,如果只设置一个,第二个被认为auto |
| percentage | 设置背景图像的宽度和高度,如果只设置一个,第二个被认为auto |
| contain | 缩放背景图像,让其能显示完整 |
| cover | 缩放其图像,让其能完全覆盖区域,但可能背景显示不全 |
-
background-clip
背景裁剪一般用于控制其背景的显示策略,显示覆盖区域,常规默认是覆盖全部也就是border-box的。
可能取值:padding-box|content-box|border-box,与box-sizing一致的取值范围。 -
代码实践
场景讲解
在下面的实践中我们主要实现一个全屏背景中的注册窗,效果有以下几点是需要完成的:
背景全屏效果
- 背景模糊效果
- 注册窗水平垂直居中
-
方案讲解
背景全屏效果:background-size:cover;
- 背景模糊效果,用filter:blur(10px)实现.其他的有兴趣的可以百度css3 filter ,查看菜鸟教程或者w3c介绍。
其语法如下:filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url(); - 注册窗水平垂直居中用绝对定位加margin修正(略)
背景裁剪,background-clip:content-box;
代码方案
<!--特别说明,因为filter效果会影响到子元素,所以我们背景层单独用了一个mask样式元素--><div class="mask"></div><form class="m-login"><h2>立即注册</h2></form><style>*{margin:0;padding:0;border:none;box-sizing:border-box;}html,body{height:100%;}.mask{height:100%;background:url(https://study.miaov.com/img/pc/remote_chapter/bannerBg.png) no-repeat center;background-size:cover;position:relative;filter: blur(6px);}.m-login{position:absolute;width:500px;height:250px;border-radius:10px;border:1px solid #fff;top:50%;left:50%;margin-top:-100px;margin-left:-250px;padding:5px;background:#fff;background-clip:content-box;font-size:14px;h2{text-align:center;line-height:40px;}}</style>
效果图
代码案例地址
-
参考文档
