css 利用 linear-gradient 实现条纹背景

1. 水平条纹背景

当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下:

 
{
background: linear-gradient(#aaa, #ddd);
}

image

尝试拉近色标的距离,会发现渐变区域变小了:

 
{
background: linear-gradient(#aaa 40%, #ddd 60%);
}

image

当渐变色的色标设置为相同位置时,过渡区域就会变成无限小,看起来的效果就会如下图所示:

 
{
background: linear-gradient(#aaa 50%, #ddd 50%);
}

image

然后通过 background-size 来调整他的尺寸,由于默认情况下背景是重复平铺的,所以得到的效果就是填满水平条纹:

 
{
background: linear-gradient(#aaa 50%, #ddd 50%);
background-size: 100% 30px;
}

image

如果某个色标的位置值比整个列表中在它之前的色标的位置值都要小,则该色标的位置值会被设置为它前面所有色标位置值的最大值。因此后面色标的位置可以写成0:

 
{
background: linear-gradient(#aaa 50%, #ddd 0);
background-size: 100% 30px;
}

可以通过修改色标的位置来生成不等宽的条纹:

 
{
background: linear-gradient(#aaa 30%, #ddd 0);
background-size: 100% 30px;
}
{
background: linear-gradient(#aaa 70%, #ddd 0);
background-size: 100% 30px;
}

image

 

image

如果需要多种颜色的条纹,设置多种颜色渐变即可:

 
{
background: linear-gradient(#aaa 33.33%, #ddd 0, #ddd 66.66%, #fff 0);
}

image

2. 垂直条纹背景

想要生成垂直方向的条纹,只需修改渐变的方向即可(别忘了把 background-size 颠倒一下):

 
{
background: linear-gradient(to right, #aaa 50%, #ddd 0);
background-size: 30px 100%;
}
/* 或 */
{
background: linear-gradient(90deg, #aaa 50%, #ddd 0);
background-size: 30px 100%;
}

image

3. 斜向条纹背景

如果直接修改渐变方向,使其倾斜45°,并且修改 background-size ,会得到下面的效果:

 
{
background: linear-gradient(45deg, #aaa 50%, #ddd 0);
background-size: 30px 30px;
}

image

虽然效果也很好看,但是我们需要的效果是把整个背景旋转45°,而不是把每个小切片旋转45°。仔细观察会发现,想要通过小切片拼接成完整的斜向条纹,只需将每个切片分割为四份。因此需要新增两个色标:

 
{
background: linear-gradient(45deg, #aaa 25%, #ddd 0, #ddd 50%, #aaa 0, #aaa 75%, #ddd 0);
background-size: 30px 30px;
}

image

 

 

image

效果实现了,再调整 background-size ,增加条纹宽度:

 
{
background: linear-gradient(45deg, #aaa 25%, #ddd 0, #ddd 50%, #aaa 0, #aaa 75%, #ddd 0);
background-size: 60px 60px;
}

image

 

image

效果虽然实现,但是条纹的宽度如果想和上面的同样设置为15px,那 background-size 就需要根据勾股定理求出准确的值,此处的结果约为42,因为这个结果不能完全整除,所以只能根据想要的精确度四舍五入取值,因此这种方法不够灵活。如果想要其他倾斜角度的条纹便很难计算 background-size 。

想要灵活地实现不同角度的条纹,这时候就需要用到 repeating-linear-gradient() ,重复线性渐变。重复线性渐变会循环色标,知道填满整个背景:

 
{
background: repeating-linear-gradient(45deg, #aaa, #ddd 30px);
}

image

改写成上面的效果就是:

 
{
background: repeating-linear-gradient(45deg, #aaa 0, #aaa 15px, #ddd 0, #ddd 30px);
}

image

只需修改角度便可以得到不同角度的条纹:

 
{
background: repeating-linear-gradient(60deg, #aaa 0 15px, #ddd 0 30px);
}
{
background: repeating-linear-gradient(30deg, #aaa 0 15px, #ddd 0 30px);
}

image

 

image

4. 附录

MDN linear-gradient
MDN repeating-linear-gradient 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41146932

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值