缩放图像保持纵横比,然后在流体高度和宽度 DIV 内垂直和水平居中

2024-03-09

好吧,这有点拗口,而且非常具体。我会尽力解释!

目标是在缩放图像时保持纵横比,并使其在仅由百分比定​​义的 DIV 内保持垂直和水平居中。图像需要保持最佳拟合,因此如果需要最大宽度,则使用它,反之亦然。

Use Firefox 版本 33(或一些早期版本)查看这个 js fiddle 以查看它是否正常工作:

http://jsfiddle.net/3vr9v2fL/1/ http://jsfiddle.net/3vr9v2fL/1/

HTML:

<div id="imageviewer" >

<div class="dummy"></div>
<div class="img-container centerer" id="imagevieweroriginal">
<img class="centered" src="http://chrisnuzzaco.com/couch/uploads/image/gallery/smiling_woman_wearing_drivers_cap.jpg"  alt="Doctor Concentrating on Work"></img>
</div> 

</div>

</div>

CSS:

#imagewrapper{
position:absolute;
width:69%;
height:100%;
top:0px;
bottom:0px;
background-color:gray;
}


#imageviewer{
position:relative;
width:100%;
height:100%;
}





.responsive-container {

position: relative;
width: 100%;
border: 1px solid black;
}


.dummy {
padding-top: 100%; /* forces 1:1 aspect ratio */
}

.img-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}

.centerer {
text-align:center; /* Align center inline elements */
font: 0/0 a;       /* Hide the characters like spaces */
}

.centerer:before {
content: ' ';
display: inline-block;
vertical-align: middle;
height: 100%;
}

.centered {

vertical-align: middle;
display: inline-block;
max-height: 100%;
max-width: 100%;
}

问题:

我最初在 stackoverflow 上找到了我的代码,并制作了一个简单的 mod,将 max-height/width 添加到 .centered 类中。当时,这适用于所有主流浏览器。唯一的例外是歌剧。

将 div 内的图像与响应高度垂直对齐 https://stackoverflow.com/questions/18516317/vertically-align-an-image-inside-a-div-with-responsive-height

然而,有一个大问题:最新版本的 Chrome(版本 38.0.2125.111)不再适用于此代码,而且我的用户比其他浏览器更喜欢 Chrome。

关于如何解决这个问题有什么想法吗?这是 Chrome 的错误吗?我愿意接受 javascript 建议,让这项工作再次发挥作用。


我想出了这个:JSFiddle - 居中图像在可调整大小的流体容器中保持纵横比 https://jsfiddle.net/paull78/g33wLvhr/

