css - 如何去除使用线性渐变属性时出现的条纹

标签 css background linear-gradients

<分区>

当使用 linear-gradient CSS 属性时,当使用 left 和 right 作为方向值时,背景看起来没有条纹。但是当方向值被指定为顶部或底部时,背景中会出现条纹。有什么方法可以去除条纹?

代码如下:

body {
  background: linear-gradient(to top, red, yellow);
}

最佳答案

您正面临一个复杂 背景传播,您可以阅读有关 here 的信息.我将尝试用简单的词来解释它。

你的 body 的高度等于 0;因此背景在其上不可见,但默认情况下它有 8px 的边距,这会在 html 元素上创建 8px 的高度。


为什么不是 16 像素的高度(顶部 8 像素 + 底部 8 像素)?

由于 body 的高度为 0,我们面临着 margin collpasing并且两个边距将合并为一个,我们的高度为 8px。


然后我们有一个从bodyhtml的背景传播,linear-gradient将覆盖8px高度。

最后,html 的背景被传播到 canvas 元素以覆盖整个区域,这解释了为什么线性渐变重复每个 8px

body {
  background: linear-gradient(to top, red, yellow);
}

当使用向左或向右方向时也会重复,但你不会在视觉上看到它这是合乎逻辑的,因为它是相同的模式:

body {
  background: linear-gradient(to right, red, yellow);
}

你也可以删除重复,你会看到它只覆盖 8px

body {
  background: linear-gradient(to right, red, yellow) no-repeat;
}


为了避免这种行为,您只需将 height:100%(或 min-height:100%)设置为 html

html {
  height: 100%;
}

body {
  background: linear-gradient(to top, red, yellow);
}

它也适用于 no-repeat,因为默认情况下 linear-gradient 将覆盖整个区域:

html {
  min-height: 100%;
}

body {
  background: linear-gradient(to top, red, yellow) no-repeat;
}

关于css - 如何去除使用线性渐变属性时出现的条纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58460858/

上一篇:javascript - 即使鼠标移出,也会触发两次 Mouseenter 事件

下一篇:javascript - alert() 在 Mac OS 设计中用 Javascript

相关文章:

html - 在 bootstrap css 中的按钮组

javascript - 无法让页脚保持向下状态(HTML/CSS 初学者)

react-native - 如何将边框半径应用于 Expo LinearGradient 组件的某些角

css - 背景颜色,背景图片没有填满整个css盒模型

html - 在 IE8 中拉伸(stretch)图像作为背景

android - 透明渐变问题

css - 边框图像如何与线性渐变一起使用?

html - 如何创建一个看起来像计时器的圆形进度条?

jquery - 用 jquery 突出悬停元素

html - 如何缩放背景图像以适应响应式 div