html - calc (100% - 300px) 在 Safari 而不是 Firefox 或 Chrome 上工作

标签 html css safari

这是我的 HTML/CSS:

#all {
  text-align: center;
}
.photo_img {
  width: auto;
  max-height: -webkit-calc(100% - 300px);
  max-height: -moz-calc(100% - 300px);
  max-height: calc(100% - 300px);
  margin: 0;
  padding: 0;
  margin-top: 150px;
}
<div id="all">
  <img src="http://40.media.tumblr.com/ed8f597aae5d145a51a13a7eaddac58e/tumblr_nlh3w0m4GS1u4c0gpo1_1280.jpg" class="photo_img">
</div>

我不知道为什么它只适用于 Safari。 你能帮我让它跨浏览器吗?

https://jsfiddle.net/q3fwavq5/

最佳答案

问题是您使用的是基于百分比的 100% 高度。 .photo_img 元素的高度决定了父元素的高度(因为它是唯一的子元素),这使得基于百分比的单位变得无用,因为它们与任何事物都不相关。要解决这个问题,您还需要以百分比设置父元素的高度。这样做时,.photo_img 的最大高度可以是calc(100% - 300px) 相对于 父元素。

您可以将 html/body/#all 元素的高度设置为 100%。 .(仅 #all 上的固定高度也可以)。

Updated Example

html, body, #all {
    height: 100%;
}

或者,您可以使用 viewport-relative units而不是基于百分比的单位。这样做时,高度基于视口(viewport)的 100%(而不是直接包含的父元素)。

Updated Example

.photo_img {
    max-height: calc(100vh - 300px);
}

关于html - calc (100% - 300px) 在 Safari 而不是 Firefox 或 Chrome 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592886/

相关文章:

javascript - HTML 表行上的 Select 语句

HTML 正文不滚动

css - 设置 Bootstrap4 页面的最小宽度并显示滚动条

javascript - 2D 纹理渲染在 Safari 中闪烁,在 Chrome/Firefox 中渲染良好

javascript - 如何使用webview在ios objective c safari中打开window.open方法

javascript - 下载 HTML 格式的文本文件

html - 使用内部 svg 和文本实现 anchor 标记的最佳方法

jquery - jQuery 的视差插件

html - 图标不在页脚中

javascript - 在 Safari 中的 Canvas 页面 iFrame 中使用带有 JS SDK 的 Facebook Graph API 被破坏