灵活的背景定位

实现效果:

将背景图定位到距离容器底边 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 这种语法的浏览器,提供一个合适的回退方案,那就是使用 background 的 bottom 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,也就说我们设置 background 为 top left 时左上角是 padding box(内边距的外沿框)的左上角。
  • 在本例中设置 background-origin 为 content-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;
}

实现要点:

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

CSS3 实现复杂的背景图案的更多相关文章

  1. CSS3绘制旋转的太极图案(一)

        实现步骤: 基础HTML: <div class="box-taiji"> <div class="circle-01">< ...

  2. css3新增属性-background背景

    css3新增属性 边框属性 背景属性 文字属性 颜色属性 背景属性 属性 说明 background-image 添加背景图片 background-size 指定背景图像的大小 background ...

  3. Trianglify - 生成五彩缤纷的 SVG 背景图案

    Trianglify 是一个能够生成五颜六色的三角形图案的 JavaScript 库,可以用来作为 SVG 图像和 CSS 背景.它的灵感来自于 Btmills 的 Geopattern,并使用 d3 ...

  4. 利用css3新增选择器制作背景切换

    之前写css3的时间都是捡项目需要的来用,没有系统的学习过,这几天好好的补了一下css3的知识,真的获益匪浅!觉得新增的那些选择器是有用至极的!今天就来所这几天的所学做一个点击标签切换背景的效果,是纯 ...

  5. CSS3魔法堂:背景渐变(Gradient)

    一.前言 很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅. 二.CSS3的各种背景渐变   1. 线性渐变 示例——七彩虹 ...

  6. css3学习总结4--CSS3背景

    css3背景 1. background-size 2. background-origin 3. background-clip 示例: className { background:url(bg_ ...

  7. Trianglify – 五彩缤纷的 SVG 背景图案

    Trianglify 是一个能够生成五颜六色的三角形图案的 JavaScript 库,可以用来作为 SVG 图像和 CSS 背景.它的灵感来自于 Btmills 的 Geopattern,并使用 d3 ...

  8. css3学习笔记之背景

    background-size background-size指定背景图像的大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 &l ...

  9. 【Multiple backgrounds】用CSS3实现网页多重背景

    对于背景属性background-image大家应该已经很熟悉了,在CSS2中与它相关的属性还有background-repeat(设置背景是否重复及重复的方式).background-positio ...

随机推荐

  1. 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类

    概述 MobileNetsV2是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网,此模型基于 MobileNetV2: Inverted Residuals and Linear ...

  2. Servlet中的请求转发

    请求转发时,传递到下一个servlet的request和response可能内存地址不同,但是里面包含的内容是相同的 // servlet1 RequestDispatcher dispatcher ...

  3. SpringSceurity(4)---短信验证码功能实现

    SpringSceurity(4)---短信验证码功能实现 有关SpringSceurity系列之前有写文章 1.SpringSecurity(1)---认证+授权代码实现 2.SpringSecur ...

  4. Zookeeper实现服务注册/发现

    what that? Zookeeper在分布式开发中使用频繁,但许多框架都对其进行了封装,初学者可能无法较好的理解其工作原理,该文章演示了使用Zookeeper实现服务注册,服务发现的简单demo, ...

  5. Linux 和 Vim 常用命令整理

    Sftp常用命令: lcd f:本地切换到 F盘 lpwd本地 当前目录 lls本地 文件列表 put 本地 上传文件到服务器(put输入后,回车会有弹窗,选择上传文件) get下载文件到本地 Lin ...

  6. v-else-if(v-show)

    <div id="app"> <div v-if="type === 'A'"> A </div> <div v-el ...

  7. 【MySQL】究竟什么是MVCC呢?

    MVCC是什么呢? MVCC其实就是一个多版本并发控制,即多个不同版本的数据实现并发控制的技术,其基本思想是为每次事务生成一个新版本的数据, 在读数据时选择不同版本的数据即可以实现对事务结果的完整性读 ...

  8. Chrome启动选项

    1. Chrome Options 这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象 ...

  9. 附016.Kubernetes_v1.17.4高可用部署

    一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...

  10. PytorchMNIST(使用Pytorch进行MNIST字符集识别任务)

    都说MNIST相当于机器学习界的Hello World.最近加入实验室,导师给我们安排了一个任务,但是我才刚刚入门呐!!没办法,只能从最基本的学起. Pytorch是一套开源的深度学习张量库.或者我倾 ...