.container {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
}
.image {
    position: absolute;
    max-width: 100%;
    max-height: 100%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
body {
    width: 100%;
    height: 100%;
    position: absolute;
    margin: 0;
}
<div class='container'>
    <img class='image' src='http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample1_l.jpg'>
</div>

图像在水平和垂直方向上均保持居中。如果窗口缩小,图像会按照原始纵横比缩小。

不过我没有在所有浏览器上测试它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缩放图像保持纵横比,然后在流体高度和宽度 DIV 内垂直和水平居中 的相关文章

  • Bootstrap Affix Nav 导致下面的 Div 向上跳转

    我使用 Bootstrap 的 Affix 函数创建了一个 JSFiddle 以便在向下滚动并且标题移出视图时使导航保持在屏幕顶部 我遇到的问题是 当使用纯 HTML 时 导航下方的文本会过早地跳起来并隐藏在导航后面 查看有问题的代码her
  • 如何提高包含大量小图像的 UCollectionView 的性能?

    在我的 iOS 应用程序中我有UICollectionView显示大约 1200 个小 35x35 点 图像 图像存储在应用程序包中 我正确地重用了UICollectionViewCell但仍然存在性能问题 具体取决于我处理图像加载的方式
  • Bootstrap 5 是否删除了行之间的间距?

    我开始使用 bootstrap 5 并注意到行之间没有空格 我们是否必须明确使用spacing https getbootstrap com docs 5 0 utilities spacing 实用程序喜欢mb 3 or mb 2等等试图
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • Gmail 无法在电子邮件上正确呈现字体

    我已经建立了一个 html 电子邮件并使用了 Google 字体 我已使用以下方法将字体包含在 head 标签中 if mso endif 并使用字体 即我这样做了
  • 如何将大于整个页面 100% 的元素居中对齐?

    我有一个宽度为 100 的 div 并且隐藏了一个宽度为 3000px 的 div 我希望3000px的div左右均匀地被切断 我会使用背景位置 中心 然而 事情比这更复杂 3000px div 包含 30 100px div 我尝试过在
  • 在流体设计中将元素的宽度调整为其高度的百分比,反之亦然? [复制]

    这个问题在这里已经有答案了 我正在制作响应式设计 无论屏幕尺寸是什么 它都必须保持其元素的比例 高度与宽度 所以我不知道任何元素的像素大小 并且我只能以 工作 我可以将宽度或高度设置为浏览器大小的百分比 但我不知道如何设置其他属性值 仅使用
  • 在按钮之间添加空间?

    嗨 我这里有一个代码 除了一件事之外 一切都很完美 代码中每个按钮之间没有空格 我尝试过 margin 但不幸的是它是一个无序列表 所以我有点困惑 我将添加或替换什么以在两个按钮之间留出空间 帮助
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • CSS - div 与父 div 底部对齐(内联块)

    我知道这个 html 很草率 有一些不必要的额外 div 但无论如何 我无法理解为什么 ID 为 info box right 的 div 与父 div 的底部对齐 您可以看到 文本 与下面的 jsfiddle 示例的底部 有什么想法可以让
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 如何在文本区域中使用除“文本插入符号”之外的透明字体?

    我有一个简单的文本区域 我需要制作透明字母 同时允许文本插入符可见 当我应用以下规则时 我会得到隐形插入符 textarea background transparent opacity 0 当我键入不可见文本时 我需要看到文本插入符移动
  • 我的 CSS 未在 Internet Explorer 11 和 Firefox 中加载!仅适用于 Chrome

    我正在创建一个简单的网页 我的 CSS 只能在 Chrome 中使用 它在 Firefox 和 IE11 中都不起作用 这是我的 HTML h1 b u Adding a new Visitor u b h1 br div class wr
  • 增加数字输入、CSS、HTML 上的向下和向上箭头的大小

    有没有办法利用CSS来增大数字输入框右侧的上下箭头的大小 只是向上和向下箭头 而不是整个输入框 或者至少是按比例的 看这个例子 size 36 font size 36px size 12 font size 12px
  • 使用 CSS 自定义字体?

    我见过一些在其网站上使用自定义字体的新网站 除了常规的 Arial Tahoma 等 他们支持大量的浏览器 如何做到这一点 同时 如果可能的话 还会阻止人们免费下载该字体 一般来说 您可以使用自定义字体 font face在你的 CSS 中
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 沿着预定路径移动图像?

    是否可以通过按下 iphone SDK 中的按钮来将图像设置为沿着预定路径运动 我不是在寻找任何奇特的东西 我正在研究一个简单的概念 但这会节省大量动画工作 是的 您可以通过创建一个路径来为任何 CALayer 制作动画CAKeyframe
  • 调整文本区域大小

    我需要使用文本区域来显示一些文本 问题是 如果我放置 4 5 行文本 就会出现滚动条 如何使用 CSS HTML 使文本区域与其内容一样大 没有滚动条 文本区域不需要动态更改其大小 我仅使用它来显示文本 我也可以使用禁用的文本区域 我希望文
  • 如何使用 a-href 标签链接回文件夹? [复制]

    这个问题在这里已经有答案了 好吧 我在文件夹中有一个页面 该页面称为 jobs html 该文件夹简称为 jobs 它是我的 网站 文件夹的子文件夹 在 main 文件夹的主目录中是我的 home html 文件 当我尝试做的时候 a hr
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件

随机推荐

  • 没有.net库的图像裁剪C#

    谁能建议如何裁剪图像 例如 jpeg 而不使用任何 NET 框架结构 仅使用原始字节 因为这是 Silverlight 中唯一 的方法 或者指向一个图书馆 我不关心渲染 我想在上传之前操作 jpg Silverlight 中没有可用的 GD
  • 无法链接到 XCode9 中的插座集合

    我有一些在动画期间随机播放的限制 升级到 XCode9 后 我尝试进行一些调整 编辑器似乎不再允许我向约束集合 IBOutlet 添加约束 我什至创建了一个新项目并尝试制作一个简单的插座系列 但遇到了同样的问题 这是我正在谈论的内容的简短视
  • 删除 PayPal Express Checkout 中的送货地址选项

    我用的是JSscript https developer paypal com docs integration direct express checkout integration jsv4 basic integration 贝宝推荐
  • Google 可以使用邮政信箱自动填写地址表单吗?

    我正在购物车中的结账表单上使用 地点 自动完成功能 参见示例 https developers google com maps documentation javascript examples places autocomplete ad
  • 在Python中使用队列进行线程处理

    我想在 python 中使用线程来下载大量网页 并浏览了以下在其中一个网站中使用队列的代码 它放置了一个无限的 while 循环 每个线程是否连续运行 直到所有线程都完成为止 我是不是错过了什么 usr bin env python imp
  • mongo集合中的数据碎片

    我在一个 mongo 集合中有很多更新 并假设此后文件系统上存在巨大碎片 我主要担心的是 集合将在文件系统上不断增长 而集合 中的数据却没有有价值的增长 您能否证实或反驳我的担忧 这取决于您要进行哪种更新 如果这些更新增加了您的文档 数组推
  • 对于同一 .NET 库的不同目标框架构建,程序集 GUID 属性是否应该有所不同?

    我正在用 C 开发一个 NET 库 它必须解决一系列广泛的目标框架 我想生成一个 nuget 包 它可以根据目标项目的设置正确安装 为了实现这一目标 我使用多个 csproj 文件 它们中的每一个都针对特定的目标框架 例如 MyLibrar
  • 程序集未加载 C#

    我有一个项目Common其中包含一个 log4net CustomAppender 我在所有其他项目中引用该项目并在中配置 log4net 附加程序app config 一切都很顺利 除了一个项目在尝试实例化 Appender 时失败了 输
  • 如何在java中更新文本文件的某些部分

    我希望能够更新文本文件中的某一行 但我收到错误 无法删除该文件 为什么会收到此错误 public class Main public static void main String args Main rlf new Main rlf re
  • Pandas GroupBy 和计算 Z 分数 [重复]

    这个问题在这里已经有答案了 所以我有一个如下所示的数据框 pd DataFrame 1 10 14 1 12 14 1 20 12 1 25 12 2 18 12 2 30 14 2 4 12 2 10 14 columns A B C A
  • 如何在 Pygame 中显示精灵?

    这只是一个关于 PyGame 中精灵的简单问题 我按照下面的代码加载了图像 我只是想知道如何在 PyGame 中显示精灵 例如绘制矩形或圆形 无论如何 我不想让它表现得如此 我想我用一个blit命令 但我不确定并且我在网上没有找到太多信息
  • 多线程环境登录并测试

    请让我知道您在以下场景中如何设计日志记录以及如何测试日志记录的建议 我有一个可以由多个线程调用的 API 单个线程对该 API 的一次调用会生成 50 KB 的日志 是否存在用于在多线程环境中进行日志记录的设计模式 IE所有线程使用一个日志
  • 如何在 Kotlin 中手动将字节分配给 long?

    我正在尝试做这样的事情Kotlin val top Long 1000000 1000000 1000000 1000000 1000000 1000000 1000000 In Java它看起来像这样 long TOP 1000000 1
  • lambda 函数比委托/匿名函数更快吗?

    我以为lambda functions delegates and anonymous functions具有相同的主体将具有相同的 速度 但是 运行以下简单的程序 static void Main string args List
  • 用于捕获 MSWord 文档事件的 IAdviseSink 设置

    这是我尝试设置的代码IAdviseSink在我的接口中实现的TForm1用于捕获新创建的 MSWord 文档的一些事件的类 代码运行时没有任何错误 但在保存文档或关闭文档时无法捕获任何事件 如何设置IAdviseSinkMSWord 文档正
  • 如何删除 Google 地图 v2 中的标记?

    我使用以下方法在地图上添加了标记 并保留了标记记录 public static void showallLocations ArrayList
  • 如何在 Angular 2 中触发 ajax 请求?

    我在 Angular 2 中定义了这样的服务 import Inject from angular2 angular2 import Http Headers HTTP PROVIDERS from angular2 http export
  • 为什么docker容器内存使用不减少?

    我正在运行 Java REST 应用程序Apache JavaSpark http sparkjava com 在此容器中 但我注意到每个请求都会增加内存使用量 并且在请求完成后不会减少内存使用量 我的第一个猜测是我忘记关闭一些流 缓冲区
  • 针对 PGPool II 的 Java 查询导致“未命名的预准备语句不存在”错误

    我有一个使用 Postgres 数据库的 Java 应用程序 我正在尝试引入 PGPool 来扩展我的数据库 我遇到了一个问题 Postgres 抛出以下错误 unnamed prepared statement does not exis
  • 缩放图像保持纵横比,然后在流体高度和宽度 DIV 内垂直和水平居中

    好吧 这有点拗口 而且非常具体 我会尽力解释 目标是在缩放图像时保持纵横比 并使其在仅由百分比定 义的 DIV 内保持垂直和水平居中 图像需要保持最佳拟合 因此如果需要最大宽度 则使用它 反之亦然 Use Firefox 版本 33 或一些