【问题标题】:CSS image sizingCSS 图像大小
【发布时间】:2013-10-31 16:30:06
【问题描述】:

我正在创建一个 ePub,并且我希望图像能够跨越页面的整个宽度,但不能超过页面高度的 100%。

理想情况下,如果图像比页面高(因此被剪裁),那么它将被缩放到页面的 100% 高度,宽度也会相应地缩放。

max-height 似乎只是将图像压缩得不成比例,有什么想法吗?

【问题讨论】:

  • max-width 不是更合乎逻辑吗?
  • 如果图片是页面的全宽,并保持其比例,如果浏览器调整为小于图片的高度,你想做什么?
  • 不高 = 剪裁?
  • 我认为原帖是正确的:max-width 会对宽度施加限制,而不是强制扩展。当我读到它时,他希望它只扩展直到达到一个或多个边界。
  • @chendriksen,你能澄清一下吗?如果您的图像是一个完美的正方形,并且您想在水平显示器上显示它,该图像是否应该 (1) 在顶部或底部剪裁,(2) 调整其纵横比(这样图像看起来会被压扁),或者 (3) 停止扩展,使其到达顶部和底部边距并且左右有空白区域?

标签: css epub


【解决方案1】:

对于纵向格式的图像,您需要确保它们前面有分页符,或者设置 page-break-inside:avoid; 并包装在一个 100% 高的容器中(或者就在它下面这样它就不会溢出到下一页)。必须同时包含margin:0 auto;display:inline-block; 的图像是很奇怪的,(特别是因为inline-block 不是epub2 规范的正式一部分)但你正在努力反对各种读者的怪癖以集中图片:

css:

.imageWrapperHi {
    height:99%;
    width:100%;
    text-align:center;
    page-break-inside:avoid;
}
.imageWrapperHi img {
    display:inline-block;
    height:100%;
    margin:0 auto;
}

html:

<div class="imageWrapperHi">
    <img alt="" src="../Images/img1.jpg"/>
</div>

对于横向图像,您还需要将图像包装在设置为 100% 宽度的容器中,然后以百分比调整图像本身的大小。

css:

.imageWrapperWide {
    width:100%;
    text-align:center;
    page-break-inside:avoid;
}
.imageWrapperWide img {
    display:inline-block;
    width:100%;
    margin:0 auto;
}

html:

<div class="imageWrapperWide">
    <img alt="" src="../Images/img1.jpg"/>
</div>

我从来没有遇到过同时兼顾两种图像格式的解决方案,除非您使用的是 SVG 包装器,它必须包含所需的图像尺寸:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="100%" height="100%" viewBox="0 0 <image width> <image height>" preserveAspectRatio="xMidYMid meet">
    <image width="<image width>" height="<image height>" xlink:href="../Images/cover.jpg"/>
</svg>

【讨论】:

    【解决方案2】:

    我理解的唯一解决方案,“不高 = 剪裁”......以保持比例:

    overflow:hidden创建一个容器

    HTML

    <div id="container">
      <img src=" "/>
    </div>
    

    CSS

    * {
      margin:0;
      padding:0;
    }
    body, html { 
      height:100%;
    }
    #container {
      max-width:100%;
      height:100%;
      max-height:100%;
      overflow:hidden;
    }
    #container img {
      width:100%;
      height:auto;
    }
    

    演示http://jsfiddle.net/zbvhx/

    【讨论】:

    • 对不起 Danko 我应该更清楚,我实际上想要相反的!如果图像对于页面来说太高(因此溢出),我希望图像被缩放到 100% 宽度并且它是根据高度。
    • 它的高度是页面的 100%?
    猜你喜欢
    • 2013-08-20
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2013-01-25
    • 2013-03-26
    相关资源
    最近更新 更多