灵活的背景定位

实现效果:

将背景图定位到距离容器底边 10px 且距离右边 20px 的位置。

background-position 方案

实现代码:

<div>海盗密码</div>
div {
/* 关键样式 */
background: url(http://csssecrets.io/images/code-pirate.svg)
no-repeat bottom right #58a;
background-position: right 20px bottom 10px; /* 其它样式 */
max-width: 10em;
min-height: 5em;
padding: 10px;
color: white;
font: 100%/1 sans-serif;
}

实现要点:

  • background-position 允许我们指定背景图片距离任意角的偏移量,只要我们在偏移量前面指定关键字。本例就是设置背景图片离右边缘 20px,离底边 10px。
  • 为了兼容不支持 background-position 这种语法的浏览器,提供一个合适的回退方案,那就是使用 backgroundbottom right 来定位,虽然不能设置具体的偏移量。

background-origin 方案

实现代码:

<div>海盗密码</div>
div {
/* 关键样式 */
background: url(http://csssecrets.io/images/code-pirate.svg)
no-repeat bottom right #58a;
background-origin: content-box;
padding: 10px 20px; /* 其它样式 */
max-width: 10em;
min-height: 5em;
color: white;
font: 100%/1 sans-serif;
}

实现要点:

  • background-origin 默认值是 padding-box,也就说我们设置 backgroundtop left 时左上角是 padding box(内边距的外沿框)的左上角。
  • 在本例中设置 background-origincontent-box,那么就相对于 content box(内容区的外沿框)的左上角,那么也就是背景图离容器的右边和底边的偏移量是跟着容器的 padding 值走了,那设置 padding: 10px 20px; 自然就可以实现本例的效果了。

calc() 方案

实现代码:

<div>海盗密码</div>
div {
/* 关键样式 */
background: url(http://csssecrets.io/images/code-pirate.svg)
no-repeat bottom right #58a;
background-position: calc(100% - 20px) calc(100% - 10px); /* 其它样式 */
max-width: 10em;
min-height: 5em;
padding: 10px;
color: white;
font: 100%/1 sans-serif;
}

实现要点:

  • 使用 calc 来动态计算使得背景图的左上角水平偏移 100% - 20px,垂直偏移 100% - 10px

条纹背景

水平条纹

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: linear-gradient(#fb3 50%, #58a 0);
background-size: 100% 30px; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 通过 linear-gradient(#fb3 50%, #58a 0) 生成一个背景图,该背景图分为上下不同实色的两部分,占满容器大小。
  • 然后通过 background-size:100% 30px; 设置该背景图的宽高(宽为容器宽度,高为30px),由于默认情况下背景是重复平铺的,这样整个容器就铺满高为 30px 的双色水平条纹。

垂直条纹

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: linear-gradient(to right, #fb3 50%, #58a 0);
background-size: 30px 100%; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 通过 linear-gradient(to right, #fb3 50%, #58a 0) 生成一个背景图,该背景图分为左右不同实色的两部分(to right 改变渐变的方向,从上下该为左右),占满容器大小。
  • 然后通过 background-size:30px 100%; 设置该背景图的宽高(宽为 30px,高为容器高度),由于默认情况下背景是重复平铺的,这样整个容器就铺满宽为 30px 的双色水平垂直条纹。

斜向条纹

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: linear-gradient(45deg,
#fb3 25%, #58a 0, #58a 50%,
#fb3 0, #fb3 75%, #58a 0);
background-size: 42.4px 42.4px; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 通过 linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%,#fb3 0, #fb3 75%, #58a 0) 生成一个如下图的可重复铺设的背景图(重点是修改渐变方向为 45 度,四条条纹)。

  • 然后通过 background-size: 42.4px 42.4px; 设置背景尺寸。42.4px 是通过勾股定理求得(在我们的斜向条纹中,背景尺寸指定的是直角三角形的斜边长度,但条纹的宽度实际上是直角三角形的高,所以要让条纹宽度为 15px,就必须近似设置背景尺寸为 42.4px)。

可灵活设置角度的斜向条纹

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: repeating-linear-gradient(60deg,
#fb3, #fb3 15px,
#58a 0, #58a 30px); /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • repeating-linear-gradient 生成色标是无限循环重复的,直到填满整个背景。不需要通过 background-size 设置背景尺寸,而且也不用考虑斜边的问题,因为在渐变轴设置的长度就是条纹的宽度。最重要的一点是可以灵活设置任意角度的条纹,只要修改一处角度就可以。

复杂的背景图案

网格

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: #58a;
background-image: linear-gradient(white 2px, transparent 0),
linear-gradient(90deg, white 2px, transparent 0),
linear-gradient(hsla(0,0%,100%,.3) 1px, transparent 0),
linear-gradient(90deg, hsla(0,0%,100%,.3) 1px, transparent 0);
background-size: 50px 50px, 50px 50px,
10px 10px, 10px 10px; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 没有特殊的,看代码吧。

波点

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: #655;
background-image: radial-gradient(tan 20%, transparent 0),
radial-gradient(tan 20%, transparent 0);
background-size: 30px 30px;
background-position: 0 0, 15px 15px; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 使用径向渐变 radial-gradient 来创建圆形、椭圆,或者它们的一部分。本例使用它实现圆点的阵列。
  • 然后生成两层错开的圆点阵列错开叠加到一起,这样就实现波点图案效果了。

棋盘

实现效果:

实现代码:

<div></div>
div {
/* 关键样式 */
background: #eee;
background-image:
linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0),
linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0);
background-position: 0 0, 15px 15px;
background-size: 30px 30px; /* 其它样式 */
width: 300px;
height: 200px;
}

伪随机背景

实现效果:

重复平铺的几何图案很美观,但看起来可能有一些呆板。其实自然界中的事物都不是以无限平铺的方式存在的。即使重复,也往往伴随着多样性和随机性。因此为了更自然一些,我们可能需要实现的背景随机一些,这样就显得自然一点。

实现代码:

<div></div>
div {
/* 关键样式 */
background: hsl(20, 40%, 90%);
background-image:
linear-gradient(90deg, #fb3 11px, transparent 0),
linear-gradient(90deg, #ab4 23px, transparent 0),
linear-gradient(90deg, #655 23px, transparent 0);
background-size: 83px 100%, 61px 100%, 41px 100%; /* 其它样式 */
width: 300px;
height: 200px;
}

实现要点:

  • 为了使得背景的重复性小一些,每组的条纹宽度都是质数。

摘自:《CSS揭秘》 第 2 章 背景与边框

CSS3实现多种背景效果的更多相关文章

  1. 有趣的CSS3背景 斜条纹

    今天逛的时候发现了一个有趣的css3实现的背景效果,代码实现 .noaccess { position: absolute; width: 300px; height: 100px; z-index: ...

  2. 实用CSS3的transform实现多种动画效果

    查看效果:http://keleyi.com/a/bjad/b6x9q8gs.htm 以下是代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ...

  3. 多种css3时尚侧栏菜单展开显示效果Off-Canvas Menu Effects

    今天我们想分享多种css3时尚侧栏菜单展开显示效果.侧边栏应用广泛,我们之前已经产生了一些效果灵感.风格演变,今天我们要展示一套新的灵感的现代效果.不同的布局和菜单的同步转换和页面可以让一切看起来更有 ...

  4. CSS3实现兼容性的渐变背景效果

    一.CSS3实现兼容性渐变背景效果,兼容FF.chrome.IE 渐变效果,现在主流的浏览器FF.Chrome.Opera.IE8+都可以通过带有私有前缀的CSS3属性来轻松滴实现渐变效果,IE7及以 ...

  5. 纯CSS3实现常见多种相册效果

    本文包含 1.CSS3中2D转换和3D转换的介绍. 2.在相册中的应用实例. CSS3中的转换效果和动画效果十分强大好用,可以实现一些常见的动态效果. 如此一来,CSS3便可以代替许多jQuery的功 ...

  6. CSS3与页面布局学习总结——多种页面布局

    一.负边距与浮动布局 1.1.负边距 所谓负边距就是margin取负值的情况,如margin:-40px:margin-left:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见 ...

  7. CSS3利用text-shadow属性实现多种效果的文字样式展现

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  8. [转:CSS3-前端] CSS3发光和多种图片处理

    原文链接:http://www.qianduan.net/css3-image-styles.html 一些上流的CSS3图片样式 神飞 发表于 24. Sep, 2011, 分类: CSS , 46 ...

  9. 应用多种变形CSS3

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

随机推荐

  1. Douglas Adams - 3 Rules That Describe Our Reactions To Technologies 科技影响生活的三个规律

    文章摘自http://highscalability.com/. 这个博客是大家都应该订阅的.原文地址http://highscalability.com/blog/2014/3/11/douglas ...

  2. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时 ...

  3. java设计模式---三种工厂模式之间的区别

    简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...

  4. 用 Freemarker 生成 word 文档

     阅读目录 添加图片 自定义载入模板 1.       用word写一个需要导出的word模板,然后存为xml格式. 2.       将xml中需要动态修改内容的地方,换成freemarker的 ...

  5. 求解n皇后

    要求:在国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法 思路:很直观的想法就是在棋盘上一个一个皇后的摆,如果冲突,则摆放在另一个位置,直至 ...

  6. Android必知必会-Handler可能引起的内存泄露

    在Android开发中,编写多线程通常会使用到Thread和Handler,细心的朋友会发现,很常见的写法会被编辑器提示有问题,new Handler(){} 内的代码背景颜色会变成黄色.Androi ...

  7. 设计比较好,有助于学习的Github上的iOS App源码 (中文)

    Github版 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 Coding ...

  8. Python学习笔记 - 迭代Iteration

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- d = {'a': 1, 'b': 2, 'c': 3} for key in d: # 默认迭代是key ...

  9. (二)plist的使用和序列帧动画

    六.plist的使用方法: iOS的程序在安装在手机上以后会把全部资源文件集成在一个文件夹中,这种文件集合称为bundle,对于一般的工程,只有一个bundle,即mainbundle,因此可以通过b ...

  10. 《15个提高Google搜索的技巧》

    为了得到更加「多元化」的搜索结果,虽然 Google 目前访问起来并不是那么方便,但是仍然有很多人把它作为常用搜索引擎在使用. 其实除了最简单的关键词搜索之外,搜索引擎还提供了很多精细化的搜索功能,如 ...