Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在页面(无滚动)中显示尽可能大的整个图像,以保持其纵横比_Javascript_Css_Image Resizing_Window Resize_Image Scaling - Fatal编程技术网

Javascript 如何在页面(无滚动)中显示尽可能大的整个图像,以保持其纵横比

Javascript 如何在页面(无滚动)中显示尽可能大的整个图像,以保持其纵横比,javascript,css,image-resizing,window-resize,image-scaling,Javascript,Css,Image Resizing,Window Resize,Image Scaling,我有一个有两列的页面布局。第一个是80%宽度,另一个是20%。我希望在第一列中显示尽可能大的图像。问题是如果我使用宽度:100%;高度:自动;对于此图像,如果我调整窗口大小,直到得到一个较短的窗口,窗口将隐藏图像的底部 问题: 期望的行为: 我知道我不能在保持纵横比的同时获得100%的高度和宽度,但我想知道,在任何情况下,您会如何保持这张图像尽可能大 理想情况下,它会在垂直屏幕上使用宽度:100%,在水平屏幕上使用高度:100%(在调整窗口大小时从一个选项切换到另一个选项),但不确定哪一个是

我有一个有两列的页面布局。第一个是80%宽度,另一个是20%。我希望在第一列中显示尽可能大的图像。问题是如果我使用宽度:100%;高度:自动;对于此图像,如果我调整窗口大小,直到得到一个较短的窗口,窗口将隐藏图像的底部

问题:

期望的行为:

我知道我不能在保持纵横比的同时获得100%的高度和宽度,但我想知道,在任何情况下,您会如何保持这张图像尽可能大

理想情况下,它会在垂直屏幕上使用宽度:100%,在水平屏幕上使用高度:100%(在调整窗口大小时从一个选项切换到另一个选项),但不确定哪一个是最好的选项。可能是检查窗口高度是否低于图像,然后更改图像尺寸


你会怎么做

尝试将图像放入
div
标记中,并为其指定一个
id
的full值

然后

并将css中该
div
标记的值设为100vh


希望这有帮助

如果您不想隐藏图像底部,请使用高度:100%

现在,如果您想要此
宽度:在垂直屏幕上为100%,高度:在水平屏幕上为100%

然后,您可能需要检查高度是否大于宽度,然后在javascript中使用height:100%或width:100%

    body {
  background:url('http://dummyimage.com/1080/9494ff/0011ff.png') #A98436 no-repeat;
  background-attachment: fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  background-size: cover;
}

试试这个代码。它覆盖了屏幕的整个部分。您无法在不同的纵横比上获得相同的吞吐量,但是背景大小:cover提供了最好的支持。如果您想深入挖掘,可以使用具有多个src属性的picture元素,也可以使用

这不一定能完全按照您所希望的方式工作,但只要图像永远不会比容器更薄,它就应该按照您所希望的方式工作

基本上,您只需在图像上放置一个混合宽度和一个最大高度,然后在保持纵横比的同时,它将始终以任何方式收缩

正如我前面所说的,这个答案的唯一问题是,如果图像小于容器,则图像不会延伸到容器大小(始终使用能够以最大可能宽度填充容器的图像,或者使用svg)

()

/*此CSS仅用于此演示,不相关*/html,正文{高度:100%;边距:0;}。左、.右{显示:内联块;垂直对齐:顶部;浮动:左;高度:100%;}。左{宽度:20%;背景:#aaa;}。右{宽度:80%;背景:#bbb;}


这对不同的屏幕来说是不好的。如果在静态内容上使用vh,不同的纵横比总是会带来更大的问题。谢谢你的建议。它工作得很好,但问题是,正如你所说,我也希望图像尽可能大。。。我想我需要使用javascript…:/@DRBT你所要做的就是计算出你要支持的最大屏幕尺寸,找到20%,给自己留一个误差空间,这样你就有了你的图像尺寸。因此,即使您支持大容量2560x1600,图像也只需要(2560*.2=512)px宽+边距。因此,600px宽的图像将非常适合您。如果您想全力以赴,您可以使用7680x4800。这将使您的图像宽度(7680*.2=1536)px。但那将是一个相当大的屏幕。@DRBT我已经编辑了我的答案,在底部包含了一个JavaScript解决方案。如果这对你有用的话,我会给你一个更好的解释。