本文已参与「新人创作礼」活动,一起开启掘金创作之路。
需求介绍
在页面上,有时会需要展示一些透明背景的图片,为了展示其透明的背景,通常会像PS一样,使用黑白相间的格子组成背景,从而告诉用户,这是一张透明的图片。
效果预览
实现原理
- 利用渐变(background: linear-gradient())的效果来实现黑白相间,如下代码:
<style>
#app {
width: 200px;
height: 200px;
background: linear-gradient(
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
)
}
</style>
</head>
<body>
<div id="app"></div>
</body>
效果:
- 然后加以旋转,使渐变背景倾斜,代码:
#app {
width: 200px;
height: 200px;
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
);
}
效果:
3.然后设置背景大小,并且使其自动平铺填充background-repeat:repeat;
, 因为默认就是平铺,所以不用特地设置这个值,只需设置背景大小即可:
#app {
width: 200px;
height: 200px;
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
);
background-size: 20px 20px;
}
效果:
- 通过以上操作,发现基本实现了一半的效果,毕竟需求是方格,而不是三角形,那么每个格子只需要再来一个三角形即可,为了方便区分,另一个颜色先设置为
red
:
#app {
width: 200px;
height: 200px;
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
),
linear-gradient(
45deg,
red 25%,
transparent 25%,
transparent 75%,
red 75%,
red 100%
);
}
效果:
- 可以看到,两种渐变重叠在一起,这时候需要分别设置两种渐变起始位置,使其分开,为了实现这个效果,将红色渐变的起始位置向左、向下平移背景大小一半的距离:
#app {
width: 200px;
height: 200px;
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
),
linear-gradient(
45deg,
red 25%,
transparent 25%,
transparent 75%,
red 75%,
red 100%
);
background-position: 0 0, 100px 100px;
}
效果:
- 到此为止,已经实现我们需要效果了,接下来只需要将红色设置为灰色,然后设置背景的大小,将背景平铺即可,完整代码如下:
#app {
width: 200px;
height: 200px;
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
),
linear-gradient(
45deg,
rgba(0, 0, 0, 0.4) 25%,
transparent 25%,
transparent 75%,
rgba(0, 0, 0, 0.4) 75%,
rgba(0, 0, 0, 0.4) 100%
);
/* 背景大小必须小于盒子的大小 */
background-size: 20px 20px;
/* 第二种渐变的偏移必须为为背景大小的一半 */
background-position: 0 0, 10px 10px;
}
效果:
至此,黑白格背景效果实现完毕。