一两个月没更新博客了,因为放假刚在深圳找了实习,一直都比较忙碌,不过我觉得再忙,还是需要时间去沉淀一些东西,工作的时候别人看到的只是你有没有实现最终的结果,但自己是否思考,是否去总结,决定着你工作是否轻松。基础不好的话,很多时候时间都花费在修复各种bug上了。所以思考总结很重要,做出好维护的代码才能让我们轻松走天下。找实习还是比较顺利的,有空可以分享下经验。好了,进入正题了,今天分享的是css中的background,平常我们用的都是些常见的属性,今天来看看一些不常用的,其实还是很有价值的。

我们都知道background是一个复合属性,我们先来大概看看这些单一属性。

  • background-color
  • background-position
  • background-size
  • background-repeat
  • background-origin
  • background-clip
  • background-attachment
  • background-image

大部分其实都是比较简单的,今天主要分享下background-size,background-origin,background-clip。其他的可以自行查阅

1  background-size:水平方向 垂直方向,做移动端的时候经常需要用到这个。

属性值分别有:

1 设置具体的值 。background-size:100px 200px。你设置的多大  背景图片就有多大,当只设置一个值的时候高度会auto。

2 设置百分数 。background-size:100% 100% ,图片的宽高 会以容器的宽度为基准,来生成大小。当只设置一个值的时候,高度的值会默认为auto。但不一定会正好就等于图片的高度显示出来,我之前做一个移动端就是因为我设置的是background-size:100% ,后来发现背景图片的高度只显示了一部分,底部的就是看不到,但我们底部的背景又是需要展现出来的,后来改成background-size:100% 100%就好了。当然如果你的背景的重点不在下面。可以只写一个100%。

3 background-size: cover,这个就是不会考虑图片本身的比例,让图片能够把容器充满,所以很有可能图像只显示一部分,因此还是要根据你的需求来看。

如果你需要显示完整的图片,最好用background-size:100% 100%,如果图片的重点在上面,或者只显示一部分也没影响,可以用background-size:100% 和background-size: cover。

4 background-size: contain 把图像图像扩展至最大尺寸一直到。他们的宽度和高度都能接触到容器。

建议大家私下都动手试试,区别很明显。

2 background-clip:以前很少用这个属性,最近看翻译成中文的《CSS揭秘》,发现它还是很有用的。这本书也不错,可以买来看看。

background-clip: border-box|padding-box|content-box;

有三种值,分别是什么呢,先跟着我来看一个例子,假设我们现在要做一个透明的边框。我们可能会这样写

   border: 10px solid rgba(0,0,0,0.2);
width: 200px;
height: 200px;
background: #16ff00;
padding:10px;//测试需要

可是看效果,发现并不是我们想象中的样子,如下,我们会发现边框实际上是在背景上面的,这是什么原因呢?

这不是一个bug,而是本来就是这样子,CSS2中语法规定了背景的渲染模式。就是通过background-clip这个属性来规定的

1 默认值是border-box,意思就是背景是从边框开始绘制的,也就是背景的颜色会包括border+padding+content,(content指的是内容区域),所以下面的背景才包括了边框。

2 当设置值为padding-box的时候,背景会从padding开始绘制,也就是包括padding+content,

3 设置值为content-box,背景颜色就只包括content了。

OK,那如果我们想实现透明边框,就让背景不会从边框绘制就好了。如下,两个属性值都实现了,只是第二个背景只包括内容,所以中间的padding就不会有背景了。大家可以记住这个特性,以很可能会用到。

3 background-origin:这个属性呢,经常会与上面一个属性混淆,但其实不是一个东西,background-position这个属性大家都熟悉吧,规定背景显示的位置,但是位置总要有个标准来确定吧。这个标准呢,就是由background-origin这个属性来规定的,有下面三个值,原理跟上面是差不多。也有三个值。

padding-box:默认值。意思就是以padding开始为标准定位。

border-box:以padding开始为标准定位。

content-box:以内容区域为标准定位。

我们来看一个实际的效果,代码如下:

    width: 200px;
height: 200px;
background: url(li-ai-jun.png) no-repeat;
padding: 25px;
border: 10px dotted #000000;
background-repeat: no-repeat;
background-size: 100%;
如下,分别是默认情况,border-box,content-box等情况下的表现,应该一看就懂吧。至于平常能不能用到,就要看业务了。

好啦,今天的分享就到这里了,希望以后能分享更多的经验,最近也有一些朋友私信给我一些问题。有些可以解决,有些真的也是不太会,因为我也是用到什么研究什么,所以很多可能也无能为力,不过学到的,一定会用大白话分享出来。一起加油吧。

