【问题标题】:Max-height image inside max-height div inside fixed height div固定高度 div 内的最大高度 div 内的最大高度图像
【发布时间】:2017-07-25 21:00:47
【问题描述】:

瘦子:有没有办法让图像上的最大高度服从不是其祖先的固定高度直接父母?


我知道max-height 需要一个固定的高度来计算,所以这不是重复的问题,询问为什么 max-height 不能神奇地工作。

我有一个元素 (.rightbox),它的高度为 100%,并且绝对位于自动高度容器内。该元素符合预期的高度。

然后该元素有一个最大高度为 100% 的子元素。这个元素也符合预期的高度,因为.rightbox 父级有一个设定的高度(% + 绝对定位)

但是现在...我在 that 容器中有一个图像...它不符合最大高度。我认为拥有一个具有可计算高度的祖先将允许该元素符合最大高度。

最大宽度有效,我相信它使用相同的祖先来计算宽度。

.rightbox 上设置像素高度无效。

删除 .rightboximg 之间的 div 会使 img 符合所需的最大高度。

*{
  box-sizing:border-box;
  margin:0;
  padding:0;
}
.item{
  width: 100%;
  position:relative;
  background:#0FF;
}
.rightbox::after{
  content:"";
  display:inline-block;
  height:100%;
  width:0;
  vertical-align:middle;
}
.rightbox>div{
  display:inline-block;
  vertical-align:middle;
}

.rightbox{
  position:absolute;
  height:100%;
  width:50%;
  top:0;
  right:0;
}
.rightbox>div,
.rightbox img{
  max-height:100%;
  max-width:100%;
}
.rightbox img{
  opacity:0.7;
}
<div class="item">
  <div>
  <p>
  <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  Some text to make this bigger.
  </p>
  </div>
  <div class="rightbox">
    <div>
      <img src="http://via.placeholder.com/550x900" />
    </div>
  </div>
</div>

【问题讨论】:

    标签: css height


    【解决方案1】:

    这个答案有助于解决这个问题:

    当您为孩子的最大高度指定百分比时,它是 父母实际高度的百分比,而不是父母的最大高度

    https://stackoverflow.com/a/14263416/2735479

    然后,是的,我们可以使图像上的最大高度服从祖先的固定高度但是直接父母必须具有定义的高度以百分比表示,而不仅仅是最大高度。

    这里比如我把图片的父div的max-height参数切换为100%的height参数,(在Mozilla Firefox 58版上测试过)

    *{
      box-sizing:border-box;
      margin:0;
      padding:0;
    }
    .item{
      width: 100%;
      position:relative;
      background:#0FF;
    }
    .rightbox::after{
      content:"";
      display:inline-block;
      height:100%;
      width:0;
      vertical-align:middle;
    }
    .rightbox>div{
      display:inline-block;
      vertical-align:middle;
    }
    
    .rightbox{
      position:absolute;
      height:100%;
      width:50%;
      top:0;
      right:0;
    }
    .rightbox>div{
      height:100%;
      max-width:100%;
    }
    .rightbox img{
      max-height:100%;
      max-width:100%;
    }
    .rightbox img{
      opacity:0.7;
    }
    <div class="item">
      <div>
      <p>
      <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
      Some text to make this bigger.
      </p>
      </div>
      <div class="rightbox">
        <div>
          <img src="http://via.placeholder.com/550x900" />
        </div>
      </div>
    </div>

    祝你有美好的一天!

    【讨论】:

    • 请不要提供仅链接的答案;相反,直接将最重要的部分放在你的答案中。
    • @YakovL 抱歉,现在好点了吗?
    • 是的,肯定更好,谢谢;现在因为这是一个答案,而不是评论,请回答实际问题:“有没有办法......”可以回答“不,没有,因为......”或“是的,在这里它是:...”
    • @TimKrief 做得好,感谢您的耐心和学习。现在在这个特定的问题中,您似乎可以提出某些 CSS 更改,从而向他们展示如何解决该问题。如果您添加一个 SO sn-p 并修改了他们的代码以解决问题,那么很明显您提出了一个正确的解决方案并且应该接受答案;如果你这样做,无论如何我都会投票。
    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多