【问题标题】:Absolute positioned element height exceeds parent on mobile绝对定位元素高度超过移动设备上的父级
【发布时间】:2021-11-22 01:17:52
【问题描述】:

我有一个带有背景图像的元素,该元素在底部包含一个绝对定位的元素。

当屏幕宽度变窄时,绝对定位的元素高度会增加并超过父元素。众所周知,位置绝对元素脱离了流,所以父高度不会改变。

$(window).ready(function() {
  if ($(window).width() <= 767) {
    var heig = $('.overlay').height(),
      parent = $('.parent');
    parent.css('height', heig + 300 + 'px');
  }
});
html,
body {
  margin: 0;
  height: 100%;
}

* {
  box-sizing: border-box;
}

.parent {
  position: relative;
  min-height: 100vh;
  background-image: url(http://placehold.it/1000);
  background-size: 100% 100%;
  background-repeat: no-repeat;
}

.overlay {
  background: #376c8d;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  padding: 30px 20px;
  border-radius: 160px 160px 0 0;
  font-size: 24px;
  opacity: 0.8;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
  <div class="overlay">
    <img src="http://placehold.it/100" />
    <p>Lorem ipsum dolor sit amet</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing eli</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    <a href="/">Link</a>
    <p>Lorem ipsum dolor sit amet</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing eli</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    <a href="/">Link</a>
  </div>
</div>

有没有办法将.overlay 保留在底部,但显示所有内容? CSS有类似的解决方案吗?

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    通过使一个属性或另一个属性相对于另一个来限制比例。

    background-size: 100% auto;
    

    编辑:

    Use responsive SVG as the .overlay 避免布局重排。如果适合您的工作流程或舒适度,也可以将内容输出为图像。

    【讨论】:

    • 你测试过它并且有效吗?它不适合我
    • 没有。当 .parent 宽度发生变化时,它会影响 .overlay,它会重新流动以适应内部 HTML。如果要指定高度,请执行此操作,但是 1)内容将重排或 2)它将滚动。或者使用 JavaScript 来调整字体大小。您最初声明的措辞使我相信背景图像与问题有关......即它正在拉伸,因为您设置了 100% 100% 大小并且内容 div 与特定定位重叠。
    • 如果你做一个最小重现的例子,它会证明问题。听起来您想要一个可扩展的 SVG 或响应式图像。
    • 图片不是问题。我可以将它设置为彩色背景,它会保持不变。问题在于 .overlay 它没有显示所有内容,它从顶部被切断
    • 对。根据我的经验,这个问题源于溢出背景图像的内容,该背景图像具有专门用于上述内容的特定区域。与创建结构化的响应式 HTML/CSS 相比,他们将其放置得非常具体,并且无法很好地扩展……话虽如此,使用响应式 SVG 进行叠加应该可以解决问题。
    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多