whay可以't我使用javascript同时更改图像的高度和宽度
whay can't I change both image height and width at same time with javascript?
我在div中有一个图像,我希望图像始终居中。
如果图像的宽度比屏幕宽,那么我希望图像扩展到观察端口的宽度。如果图像比观察端口的高度短,那么我想要它扩展到观察港口的高度。
在我的代码中,当我扩展宽度时,高度会自动扩展,这很好,因为我不必计算它。高度也做同样的事情。当高度展开时,宽度保持成比例。
但是,如果宽度的变化使高度现在小于视图端口,那么我需要检查高度并将其恢复到视图端口高度(这应该会再次扩展宽度,但不会)。当我必须同时改变高度和宽度时,自动比例就不起作用了。如果我做一个或另一个,它确实有效。
我如何才能做到这一点,使它们既可以更改又可以工作而不扭曲图像?
我的代码:
inner_width = $(window).innerWidth();
inner_height = $(window).innerHeight();
if (inner_width < original_pic_width ) {
$(pic).css({'width': original_pic_width});
}
else {
$(pic).css({'width' : inner_width });
}
if (inner_height < original_pic_height){
$(pic).css({'height': original_pic_height});
}
else {
$(pic).css({'height' : inner_height });
}
CSS contain
非常不错。
$("div").css({
backgroundImage: "url(" + $("img").prop('src') + ")",
backgroundSize:"contain",
backgroundRepeat: "no-repeat"
});
div { width:200px; height:200px; border:1px solid red;}
div img { display:none }
<div>
<img src="http://www.somebodymarketing.com/wp-content/uploads/2013/05/Stock-Dock-House.jpg"/>
</div>
<script src="https://code.jquery.com/jquery-2.2.3.min.js"
integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo="
crossorigin="anonymous"></script>
这里有一个可能的解决方案(但不一定能清楚地理解您想要什么)。请注意,我并不完全确定居中方法是否是跨浏览器的。
var div = $("div");
var img = $("img");
var imgw = img.width();
var imgh = img.height();
var imgr = imgw / imgh;
var sizes = [300, 120];
var i = 0;
setInterval(function () {
div.width(sizes[i]);
i = (i + 1) % 2;
adjust();
}, 1000);
function adjust () {
var divw = div.width();
var divh = div.height();
var divr = divw / divh;
if (divr < imgr) {
img.width("100%");
img.height("auto");
} else {
img.width("auto");
img.height("100%");
}
}
div {
position: relative;
}
img {
display: block;
position: absolute;
top: 0; bottom: 0;
right: 0; left: 0;
margin: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="width:120px;height:120px;border:10px solid #5900CC;">
<img style="width:100%;" src="https://i.stack.imgur.com/jKXi2.jpg" />
</div>
如果同时设置高度和宽度。。。将设置尺寸、高度和宽度。
如果设置宽度=视口的宽度(如果是水平的(宽度>高度))或高度=视口的高度(如果是垂直的),则只设置一个维度就足够了。
查找需要更改的维度,然后只更改该维度。您可以通过检查图像的宽度和窗口的innderWidth之间的差异,以及图像的高度和窗口的innerHeight之间的差异来实现这一点。无论哪一个差异更大,你都只需要改变。这应该照顾到另一个维度,而不必同时调整两个维度的大小。
相关文章:
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 根据图像高度添加类
- 尝试使用window.innerHeight和Javascript设置图像高度
- 图像高度只会从一大组图像中检索一次
- 为什么我的图像高度没有改变
- 使图像高度相同并定义共享的总宽度
- 在提交表单之前获取上传图像的图像高度和宽度
- Javascript:在 for 循环中编辑图像高度
- 如何使用 JQuery 获取真实的图像高度
- 根据原始图像高度使用 Photoshop 和 JavaScript 调整条件图像大小
- 基于移动方向的图像高度
- 我如何使用 Jquery 获取图像高度并将其除以 2
- 图像高度与图像宽度成比例,但图像宽度以父项的百分比为单位
- 使用 jQuery 调整图像高度
- 获取图像高度并将图像容器高度更改为自动
- 图像高度始终返回为0
- 获取不在内容中的图像高度
- 调整主图像高度的Nivo滑块
- 如何使用变量更改图像高度
- 获取图像高度属性并将其显示在CSS转换中