【发布时间】:2016-03-26 17:37:42
【问题描述】:
我有一个包含标题、段落和单个图像的页面,它们的大小/纵横比可能非常不同。
我希望图像能够适应,以便它要么填充最大可用高度,要么受其宽度限制,而不会丢失纵横比,也不会导致滚动。
这是我的基本配置:
angular.module("myApp", ["ngMaterial"]);
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.0.0-rc7/angular-material.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.0.0-rc7/angular-material.min.js"></script>
<div ng-app="myApp" layout="column" layout-fill>
<div flex style="background: red;">
<h1>Title</h1>
<p>Details. Blablabla.</p>
</div>
<div flex="60" style="background: blue;" object-fit="fill">
<img id="myImg" ng-src="http://placehold.it/200x400"/>
<!-- Should work with such extreme case as well -->
<!-- <img id="myImg" ng-src="http://placehold.it/1000x200" /> -->
</div>
</div>
我查看了很多 SO 帖子、网站、博客等。我不知道从哪里开始完成这项工作。大多数关于流体图像或响应式图像的文章只讨论可滚动的网页。因此,即使是关于该主题的良好参考也会有所帮助。谢谢。
编辑:更新了片段以使用 flex layout。如您所见,图像超出了蓝色 div 边界。我使用过object-fit="content"; 或object-fit="fill";,但似乎没有人会限制图像以尊重 div 边界
【问题讨论】:
-
这是一个获取图像尺寸的jquery技巧,在获取尺寸后,您可以比较两者中较大的宽度和高度,然后设置适当的图像属性(即宽度或高度) - @987654322 @
标签: javascript html css angularjs angular-material