使用javascript和jquery设置di​​v内图像的高度和宽度

时间:2011-10-21 05:03:18

标签: javascript jquery html css

我有一个问题,我想只使用Javascript和JQuery在div中设置图像的高度和宽度。

这是我的代码:

<div class="myGallery">
    <img class="replaced" src="myimage.jpg" style="display: inline;">
</div>

.myGallery {
    display: table-cell;
    height: 220px;
    text-align: center !important;
    vertical-align: middle !important;
    width: 110px;
}

.myGallery img {
    text-align: center;
    vertical-align: middle;
    width: auto !important;
}


function ChangeHW(hdnValue)
{

    if (hdnValue==1)
    {
        //i want to remove height and width attribute of image
            //this is working..
            $('div.myGallery > img').removeAttr('width');
            $('div.myGallery > img').removeAttr('height');
    }
    else
    {
        //i want to set height and width attribute of image 
            //this is not working..i cant set width-height using this line od code
            $('div.myGallery > img').css('width', '110px');
            $('div.myGallery > img').css('height', '220px');
    }

}

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

属性与样式不同。假设您当前的图片代码如下所示:

<img src="foo.png" width="200" height="200" />

$('div.myGallery > img').removeAttr('width')之后,它将如下所示:

<img src="foo.png" height="200" />

您正在删除宽度属性。现在$('div.myGallery > img').css('width', '440px')之后,它看起来像这样:

<img src="foo.png" height="200" style="width: 440px;" />

您正在添加宽度,但它是CSS样式而不是属性。试试这个:

$('div.myGallery > img').attr('width', '440');

答案 1 :(得分:1)

试试这个:

$('div.myGallery > img').css('width', '110px !important');

$('div.myGallery > img').css('height', '220px !important');

答案 2 :(得分:1)

这是一个将图像拟合到586x586 div标签的功能。

function img_fit(img_id){

    var img_width = $("#"+img_id).width();
    var img_height= $("#"+img_id).height();
    var max_side = Math.max(img_width, img_height);
    var top = 0, left = 0, scale = 0;
    var new_width, new_height,new_scale;
    scale = (max_side == img_height)? img_height/586 : img_width/586;

    if(max_side == img_height){
         new_width = img_width / scale;
         new_height = 586;
         top = 0;
         left = Math.round((586 - new_width)/2);
         $("#"+img_id).animate({
            'width':new_width,
            'height':new_height, 
            'top':0,
            'left':left,
            'duration':300
        });
         //$("#"+img_id).width(new_width);
         //$("#"+img_id).height(586);
         new_scale = 586*scale/img_height;
    }
    else{
        new_height  = img_height / scale;
        new_width = 586;
        top = Math.round((586 - new_height)/2);
        //top = 0;
        left = 0;
        $("#"+img_id).animate({
            'width':new_width,
            'height':new_height, 
            'top':top,
            'left':0,
            'duration':300
        });

    }

}

答案 3 :(得分:0)

您希望将图像宽度设置为大于包含div,这可能是问题吗?

如果在图片标记removeAttr中设置了<img src="puppies.jpg" width="100" height="100">,则删除高度和宽度width,否则,要在css中更改它,我会设置height = auto和{{ 1}},或者如果您希望容器确定大小,请尝试类似width:100% height:auto的内容。 要添加高度和宽度,.css('width','440px')应该有效。但是如上所述,包含div更小。

答案 4 :(得分:0)

也许这可能会有所帮助:

.newCssClass { height : 110px !important; width : 440px !important; }

$("div.myGallery img").addClass("newCssClass");