html中背景条纹效果,CSS揭秘之《条纹背景》

先来说说渐变吧

background: linear-gradient(#fb3 20%, #58a 80%);

效果图如下所示:也就是说真正的渐变只出现在容器 60%(从20%到80%) 的高度区域

bVUhir?w=193&h=124

如果把两个色标合在一起,会怎样呢

w3c是这样规定的“如果多个色标具有相同的位置, 它们会产生一个无限小的过渡区域,

过渡的起止色分别是第一个和最后一个指定值。 从效果上看, 颜色会在那

个位置突然变化, 而不是一个平滑的渐变过程”

也就是说假设如下设置的话:

background: linear-gradient(#fb3 50%, #58a 50%);

会产生如下所示效果

bVUhiW?w=196&h=122

因为渐变是一种由代码生成的图像, 我们能像对待其他任何背景图像那

样对待它, 而且还可以通过 background-size 来调整其尺寸

background: linear-gradient(#fb3 50%, #58a 50%);

background-size: 100% 30px;

会产生如下效果:

bVUhi9?w=196&h=120

但是现在这样的代码就会有一个问题,如果我想改变50%则需要改变两处

根据w3c的规定“如果某个色标的位置值比整个列表中在它之前的色标的位置值都要

小, 则该色标的位置值会被设置为它前面所有色标位置值的最大值。”

所以上述代码可改为:因为如果我们把第二个色标的位置值设置为 0, 那它的位置就

总是会被浏览器调整为前一个色标的位置值

background: linear-gradient(#fb3 50%, #58a 0);

background-size: 100% 30px;

具体效果见链接

同理可以创建多重边框:

background: linear-gradient(#fb3 33.3%,

#58a 0, #58a 66.6%, yellowgreen 0);

background-size: 100% 45px;

bVUhkq?w=193&h=124

备注:其实写法不止一种

/* background: linear-gradient(#fb3 25%, #58a 0,#58a 50%,yellowgreen 0,yellowgreen 75%,red 0,red 100%); */

/* 两种都可以 */

/* background: linear-gradient(#fb3 25%, #58a 0,#58a 50%,yellowgreen 0,yellowgreen 75%,red 0); */

垂直条纹:在开头加上一个额外的参数来指定渐变的方向

body {

background: linear-gradient(to right, #fb3 50%, #58a 0);

background-size: 30px 100%;

}

具体效果见链接

如果我们想要45度角的条纹背景,可能会想用如下代码来实现:

body {

background: linear-gradient(45deg, #fb3 50%, #58a 0);

background-size: 30px 30px;

}

可是得到的效果却是这样的

bVUhms?w=118&h=91

事实上的原理是这样子的,如下图所示,也就是说单个切片中是包含四个条纹的,

bVUhmN?w=196&h=121

bVUhnp?w=208&h=156

所以代码最后演变为:

body {

background: linear-gradient(45deg,

#fb3 25%, #58a 0, #58a 50%,

#fb3 0, #fb3 75%, #58a 0);

background-size: 42.4px 42.4px;

}

具体效果见链接

上面只说了45deg和90deg这种特殊角度的条纹,如果要30deg或60deg的怎么办?

来看看repeating-linear-gradient的威力吧

其实上面45deg可简化为:

body {

background: repeating-linear-gradient(45deg,

#fb3, #fb3 15px, #58a 0, #58a 30px);

background-size: 42.4px 42.4px;

}

利用repeating-linear-gradient可制作60deg的条纹效果:

html {

background: repeating-linear-gradient(60deg,

#fb3, #fb3 15px,

#58a 0, #58a 30px);

height: 100%;

/* 以下方式也可以实现,效果有一丁点儿差别,可能是我的background-size 没有算准确 */

/* background: repeating-linear-gradient(45deg,#fb3 0,#fb3 25%,#58a 0,#58a 50%);

background-size: 42.426406871px 42.426406871px; */

}

具体效果见链接

有一个小秘诀在于:条纹颜色都是相近的,只是在明度方面有着轻微的差异

所以我们可以:不再为每种条纹单独指定颜色, 而是把最深的颜色指定为背景色, 同时把半透明白色的条纹叠加在背景色之上来得到浅色条纹

html {

background: #58a;

background-image: repeating-linear-gradient(30deg,

hsla(0, 0%, 100%, .1), hsla(0, 0%, 100%, .1) 15px,

transparent 0, transparent 30px);

height: 100vh;

}

具体效果见链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值