整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS 背景(一)-每天几个样式,轻松玩转CSS

ss背景可以是纯色,也可以是图片。

背景色

background-color 属性为元素设置背景色。

p{background-color: #ccc;}

在浏览器中显示:

设置p元素的背景颜色为灰色

注意:background-color 不能继承,其默认值是 transparent(透明的)。如果一个元素没有指定背景色,那么背景就是透明的,这样其祖先元素的背景才能可见。

背景图像

background-image属性可以设置图片作为其背景。background-image 属性的默认值是 none,表示背景上没有放置任何图像。

body{background-image: url(../img/flower.jpg)}

上面代码的意思是给body元素添加一个背景图片,url里面是图片的路径。我们先看一下原图:

背景图原图

那么我们再看一下浏览器中显示的背景图效果:

惊不惊喜,意不意外!因为原图的大小不足以平铺整个body,所以默认对背景图进行平铺。如果你不想让背景平铺或者想控制它水平或者垂直平铺,那么用background-repeat 最理想了。

背景重复

background-repeat 属性设置是否及如何重复背景图像。

常用属性值:

repeat 默认,背景图像将在垂直方向和水平方向平铺。

repeat-x 水平方向平铺。

repeat-y 垂直方向平铺。

no-repeat 背景只显示一次。

我们用其中的一个属性值演示一下,其他的童靴们自己练习。

给背景图设置background-repeat:no-repeat ,水平和垂直都不平铺。

设置背景图只显示一次

在浏览器中显示:

你必须非常努力,才能看起来毫不费力!

关注小白前端,持续收到文章推送!

文将介绍一些利用 CSS 中的 background、mix-blend-mode、mask 及一些相关属性,制作一些稍微复杂、酷炫的背景。

通过本文,你将会了解到 CSS background 中更为强大的一些用法,并且学会利用 background 相关的一些属性,采用不同的方式,去创造更复杂的背景图案。在这个过程中,你会更好的掌握不同的渐变技巧,更深层次的理解各种不同的渐变。

同时,借助强大的 CSS-Doodle,你将学会如何运用一套规则,快速创建大量不同的随机图案,感受 CSS 的强大,走进 CSS 的美。

背景基础知识

我们都知道,CSS 中的 background 是非常强大的。

首先,复习一下基础,在日常中,我们使用最多的应该就是下面 4 种:

  • 纯色背景 background: #000:


  • 线性渐变 background: linear-gradient(#fff, #000) :


  • 径向渐变 background: radial-gradient(#fff, #000) :


  • 角向渐变 background: conic-gradient(#fff, #000) :


背景进阶

当然。掌握了基本的渐变之后,我们开始向更复杂的背景图案进发。我最早是在《CSS Secret》一书中接触学习到使用渐变去实现各种背景图案的。然后就是不断的摸索尝试,总结出了一些经验。

在尝试使用渐变去制作更复杂的背景之前,列出一些比较重要的技巧点:

  • 渐变不仅仅只能是单个的 linear-gradient 或者单个的 radial-gradient,对于 background 而言,它是支持多重渐变的叠加的,一点非常重要;
  • 灵活使用 repeating-linear-gradeint(repeating-radial-gradeint),它能减少很多代码量
  • transparent 透明无处不在
  • 尝试 mix-blend-mode 与 mask,创建复杂图案的灵魂
  • 使用随机变量,它能让一个 idea 变成无数美丽的图案

接下来,开始组合之旅。

使用 mix-blend-mode

mix-blend-mode ,混合模式。最常见于 photoshop 中,是 PS 中十分强大的功能之一。在 CSS 中,我们可以利用混合模式将多个图层混合得到一个新的效果。

关于混合模式的一些基础用法,你可以参考我的这几篇文章:

  • 不可思议的颜色混合模式 mix-blend-mode
  • 不可思议的混合模式 background-blend-mode

然后,我们来尝试第一个图案,先简单体会一下 mix-blend-mode 的作用。

我们使用 repeating-linear-gradient 重复线性渐变,制作两个角度相反的背景条纹图。正常而言,不使用混合模式,将两个图案叠加在一起,看看会发生什么。


额,会发生什么就有鬼了:sweat_smile: 。显而易见,由于图案不是透明的,叠加在一起之后,由于层叠的关系,只能看到其中一张图。


好,在这个基础上,我们给最上层的图案,添加 mix-blend-mode: multiply,再来一次,看看这次会发生什么。


可以看到,添加了混合模式之后,两张背景图通过某种算法叠加在了一起,展现出了非常漂亮的图案效果,也正是我们想要的效果。

CodePen Demo - Repeating-linear-gradient background & mix-blend-mode

尝试不同的 mix-blend-mode

那为什么上面使用的是 mix-blend-mode: multiply 呢?用其他混合模式可以不可以?

当然可以。这里仅仅只是一个示例,mix-blend-mode: multiply 在 PS 中意为正片叠底,属于图层混合模式的变暗模式组之一。

我们使用上面的 DEMO,尝试其他的混合模式,可以得到不同的效果。


可以看到,不同的混合模式的叠加,效果相差非常之大。当然,运用不同的混合模式,我们也就可以创造出效果各异的图案。

CodePen Demo - Repeating-linear-gradient background & mix-blend-mode

借助 CSS-Doodle 随机生成图案

到这,就不得不引出一个写 CSS 的神器 -- CSS-Doodle,我在其他非常多文章中也多次提到过 CSS-doodle,简单而言,它是一个基于 Web-Component 的库。允许我们快速的创建基于 CSS Grid 布局的页面,并且提供各种便捷的指令及函数(随机、循环等等),让我们能通过一套规则,得到不同 CSS 效果。

还是以上面的 DEMO 作为示例,我们将 repeating-linear-gradient 生成的重复条纹背景的颜色、粗细、角度随机化、采用的混合模式也是随机选取,然后利用 CSS-Doodle,快速随机的创建各种基于此规则的图案:


可以点进去尝试一下,点击鼠标即可随机生成不同的效果:

CodePen Demo -- CSS Doodle - CSS MIX-BLEND-MODE Background

尝试使用径向渐变

当然,上面使用的是线性渐变,同样,我们也可以使用径向渐变运用同样的套路。

我们可以使用径向渐变,生成多重的径向渐变。像是这样:


给图片应用上 background-size,它就会像是这样:


像上文一样,我们稍微对这个图形变形一下,然后叠加两个图层,给最上层的图形,添加 CSS 样式 mix-blend-mode: darken:


CodePen Demo -- radial-gradient & mix-blend-mode Demo

借助 CSS-Doodle 随机生成图案

再来一次,我们使用 CSS-Doodle,运用上述的规则在径向渐变,也可以得到一系列有意思的背景图。


可以点进去尝试一下,点击鼠标即可随机生成不同的效果:

CodePen Demo -- CSS Doodle - CSS MIX-BLEND-MODE Background 2

当然,上述的叠加都是非常简单的图案的叠加,但是掌握了这个原理之后,就可以自己尝试,去创造更复杂的融合。:dog:

上述的叠加效果是基于大片大片的实色的叠加,当然 mix-blend-mode 还能和真正的渐变碰撞出更多的火花。

在不同的渐变背景中运用混合模式

在不同的渐变背景中运用混合模式?那会产生什么样美妙的效果呢?

运用得当,它可能会像是这样:


umm,与上面的条纹图案完全不一样的风格。

你可以戳进 gradienta.io 来看看,这里全是使用 CSS 创建的渐变叠加的背景图案库。

使用混合模式叠加不同的渐变图案

下面,我们也来实现一个。

首先,我们使用线性渐变或者径向渐变,随意创建几个渐变图案,如下所示:


接着,我们两两之间,从第二层开始,使用一个混合模式进行叠加,一共需要设定 5 个混合模式,这里我使用了 overlay, multiply, difference, difference, overlay。看看叠加之后的效果,非常的 Nice:


CodePen Demo -- Graideint background mix

由于上面动图 GIF 的压缩率非常高,所以看上去锯齿很明显图像很模糊,你可以点进上面的链接看看。

然后,我们可以再给叠加后的图像再加上一个 filter: hue-rotate(),让他动起来,放大一点点看看效果,绚丽夺目的光影效果:


CodePen Demo -- Graideint background mix 2

借助 CSS-Doodle 随机生成图案

噔噔噔,没错,这里我们又可以继续把 CSS-Doodle 搬出来了。

随机的渐变,随机的混合模式,叠加在一起,燥起来吧。

使用 CSS-Doodle 随机创建不同的渐变,在随机使用不同的混合模式,让他们叠加在一起,看看效果:


当然,由于是完全随机生成的效果,所以部分时候生成出来的不算太好看或者直接是纯色的。不过大部分还是挺不错的 :joy:

CodePen Demo -- CSS Doodle Mix Gradient


感谢坚持,看到这里。

上述上半部分主要使用的混合模式

关注我看下半部分,将主要使用 mask

精彩继续~

一篇文章呢,我们写了相关CSS的基础语法,包括CSS语法、多重声明、选择器的分组及CSS的引入,那么学会了怎么写CSS,接下来就要想写那些样式,包括些什么样式,由于内容之多,所以分成上下篇,下面呢,我给大家介绍一下。

【引言】

通俗点说,就是给我们的网页“化妆”,就像你女朋友化妆一样,给头发喷点水,给眼睛画个眼线,给脸蛋抹点粉,然后穿上漂亮的衣服,网页元素添加CSS样式也一样,大点说,给页面头部添加一个样式,给导航添加一个样式,给身体添加一个样式,然后给底部添加一个样式,就这样才形成一个漂亮,所谓用户体验度良好的页面,然后加以数据请求让它动起来,都完事了,你才能带女朋友出门,让你的网页上线。

让我们来看看有哪些CSS样式。

CSS背景

CSS允许应用纯色作为背景,也允许使用背景图像创建较为复杂的效果。

1、背景色(background-color)

可以为所有元素设置背景色,这包括body一直到<a></a>和<em></em>等行内元素。background-color不能继承,其默认值是transparent,就是透明背景,相当于没有指定任何背景色。例如:

<style type="text/css">
			h1 {
 background: red;/*定义字体背景为红色*/
 padding: 20px;/*向外延伸*/
 }
</style>
		

也可以增加内边距将背景色从元素中的文本向外延伸内边距值。

2、背景图像(background-image)

使用background-image可以为元素设置背景图像,其默认值为none,表示背景图像为空,如需设置,还需为这个属性设置一个URL值,例如:

h1 {
				background-image: url(images/demo.jpg);/*定义背景图片*/
			}

这样就为h1元素指定了一个名为“demo”的图片,你也可以为行内元素设置背景图像,例如a链接元素。但背景图片的设置有很多样式,例如下面:

2.1、背景重复(background-repeat)

如果需要设置背景图像为平铺,属性值为repeat,这样一来就会让背景图像在水平垂直方向上都平铺,方向由repeat-x和repeat-y控制,no-repeat则不会在任何方向上平铺。默认背景图像从元素的左上角开始平铺,例如:

h1 {
				background-image: url(images/demo.jpg);/*定义背景图片*/
				background-repeat: no-repeat;/*不平铺*/
				background-repeat: repeat-y;/*在垂直方向平铺*/
				background-repeat: repeat-;/*在水平方向平铺*/
			}

2.3、背景定位(background-position)

可以利用background-position属性改变图像在背景中的位置。让背景图像定位在想定位的地方。

h1 {
				background-image: url("images/pig.jpg");/*定义背景图片*/
				background-color: cyan;/*定义背景颜色*/
				background-repeat: repeat-y;/*在y轴平铺*/
				background-position:top center;/*两个属性值*/
				background-size: 55px 44px;/*定义背景图片大小*/
			}

为background-position属性提供了很多值,例如:

关键字:top、bottom、left、right和center,一般情况下这些关键字都会成对出现。top left使图像放置在元素内边距的右上角,根据规范,顺序可以颠倒,说白了,就是方向左上、左下、右上、右下、中间,在数学上,平面内一个点位置由(x,y)两个坐标确定,CSS中的背景图像也是。

百分数值:就是把(x,y)上的值由百分数来确定。其默认的百分数值为0% 0%。相当于top left。这就解释了背景图像为什么总是从元素的内边距区左上角开始平铺。你设置定了值就根据你的值来确定位置。

长度值:就是设置具体的值,5px 10px,开发中这种用的最多。

2.4、背景大小(background-size)

可以利用background-size来调整背景图片的大小,让其更好的适应我们的元素。例如:

background-size: length|percentage|cover|contain;

length:设置背景图像的高度和宽度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 "auto"。

background-size: 10px 20px;

percentage:以父元素的百分比来设置背景图像的宽度和高度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 "auto"。

background-size: 100% 100%;

cover:把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。

background-size: cover;

contain:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。

background-size: contain;

2.5、背景关联(background-attachment)

有的时候要设置页面滚动,其背景图像看起来固定的特效,就是说,页面滚动,滚动到背景图像位置的时候图像出显示,超过的时候,图像就会消失。例如:

h1 {
				background-image: url(images/demo.jpg);/*定义字体背景为红色*/
				background-attachment:fixed
			}

背景图像

CSS文本

用一些CSS样式对其文本进行相关的操作。

1、对齐方式(text-align)

这个属性它会影响元素中的文本行对齐的方式。

1.1、值center、left、right会导致元素中文本居中、左对齐、右对齐,例如,左对齐:text-align:left。

提示:将块级元素或表元素居中,要通过在这些元素上适当的设置左、右外边距来实现。

text-align:center 与 <CENTER>

这两个作用大不相同,<center>不仅影响文本,还会把整个元素居中,而text-align:center只影响文本内容。

1.2、justify

就是说两端对齐,它会自动调整文本间的间隔,使每行长度一样,文本看起来更整洁。此外还有一个属性就是:text-align-last: center;把文本的最后一行居中显示。

2、字间隔(word-spacing)

word-spacing属性可以改变字(单词)之间的标准间隔,默认值为0,可以接受一个正值会负值,

h1 {word-spacing: 30px;}
h2 {word-spacing: -0.5em;}

3、字母间隔(letter-spacing)

字母间隔修改的是字符或字母之间的间隔。也可以是正值或负值。

h1 {letter-spacing: -0.5em}
h2 {letter-spacing: 20px}

4、字符转化(text-transform)

text-transform属性处理文本的大小写,有4个值:none、uppercase、lowercase、capitalize,none就是啥也不变,uppercase,lowercase就是将文本转化为大写和小写,capitalize只将首字母转化为大写。

h1 {
				text-transform:none;
				text-transform:uppercase;
				text-transform:lowercase;
				text-transform:capitalize;
			}

5、文本装饰(text-decoration)

这个属性是来处理文本的,估计没这个属性,有些字体只能切图或者由更多的代码来完成。有5个值,none、underline、overline、line-through、blink。none就是默认啥也没有,underline会对文本加下划线,overline相反,会在文本顶端加上划线,line-through则会在文本中间加一条线,blink会让文本闪烁。

h1 {
				text-decoration:none;
				text-decoration:underline;
				text-decoration:overline;
				text-decoration:line-through;
				text-decoration:blink;
			}

6、处理空白符(white-space)

这个属性会影响源文档中的空格,换行和tab字符处理,也有5个值,normal、pre、nowrap、pre-wrap、pre-line。注意后两个在IE7和FireFox2.0浏览器中不支持。

6.1、normal

去除文本多余的空白符,包括换行符,多个空格符也会换为一个空格。

6.2、pre

加上这个,空白符的处理就不一样,不会被忽略。

6.3、nowrap

防止文本换行。

6.4、pre-wrap和pre-line

作用是允许开发人员更好的控制空白符,设置为pre-wrap,文本保留空白符,也会正常换行,如果设置为pre-line,不会保留空白符,但会保留换行符。

h1 {
				white-space:normal;
				white-space:nowrap;
				white-space:pre;
				white-space:pre-line;
				white-space:pre-wrap;
			}

7、文本方向(direction)

这个属性影响块级元素中的文本的方向,表中列布局的方向、内容填充其元素框的方向、以及两端对齐元素中最后一行的位置。

注意:对于行内元素,只有当unicode-bidi属性设置为embed或bidioverride时才会应用direction属性。

direction属性有两个值:ltr和rtl。大多数情况下,默认值是ltr,显示从左到右的文本,如果显示从右到左的文本,应使用值rtl。

h1 {direction:rtl;unicode-bidi:bidi-override;}
h2{direction:ltr;unicode-bidi:embed;}

8、缩进文本( text-indent)

这是一种常见的文本格式化效果,使得所有元素的第一行缩进一个给定的长度,也可以是负值。但无法应用于行内元素。

注意:也可以用左内边距或外边距创造这种效果,一般发表的新闻,文章之类的使用的较多。

p {text-indent: 5em;}
p {text-indent: -5em;}

但是,使用负值的时候要当心,如果设置了负值,那么首行的文本会超出浏览器窗口的左边界。建议配合padding-left使用。

p {text-indent: -5em; padding-left: 5em;}

8.1、适用百分比

百分数要相对于缩进元素父元素的宽度。换句话说,如果将缩进值设置为 20%,所影响元素的第一行会缩进其父元素宽度的 20%。

例如,缩进值是父元素的20%,即100px。

<style type="text/css">
			div {width: 500px;}
			p {text-indent: 20%;}
</style>
<div>
		<p>这是一个段落</p>
</div>

8.2、继承

text-indent属性可以继承。就是说给父级设置了缩进,子元素也会继承该属性,进行缩进。

9、文本阴影(text-shadow)

这个属性设置文本阴影。所有的主流浏览器支持text-shadow,IE9以及更早的不支持。

基本语法为:

text-shadow: h-shadow v-shadow blur color;

text-shadow 属性向文本添加一个或多个阴影。该属性是逗号分隔的阴影列表,每个阴影有两个或三个长度值和一个可选的颜色值进行规定。省略的长度是 0。

h-shadow:水平阴影的位置。允许负值。

v-shadow:垂直阴影的位置。允许负值。

blue:模糊的距离

color:阴影的颜色

文本操作


CSS样式中的背景和文本今天就讲到这里了,下一篇讲解CSS样式中的字体、链接、列表、表格、轮廓,希望大家不要放弃学习哦!

PS:

本文为‘Web前端进阶指南’原创,手动码字不易,小伙伴们别忘了顺手点个赞加个关注哈,有什么不懂得下方留言评论或私信。谢谢大家哈!