CSS Gradient - too many color breaks

六月ゝ 毕业季﹏ 提交于 2020-07-07 05:45:08

问题


I am running into an issue with css linear-gradients. I am looking to make clean color breaks at certain percentages. But it seems to start blurring the colors when I add more than a certain number:

This is the example of the css gradient with "too many" color breaks - and blurs where it should not:

div {
  height: 100px;
  background-color: red;
  background-image: linear-gradient(to right, #ffffff 25%, #042750 25% 28%, #ffffff 28% 29%, #03aeef 29% 31%, #ffffff 31% 32%, #042750 32% 90%, #ffffff 90% 91%, #03aeef 91% 93%, #ffffff 93% 94%, #ffd900 94% 96%, #ffffff 96% 97%, #042750 97% 100%);
}
<div></div>

This is an example of it with it enough color breaks so it doesn't blur:

div {
  height: 100px;
  background-color: red;
  background-image: linear-gradient(to right, #ffffff 25%, #042750 25% 28%, #ffffff 28% 29%, #03aeef 29% 31%, #ffffff 31% 32%, #042750 32% 90%, #ffffff 90% 91%, #03aeef 91% 100%)
}
<div></div>

回答1:


In such case it's better to use multiple gradient:

div {
  height: 100px;
  background: 
    /* Color                       position /width height   */
    linear-gradient(#03aeef,#03aeef)  50% 0 / 5%  100%, /* top layer */
    linear-gradient(#fff,#fff)        50% 0 / 10% 100%,
    linear-gradient(#03aeef,#03aeef)  87% 0 / 5%  100%,
    linear-gradient(#ffd900 ,#ffd900) 94% 0 / 5%  100%,
    linear-gradient(#fff,#fff)        95% 0 / 15% 100%,
    linear-gradient(#042750,#042750)  right / 60% 100%; /* bottom layer */
  background-repeat:no-repeat;
}
<div></div>


来源:https://stackoverflow.com/questions/61874386/css-gradient-too-many-color-breaks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!