当前位置: 首页 > 面试题库 >

使图像完全填充div而无需拉伸

戚晨
2023-03-14
问题内容

我有不同尺寸的大图像,需要在两个尺寸中完全填充240px x 300px的容器。这是我现在得到的,仅适用于一维:

HTML

<div class="container">
    <img src="http://placehold.it/300x1500">
</div>
<div class="container">
    <img src="http://placehold.it/1500x300">
</div

CSS

.container {
height: 300px;
width: 240px;
background-color: red;
float: left;
overflow: hidden;
margin: 20px;
}

img {
max-width: 100%;
height: auto;
}

比例应保持不变。本质上,宽图像应被切掉宽度,而高图像应被切掉高度。因此,只需要放大以填充容器即可。

不确定为什么无法使它正常工作,为此我需要JavaScript吗?

编辑:要清楚。我需要小提琴上所有红色的东西都消失了。进入的图像是动态的,因此我不能使用背景图像。我愿意使用JavaScript。谢谢!:)


问题答案:

自动调整图像大小以适应Div-使CSS正常工作

这是一种方法,从以下HTML开始:

<div class="container portrait">
    <h4>Portrait Style</h4>
    <img src="http://placekitten.com/150/300">
</div>

和CSS:

.container {
    height: 300px;
    width: 240px;
    background-color: red;
    float: left;
    overflow: hidden;
    margin: 20px;
}
.container img {
    display: block;
}

.portrait img {
    width: 100%;
}
.landscape img {
    height: 100%;
}

当您将图像定向为人像时,需要将宽度缩放到100%。相反,当图像为横向时,您需要缩放高度。

不幸的是,CSS中没有针对图像长宽比的选择器组合,因此您不能使用CSS来选择正确的缩放比例。

另外,由于图像的左上角固定在包含块的左上角,因此您没有简单的方法来使图像居中。

jQuery助手

您可以使用以下jQuery操作来根据图像的纵横比确定要设置的类。

$(".container").each(function(){
    // Uncomment the following if you need to make this dynamic
    //var refH = $(this).height();
    //var refW = $(this).width();
    //var refRatio = refW/refH;

    // Hard coded value...
    var refRatio = 240/300;

    var imgH = $(this).children("img").height();
    var imgW = $(this).children("img").width();

    if ( (imgW/imgH) < refRatio ) { 
        $(this).addClass("portrait");
    } else {
        $(this).addClass("landscape");
    }
})

对于中的每个图像.container,获取其高度和宽度,进行测试width<height,然后设置适当的类。

另外,我添加了一个检查,以考虑到包含块的长宽比。以前,我隐式地假定了正方形视图面板。



 类似资料:
  • 问题内容: 我想为不同的div设置背景图像,但是我的问题是: 图片尺寸为固定值(60px)。 改变div的大小 如何拉伸背景图像以填充整个div背景? 问题答案: 加 到背景图片下方的CSS。 您还可以指定确切的尺寸,即:

  • 问题内容: 是否有可能用图像 填充 div,使得至少一个图像尺寸为100%,另一个尺寸与div相比更宽或相等,同时还要考虑图像的长宽比。 一个示例可以使用这些类,如下所示: 我正在寻找一种纯HTML + CSS解决方案,该解决方案适用于响应矩形(不一定是正方形)的div。由于这个特殊原因,Javascript会很痛苦,因为需要确定每次调整大小时宽度或高度是否应为100%。服务器端甚至都不是一个选择

  • 问题内容: 我有一个如下所示的div页面 样式 我想调整div的高度以填充(或拉伸到)整个div (标有绿色边框),并且不想越过页脚divD。我该如何解决? 问题答案: 只需添加到造型。应该没有必要。

  • 我有一个图像,我想为它设置一个特定的宽度和高度(以像素为单位) 但如果我使用css设置宽度和高度(),图像会被拉伸,而且可能会很难看。 如何使用CSS填充图像到一个特定的大小,而不是拉伸它? 填充图像: 请注意,在上面的填充图像示例中:首先,图像的大小被调整为150x255(保持的纵横比),然后,它裁剪为150x100。

  • 我找到了这条线索-如何拉伸图像以填充 我有一个具有一定大小的div和其中的图像。无论图像是横向还是纵向,我都想始终用图像填充div。图像是否被切断也没关系(div本身隐藏了溢出)。 因此,如果图像是纵向的,我希望宽度是100%,高度是自动的,所以它保持成比例。如果图像是横向的,我希望高度为100%,宽度为自动。听起来很复杂对吧? 因为我不知道怎么做,我只是简单地创建了一个我的意思的快速图像。我甚至

  • 我画正确的几个矩形与库vue-konva(我的项目是与Vue.js2)。 然而,我想用图像填充这些绘制的矩形。vue-konva文档说使用属性,但它不起作用 这是我的代码 模板: 脚本: png的路径是正确的。如果在我的模板中放置一个img标记,并在src中使用上述路径,我可以看到我的图像。 您可以在以下网址测试代码示例:https://codesandbox.io/s/6x1r9jxklz 为什