该系列所有的技巧都来至于 《css揭秘》 提取码:9x8n
背景与边框
1. 半透明边框
background-clip: border-box;
.wrapper {
width: 50px;
height: 50px;
border: 10px solid hsla(0, 0%, 100%, .5);
background: rgb(230, 59, 82);
background-clip: border-box;
}
效果:
2. 多重边框
box-shadow,接受','进行分割
box-shadow: 0 0 0 10px pink, 0 0 0 20px rgb(235, 130, 144), 0 0 0 30px rgb(230, 59, 82);
3. 背景定位
background-position + background-origin (设置定位参考源)
.wrapper {
width: 100px;
height: 100px;
padding: 10px;
background: url('./images/test.jpg') no-repeat pink right bottom;
background-size: 60px 60px;
background-origin: content-box; /* */
}
效果
4. 边框内圆角
border-radius + outline(利用其不跟随 border-radius 的特性) + box-shadow(填充 outline 与 border 之间的空隙)
.box9 {
width: 100px;
height: 50px;
border-radius: 1.5em;
outline: 10px solid rgb(230, 59, 82);
box-shadow: 0 0 0 10px rgb(230, 59, 82);
background-color: pink;
}
效果
5. 条纹背景
5-1 横条纹
linear-gradient + background-size
如果有文字信息,那么每一行文字的 line-height 与 background-size 的高度保持一致就行了
.box10 {
width: 100px;
height: 100px;
background: linear-gradient(pink 50%, rgb(230, 59, 82) 0); /* 支持以','分割, 如果后面取的只小于前面的值,那么默认取前面的最大值 */
background-size: 100% 20px; /* 控制每一组条纹的高度 */
}
效果
5-2 任意角度条纹
repeating-linear-gradient
.wrapper {
width: 100px;
height: 100px;
background: repeating-linear-gradient(45deg, pink, rgb(230, 59, 82) 30px);
}
效果
6. 复杂的背景图案
6-1 围棋网格
linear-gradient
.wrapper {
width: 100px;
height: 100px;
background: pink;
background-image:
linear-gradient(rgb(230, 59, 82) 1px, transparent 0), /* 上面 */
linear-gradient(90deg, rgb(230, 59, 82) 1px, transparent 0);/* 左面 */
background-size: 20px 20px;
}
效果
6-2 桌布风格
linear-gradient
.wrapper {
width: 110px;
height: 110px;
background: white;
background-image: linear-gradient(90deg, rgba(200, 0, 0, .5) 50%, transparent 0), linear-gradient(rgba(200, 0, 0, .5) 50%, transparent 0);
background-size: 20px 20px;
}
效果
6-3 波点图
radial-gradient + background-position
.wrapper {
width: 100px;
height: 100px;
background: pink;
background-image: radial-gradient(rgb(228, 77, 97) 30%, transparent 0),
radial-gradient(rgb(235, 130, 144) 30%, transparent 0);
background-size: 30px 30px;
background-position: 0 0, 15px 15px; /* 用逗号分隔,对应上面设置的background-image */
}
效果
6-4 棋盘
linear-gradient + background-position 利用4个三角形进行拼接
.wrapper {
width: 100px;
height: 100px;
background: pink;
background-image: linear-gradient(45deg, rgb(228, 77, 97) 25%, transparent 0), linear-gradient(45deg, transparent 75%, rgb(228, 77, 97) 0),
linear-gradient(45deg, rgb(165, 22, 41) 25%, transparent 0), linear-gradient(45deg, transparent 75%, rgb(165, 22, 41) 0);
background-size: 30px 30px;
background-position: 0 0, 15px 15px, 15px 15px, 30px 30px;
}
效果
7. 伪随机背景
将 background-size 的尺寸设置为质数,那么重复一次所需要的长度至少为 41px * 61px * 83px
.wrapper {
width: 100px;
height: 100px;
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 41px, transparent 0);
background-size: 41px 100%, 61px 100%, 83px 100%;
}
8. 图像边框
8-1 图片作为背景
background-clip + background-origin
.wrapper {
width: 100px;
height: 100px;
/* padding: 1em; */
border: 1em solid transparent;
background: linear-gradient(white, white) padding-box, url(./images/test.jpg) border-box 0 / cover;
}
效果
8-2 信封
repeating-linear-gradient设置间接条纹
.wrapper {
width: 100px;
height: 100px;
border: .5em solid transparent;
background: linear-gradient(white, white) padding-box,
/* 设置背景 */
repeating-linear-gradient(-45deg,
red 0, red 12.5%,
transparent 0, transparent 25%,
#58a 0, #58a 37.5%,
transparent 0, transparent 50%) 0 0 / 2em 2em border-box;
}
效果
8-3 蚂蚁线
原理与信封一样,边框设置为1px
/* 引入动画 */
@keyframes ants {
to {
background-position: 100%
}
}
.wrapper {
width: 100px;
height: 100px;
padding: 1em;
border: 1px solid transparent; /* 设置边框为1px */
background:
linear-gradient(white, white) padding-box,
repeating-linear-gradient(-45deg,
black 0, black 25%, white 0, white 50%) 0 / .6em .6em;
animation: ants 3s linear infinite;
}
效果