使 div 与其中的图像大小相同

Posted

技术标签:

【中文标题】使 div 与其中的图像大小相同【英文标题】:Making a div the same size as an image inside it 【发布时间】:2013-12-13 02:58:34 【问题描述】:

我有一个带有以下代码的 div

html

<div id='imgContainer'>
    <img src='/img/logo.png' id='imglogo'></img>
</div>

CSS

div#imgContainer 
    width: 250px;
    height: 250px;
    padding: 13px;

问题是用户可以编辑图像大小、颜色和其他一些东西,所以我希望 div 随着图像变大而变大。如果图像小于它,我希望 div 的宽度和高度为 250px,但随着图像变大而变大。

解决方案可以是 phpjavascript、CSS 或 jQuery。

【问题讨论】:

【参考方案1】:

试着这样做:

div#imgContainer 
    width: Auto;
    height: Auto;
    padding: 13px;

【讨论】:

您实际上不需要指定widthheight,因为auto 值是默认值。仅在 div 继承样式的情况下。 是的,但是如果图像小于 250 像素怎么办。那么 div 必须保持 250px。 然后使用min-width: 250px; 图片比那个小怎么办? 我给了@Me123评论的可能性【参考方案2】:

试试这个:

div#imgContainer 
    min-width: 250px;
    min-height: 250px;
    padding: 13px;
    display: inline-block;

Fiddle

感谢@ahren 和@Mohsen

【讨论】:

为什么是display:inline?这是唯一阻止我支持这个答案的事情......方式应该是inline-block(如下所述) - 但它还应该附带一个免责声明,它在旧 IE 中不起作用。 必须是display:inline-block 我首先尝试了这个,因为它看起来不错,但是为什么你需要属性 display: inline-block?这是一种黑客行为吗?它仍然有效。 @Me123 因为没有inline-block div 宽度将根据容器宽度拉伸(对不起我的英语:)),尝试在小提琴上删除它,你会看到结果 @karaxuna 哦,我明白了。谢谢。【参考方案3】:

php 在这方面非常有用,因为它具有 'getimagesize' 功能:

<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) 
    header("Content-type: $size['mime']");
    fpassthru($fp);
    exit;
 else 
    // error

?>

【讨论】:

谢谢,但我无法测试它,因为我的 apache 不工作。【参考方案4】:
div#imgContainer 
    min-height: 250px;
    min-width: 250px;
    width: Auto;
    height: Auto;
    padding: 13px;

【讨论】:

你不需要设置widthheight auto。【参考方案5】:

使用此代码:

div#imgContainer 
    min-width: 250px;
    min-height: 250px;
    padding: 13px;
    display: inline-block; 

【讨论】:

谢谢,但也和karaxuna的回答一样。【参考方案6】:

浮动 div 是否适用于您的布局?这将导致其宽度环绕到包含的图像。

div#imgContainer 
    min-width: 250px;
    min-height: 250px;
    padding: 13px;
    float: left;

如果你需要清除它,添加一个带有overflow: hidden的包装元素。

【讨论】:

【参考方案7】:

这将完成工作:

div
    border:1px solid black;  /* you can remove this */
    box-sizing:border-box; /* you can remove this */
    padding:13px;
    min-width:250px;
    min-height:250px;
    display:inline-block;

所以要么在你的 div 上使用 float,要么手动使用 display:inline-block。

这里是示例:http://jsfiddle.net/mxykW/

【讨论】:

感谢 hRvoed,但@karaxuna 不久前已经回答了同样的问题。 Ups,我明白了,抱歉,他更快 加一个用于使图像成为块以消除底部的间隙。

以上是关于使 div 与其中的图像大小相同的主要内容,如果未能解决你的问题,请参考以下文章

如何使容器DIV内的所有兄弟DIV具有相同的高度?

Swift 如何使 UIView 大于手机屏幕-我们可以让它的大小与图像大小相同然后缩小

如何使 iframe 的宽度和高度与其父 div 相同?

如何通过 CSS 使所有不同高度和宽度的图像相同?

使图像适应容器大小保持纵横比

在引导网格中使图像大小相同