jQuery图像调整大小 - 宽度不适合

Posted

技术标签:

【中文标题】jQuery图像调整大小 - 宽度不适合【英文标题】:jQuery image resize out - width doesn't fit 【发布时间】:2013-04-27 21:03:03 【问题描述】:

我正在尝试制作一个横幅,您可以在其中调整大小和拖动图像。一切正常,除了调整大小。

当您使用图像下方的滑块调整图像大小时。图像会增长。调整图像大小后,您可以成功将其拖动到您的右侧和底部。当您将图像向右拖动时,您决定再次缩小图像。您可以使用图像下方的滑块。但现在问题来了。如果您在图像的右侧,并且想要再次调整图像大小,则图像将不适合 div。您将看到黑色背景。

这是一个例子: http://jsfiddle.net/DennisBetman/tnaGA/

HTML:

<div id="box">
    <img src="http://www.digindigin.com/blog/wp-content/uploads/2012/05/Diablo_3___Wizard_Wallpaper_by_Lythus.jpg" id="img"   style="top:-0px; left:-0px;" />
</div>
<!-- style="top:-262px; left:-425px;" -->
<div id="zoom"></div> 
<input type="hidden" id="amount-width" style="border: 0; color: #f6931f; font-weight: bold;" />
<input type="hidden" id="amount-height" style="border: 0; color: #f6931f; font-weight: bold;" />

<div class="text"></div>

<p>
    Position x:
    <input type="text" id="val-x" style="border:0; color:#f6931f; font-weight:bold;" />
</p>
<p>
    Position y:
    <input type="text" id="val-y" style="border:0; color:#f6931f; font-weight:bold;" />
</p>

jQuery:

jQuery("#zoom").slider(
      max: 650,
      slide: function()

        var sliderValue =  jQuery("#zoom").slider("value");
        jQuery("#img").width(370 + sliderValue);

        $("#amount-width").val(jQuery("#img").css("width"));
        $("#amount-height").val(jQuery("#img").css("height"));

        var width = $("#img").width();
        var widthZoom = width + sliderValue;
        var widthVerschil = widthZoom - sliderValue;
        var totalWidth = widthVerschil - '373';

        var stageWidth = $("#box").width();

        var height = $("#img").height();
        var totalHeight = height - '207';

        $("#img").draggable(
            containment: [-totalWidth, -totalHeight, 0, 0],
            scroll: false,
            iframeFix: true,
        ); 
        $('.text').html('<br/>The file size = ' + height + ' x ' + widthVerschil);
      


);

var height = $("#img").height();
var totalHeight = height - '207';

$("#img").draggable
(
    containment: [0, -totalHeight, 0, 0],
    snap: false,
    drag: function(event, ui)
    
        $("#val-x").val(ui.position.left);
        $("#val-y").val(ui.position.top);

       

);

$("#img").offset(left: $(this).attr('position'));

CSS:

div 
    width:370px;
    height:204px;
    position:relative;
    overflow:hidden;
    border-top-left-radius: 7px;
    border-top-right-radius: 7px;


#box
    background:black;



#img

我希望有人可以帮助我。

您好, 丹尼斯。

【问题讨论】:

【参考方案1】:

我在你的小提琴中添加了一些代码,我认为它现在似乎可以工作了...... 小提琴:http://jsfiddle.net/tnaGA/28/

滑块初始化之前:

 var previousValue = 0;

在幻灯片事件的事件处理函数中:

     if (sliderValue < previousValue)
          var t, l;
          t = $('#img').position().top;
          l = $('#img').position().left;
          if(t < 0)
              t = t + (previousValue - sliderValue);
          if(l<0)
              l = l +(previousValue - sliderValue);
          $('#img').offset(top: t, left: l);
      

对于调试,您可以使用滑块的更改事件。因为现在调整图像大小时 x 和 y 值不会更新。

我希望这至少可以激发您的灵感! ;)

【讨论】:

非常感谢它有效。这正是我需要的。是的,这启发了我! :) 谢谢!! 出于某种原因,您的绝妙之处仅适用于 jsfiddle。它不适用于 JS BIN 或仅在我的网站上。你还知道别的吗?【参考方案2】:

也许在你的幻灯片功能中尝试类似的或沿着这些线的东西”

$('#img').css('top','1px');
$('#img').css('left','1px');

【讨论】:

感谢您的回答。我已经试过了。但是当您使用滑块缩小时。它自动转到顶部 1px 并离开 1px。这不是我想要的。我希望一个人可以在原来的地方重新调整大小。

以上是关于jQuery图像调整大小 - 宽度不适合的主要内容,如果未能解决你的问题,请参考以下文章

自动调整 UIImageView 的大小以适合底层图像

使用 Jquery Animate 调整图像大小

布局约束将图像大小调整为屏幕宽度保持纵横比

调整图像大小以适合图像视图

水平图像滚动,图像大小调整以适合高度显示空白空间

调整jquery css大小时的猫头鹰轮播响应裁剪宽度