我正在尝试制作横幅,您可以在其中调整大小并拖动图像。除了调整大小外,一切正常。
使用图像下方的滑块调整图像大小时。图像会增长。调整图像大小后,您可以成功将其拖动到右侧和底部。将图像向右拖动时,您决定再次缩小图像。您可以使用图像下方的滑块。但现在出现了问题。如果您位于图像的右侧,并且想要再次调整图像大小,则图像将不适合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" width="371" height="auto" 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{
}
我希望有人可以帮助我。
问候, 丹尼斯。
答案 0 :(得分: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值现在不会更新。
我希望这至少可以激励你! ;)
答案 1 :(得分:-1)
也许在你的幻灯片功能中尝试这样或类似的东西“
$('#img').css('top','1px');
$('#img').css('left','1px');