我是沐晴。不见不散。

你真的熟悉background吗?的更多相关文章

  1. 【转载】作为Android开发者,你真的熟悉Activity吗?

    学过android的人都知道,activity是最常用的四大组件之一,但你真的了解透彻activity了吗?接下来,本人将从activity的正常和异常生命周期.启动模式.IntentFilter匹配 ...

  2. Java 基础巩固:装箱拆箱 你真的熟悉吗

    先考两道题: Integer a1 = 300; Integer a2 =300; System.out.print(a1 == a2); Integer b1 = 1; Integer b2 = 1 ...

  3. 你真的熟悉ASP.NET MVC的整个生命周期吗?

    一.介绍 我们做开发的,尤其是做微软技术栈的,有一个方向是跳不过去的,那就是MVC开发.我相信大家,做ASP.NET MVC 开发有的有很长时间,当然,也有刚进入这个行业的.无论如何,如果有人问你,你 ...

  4. 你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们

    一叶障目 .NET平台上的分层架构(很多朋友称其为“三层架构”),似乎是一个长盛不衰的话题.经常看到许多朋友对其进行分析.探讨.辩论甚至是抨击.笔者在仔细阅读了大量这方面文章后,认为许多朋友在分层架构 ...

  5. 由linux命令谈学习操作系统的重要性

    linux命令妙趣横生,喜欢敲命令行的人会深有体会,但是没有系统学习过操作系统的话,很多命令还是难以理解的.讲实在话,大多数linux爱好者常敲的都是这些方面的: 文件系统 磁盘 网络 系统状态 账户 ...

  6. TeamViewer 服务队列网页怎么打开?有什么用?

    熟悉一款软件,除了要熟悉它的界面,还应该熟悉它的网站.可能会有很多人说,网站我当然知道了.但是TeamViewer的服务队列页面你真的熟悉吗?所以,今天小编就带大家深入的了解一下TeamViewer服 ...

  7. 从flask视角学习angular(一)整体对比

    写在前面 前端框架完全不懂. 看着angular中文官网的英雄编辑器教程和核心知识,用偷懒的类比法,从flask django的角度 记录一下自己对angular的理解. 作为工科的武曲,自己的体会是 ...

  8. cocos2d-x 3.0rc2版公布了

    本人博客地址,转载吧亲们:http://blog.csdn.net/dawn_moon 之前做小鸟的和跑酷的时候尽管cocos2d-x出了3.0版,可是还是alpha版.当时大致看了一下发现有蛮多修改 ...

  9. 基于python实现简单web服务器

    做web开发的你,真的熟悉web服务器处理机制吗? 分析请求数据 下面是一段原始的请求数据: b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nConnectio ...

随机推荐

  1. phonegap学习笔记

    [windows下安装] 1 先安装node.js: http://nodejs.org/ 2 CMD下运行: C:\> npm install -g phonegap [创建项目] CMD下运 ...

  2. SQL Server调优系列基础篇(并行运算总结)

    前言 上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符.联合运算符的优化技巧. 本篇我们分析SQL Server的并行运算,作为多核计算机盛行的今天,SQL Server也会适时调整自 ...

  3. Nginx状态码499

    1.问题描述 140.207.202.187 - - [18/May/2016:10:30:58 +0800] "POST/v3/violations HTTP/1.1" 499 ...

  4. 在Linux下使用gradle自动打包

    一.下载软件包 1.下载地址 wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz wget http://services ...

  5. nginx设置黑/白名单

    编辑nginx配置文件: server { listen ; server_name www.xxx.cn; #白名单 allow 192.168.1.200; deny all; #黑名单 #den ...

  6. Linux IPC tcp/ip socket 编程

    模型 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include < ...

  7. ES6 Set/WeakSet

    ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素.Set实现为一个类,使用时需要先new. var s1 = new Set() s1.add(1) s1.add(2 ...

  8. windows文件关联、打开方式列表之修改注册表攻略

    这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...

  9. 如何在TFS中恢复系统默认查询”已指派给我”的设置(TFS 2013)

    故事是这样开始的,一天开发人员求助说,在浏览器中修改了系统默认的工作项查询"已指派给我"的后,发现这个查询每次都提示超时,并且没有办法恢复到初始的设置状态,因为出现超时提示以后,查 ...

  10. [译] OpenStack Liberty 版本中的53个新变化

    一个新的秋季,一个新的OpenStack 版本.OpenStack 的第12个版本,Liberty,在10月15日如期交付,而且目前发行版本已经备好了.那么我们期望能从过去六个月时间的开发中获得些什么 ...