gpt4 book ai didi

html - 在没有背景附件的情况下跨 body 扩展背景渐变 : fixed

转载 作者:技术小花猫 更新时间:2023-10-29 11:52:13 26 4
gpt4 key购买 nike

我想要一个背景渐变,例如

background: linear-gradient(to bottom, rgba(0, 0, 0, 0.3), rgba(2, 126, 174, 0.9))

在我的文档主体上,它延伸到主体的整个高度 - 并随着主体滚动。

使用

background-attachment: fixed;

我获得了(视口(viewport)的)整个高度,但它保持固定。

background-attachment: scroll;

让我滚动,但它只是延伸到视口(viewport)高度。

有什么办法可以兼得吗?

编辑:

正如 Boltclock 指出的那样,我确实在基本测试页面上通过“背景附件:滚动”获得了预期的行为。

<body>
<div id="stretch">Content</div>
</body>

  body {
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.3), rgba(2, 126, 174, 0.9));
}

#stretch {
height: 2000px;
}

一切正常:渐变延伸到整个主体(主体高 2000 像素),并随内容滚动。

然后我添加

  html, 
body {
height: 100%;
}

这是页面所基于的基本模板所做的事情。

为了让 body 再次膨胀,我加了

  height: auto;

并且正文又回到了 2000px 的高度。

但是,渐变保持在 HTML 高度 - 然后重复。

我在这里错过了什么?

最佳答案

这是因为渐变背景根据其容器(包括 htmlbody)调整大小的方式,以及用于确定尺寸的计算htmlbody 分别对应于视口(viewport)。

实际上我之前在对 another question 的回答中写过类似的东西.你的有点不同,所以我先引用相关部分:

Backgrounds have special behavior when applied to body and/or html. When you apply a background to body without touching html, what happens is that the body background gets propagated to the viewport, and that background acts as if it were declared on html:

For documents whose root element is an HTML HTML element or an XHTML html element: if the computed value of ‘background-image’ on the root element is ‘none’ and its ‘background-color’ is ‘transparent’, user agents must instead propagate the computed values of the background properties from that element's first HTML BODY or XHTML body child element. The used values of that BODY element's background properties are their initial values, and the propagated values are treated as if they were specified on the root element.

在您的情况下,如果您使用的模板没有为 htmlbody 指定任何背景,那么这种背景传播行为就是导致渐变的原因取 html 而不是 body 的高度。

要解决此问题,您需要仅重置 html 元素的 height 值,并改为分配 min-height:

  html {
height: auto;
min-height: 100%;
}

这消除了 html 元素的高度限制,允许渐变随页面内容一起拉伸(stretch),同时如果页面没有,则它至少与视口(viewport)一样高足够的内容(如果这不重要,则不需要设置 min-height)。

关于html - 在没有背景附件的情况下跨 body 扩展背景渐变 : fixed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20070220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com