一文搞懂条纹背景

332 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第32天,点击查看活动详情

今天带大家来学习制作条纹背景,保证干货满满,看完直呼“学废了”。

线性渐变知几何

最简单的渐变

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3, #58a);
}

image.png

拉近填充

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 20%, #58a 80%);
}

image.png

再近点:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 40%, #58a 60%);
}

image.png

条纹背景

百分比相同会怎样?

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 50%, #58a 50%);
}

image.png

喔!有意思,这不就是条纹了嘛?设置下background-size不就实现了条纹背景了?

横向条纹

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 50%, #58a 50%);
    background-size: 100% 30px;
}

image.png

同理,我们可以很轻易做出纵向的条纹:

纵向条纹

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(to right, #fb3 50%, #58a 50%);
    background-size: 30px 100%;
}

image.png

多颜色条纹

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 33%, #58a 33%, #58a 66%, yellowgreen 66%);
    background-size: 100% 30px;
}

image.png

不知道大家有没有注意到这边的百分比,每个色值的开始和结束的百分比必须一致,这就意味着我想修改百分比占比就必须改两处,有没有只改一处就可以的写法呢?当然有,大家请看:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 33%, #58a 0, #58a 66%, yellowgreen 0);
    background-size: 100% 30px;
}

image.png

结束的百分比设置成0,意味着始终以起始的百分比一致, 这算是css语言的巧妙之处了。效果一模一样,现在我想调整百分比,只需修改一处地方了:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(#fb3 50%, #58a 0, #58a 66%, yellowgreen 0);
    background-size: 100% 30px;
}

image.png

倾斜条纹

顺着以上的思路,我们不难想到倾斜的条纹应该如何写,不假思索写出以下代码:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(45deg, #fb3 50%, #58a 0);
    background-size: 30px 30px;
}

image.png

效果可真棒呢!虽然不是我们想要的效果。我们应该如何做到无缝拼接呢?我们可以这样:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%, #fb3 0, #fb3 75%, #58a 0);
    background-size: 30px 30px;
}

image.png

不过这谁能轻易想到呢?而且如果角度不是45度呢?也能实现吗?试试换成其他角:

.demo {
    width: 180px;
    height: 120px;
    background-image: linear-gradient(50deg, #fb3 25%, #58a 0, #58a 50%, #fb3 0, #fb3 75%, #58a 0);
    background-size: 30px 30px;
}

image.png

不出所料,它裂开了!这种情况可咋整啊?不要慌,css强大的很,总能祭出大招让你意想不到。

更好的倾斜条纹

repeating-linear-gradient顾名思义就是重复线性渐变的意思,简单使用看看效果:

.demo {
    width: 180px;
    height: 120px;
    background-image: repeating-linear-gradient(50deg, #fb3, #58a 30px);
}

image.png

稍加改动:

.demo {
    width: 180px;
    height: 120px;
    background-image: repeating-linear-gradient(50deg, #fb3, #fb3 15px, #58a 0, #58a 30px);
}

image.png

举一反三:

.demo {
    width: 180px;
    height: 120px;
    background-image: repeating-linear-gradient(60deg, #fb3, #fb3 15px, #58a 0, #58a 30px, yellowgreen 0, yellowgreen 45px);
}

image.png

同色系条纹

.demo {
    width: 180px;
    height: 120px;
    background-color: #58a;
    background-image: repeating-linear-gradient(60deg, hsla(0, 0%, 100%, .1), hsla(0, 0%, 100%, .1) 15px, transparent 0, transparent 30px);
}

image.png

强大👍。学会了真的可以将背景玩出花来。小伙伴们你们学会了吗?学会了记得点赞收藏呀!

参考

《CSS揭秘》纸质书本

往期精彩

# 扫福开始了,自己写个福来扫啊~

# 从零开始做一个贪吃蛇游戏,会vue就行

# 血条消失术?用css教你实现

# 用canvas生成一个佛系头像

# 我用一个div就画出了一个大西瓜~