在文档流中提取一个元素

2024-06-06

这是示例代码:

#top {
  background: lightGreen;
}

#content {
  outline: 1px solid red;
}

#bottom {
  background: lightBlue;
}
<div id="top">Top</div>

<div id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>

<div id="bottom">Bottom</div>

我怎样才能提取内容div文档流高度的 30%?如你所知,margin-top: -30%不起作用,因为边距的大小以百分比形式相对于width包含块的。定位和转换似乎也没有帮助,因为它们只是在视觉上改变元素的内容,并且保留其原始空间。任何其他CSS方法能达到以下效果吗?

Note:30%只是一个任意数字。它可以是任何百分比。


如何在文档流中将内容 div 拉高 30%?

实现此效果的一种方法涉及三个步骤:

  1. 计算height使用 javascript 的内容 div
  2. 使用 javascript 计算出的数字来填充CSS 自定义属性
  3. 在 CSS 样式表中,将自定义属性的值应用到margin-top

是的,这意味着您必须添加两行 javascript - 但添加这些行后,您将不必再次接触 javascript。

相反,您将能够使用 CSS 执行、调整、更新 CSS 中的所有其余操作calc()功能。


工作示例

const contentDiv = document.querySelector('#content');
contentDiv.style.setProperty('--contentHeight', (0 - contentDiv.offsetHeight + 'px'));
body {
  padding-top: 40px; /* <= Not necessary; just for breathing space */
}

#top {
  background: lightGreen;
}

#content {
  margin-top: calc(var(--contentHeight) / 100 * 30); /* 30% of #content height */
  outline: 1px solid red;
}

#bottom {
  background: lightBlue;
}
<div id="top">Top</div>

<div id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>

<div id="bottom">Bottom</div>

进一步阅读:

  • https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在文档流中提取一个元素 的相关文章

随机推荐