javascript - 根据 child 高度调整背景颜色

标签 javascript html css flexbox background-color

这是我的代码笔: https://codepen.io/sadpandas/pen/KKwgObb

我有一个 flexbox 容器和两个子 div。 我想要做的是让“背景颜色”与文本框的高度相匹配,但跨越包含图像的同级 div。

在不使用媒体查询和换行时,背景颜色需要继续换行/匹配文本框高度,但需要与图像完全分开。

我当前的方法使用线性渐变和一个硬编码的百分比,它近似于我需要的文本空间。我正在寻找更可靠和可重复使用的东西,因为我的网站中有几个这样的部分。

.wrapper {
   width: auto;
    max-width: 1686px;
    background:  linear-gradient(#f7f7f7 50%, white 20%);
    display: flex;
    justify-content: center;
    flex-wrap: wrap-reverse;
}

.left {
  flex-basis: 512px;
  flex-grow: 1;
  padding-top: 60px;
  padding-left: 25px;
}

.right{
  padding-top: 25px;
  flex-basis: 512px;
  flex-grow: 1;
}

我想要实现的目标的图片: enter image description here

我愿意在父对象上使用线性渐变以外的其他方法来实现这一点。 我怀疑我使用的是最佳实践,但我不确定如何实现这一点。

还有一些要求: - 左边的图像不能包裹在灰色背景中 - 灰色背景的高度必须与文本高度相同,如果文本容器的高度增加,则应调整其大小。 - 文字不能从灰色背景中探出 - 由于客户请求,我避免使用媒体查询。 -图像开始于桌面 View 中略低于文本的位置

我已经尝试过的事情: - 使用Javascript。客户拒绝了它,因为他们发现它对于获得一个容器的高度来说太矫枉过正了 - 伪元素 + javascript。也因为类似原因被拒

感谢任何帮助,谢谢!

最佳答案

如果您只想在文本部分使用灰色框,那么您应该在其中放置背景属性,而不是在包含图片和文本的容器上。另一件事是,如果您希望灰色填充容器的整个高度,您应该使用 repeating-linear-gradient 而不是 linear-gradient:

.wrapper {
  width: fit-content;
  max-width: 1686px;    
  display: flex;
  justify-content: center;
  flex-wrap: wrap-reverse;
  flex-direction: column;
  background:  repeating-linear-gradient(#f7f7f7 50%, white 20%);
}

.left {
  flex-basis: 512px;
  flex-grow: 1;
  padding-top: 60px;
  padding-left: 25px;
  order: 1;
}

.right{
  padding: 25px;
  flex-basis: 512px;
  flex-grow: 1;
  width: 520px;
}

关于javascript - 根据 child 高度调整背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350958/

相关文章:

javascript - Scala函数什么时候执行

javascript - 基于下拉选择的日期选择器的两种不同文本输入

html - 在另一个 div 内滚动 div

css - SCSS Ampersand 已编译的完整根元素不仅是父元素

html - 如何在 HTML img 标签中屏蔽图像?

javascript - ASP :Repeater min and max

javascript - 如果在 div 中找到两个类,我想删除类,使用我尝试过但不起作用的 jQuery 函数

javascript - Angular 2 ng类取决于功能

javascript - 使用 jQuery select2 设置多个值

javascript - 获取子元素html