我有一个带黄色按钮的图像。我想使用黄色按钮作为手柄,这样当我向上和向下拖动黄色div
时,图像将跟随并上下移动。我的图像被约束到y轴,因此按钮必须在拖动时约束到y轴。
这是一个小提琴: http://jsfiddle.net/michelm/9Vwzp/
和jQuery代码:
$(function(){
$(".headerimage").css('cursor','s-resize');
var y1 = $('.container').height();
var y2 = $('img').height();
$("img").draggable({
scroll: false,
axis: "y",
handle: "div.button" // this is not working
drag: function(event, ui) {
if(ui.position.top >= 0)
{
ui.position.top = 0;
}
else if(ui.position.top <= y1 - y2)
{
ui.position.top = y1 - y2;
}
},
stop: function(event, ui) {
//####
}
});
});
答案 0 :(得分:1)
以下是您正在寻找的功能的>>>JSFiddle<<<解决方案。
以下是代码:
HTML:
<div class="wrapper">
<div class="button"></div>
<div class="container">
<img class="headerimage" src="http://www.mywedding.com/main/honeymoon/images/beach_splash.jpg" />
</div>
</div>
CSS:
.wrapper {
position: relative;
height: 150px;
width: 700px;
overflow: hidden;
}
.container {
position: absolute;
top: 0px;
bottom: -250px;
width: 650px;
}
.button {
position: absolute;
cursor: s-resize;
background-color: yellow;
opacity:0.6;
border: 2px solid;
border-radius: 25px;
top: 0px;
right: 10px;
height: 20px;
width: 20px;
z-index:2;
}
jQuery的:
var wrapHeight = $('.wrapper').outerHeight(true);
var contHeight = $('.container').outerHeight(true);
function drag() {
var btnPos = $('.button').position().top;
$('.container').css({
top: -(btnPos * (contHeight / wrapHeight))
});
}
$('.button').draggable({
axis: 'y',
containment: '.wrapper',
drag: function () {drag()}
});
答案 1 :(得分:1)
来自Draggable上的jQuery API:
如果指定,则限制从开始拖动,除非mousedown 发生在指定的元素上。只有来自的元素 允许使用可拖动的元素。
所以我的猜测是你的按钮不是图像元素的后代。我尽力修复错误 - 虽然它并不完美,但我希望它能给你一个很好的起点。我通过将按钮和图像放在第二个容器(在现有容器中),为标签分配id以使功能更清晰,并为HTML / CSS添加了一些内容,使得句柄正常工作。完整更改位于:http://jsfiddle.net/beMaG/1/
关键领域是:
HTML:
<div class="wrapper">
<div class="container" id="container1">
<!--Here, I enclose another container in which button/image are inside-->
<div class="containerNew" id="container2">
<img class="headerimage" src="http://www.mywedding.com/main/honeymoon/images/beach_splash.jpg" />
<div class="button" id="dragme"></div>
<div>
</div>
</div>
相关的jQuery:
$("#container2").draggable({
scroll: false,
axis: "y",
handle: "#dragme", // added id
// this next part I changed to get full up/down scrolling to work
// You'll have to change this to get the functionality you want
drag: function(event, ui) {
if(ui.position.top <= y1 - y2)
{
ui.position.top = y1 - y2;
}
}
});
额外的CSS(与其他容器一样,但溢出设置为new):
.containerNew {
overflow: visible; position: relative; width: 650px; height: 150px; border: 1px solid #888;}
}
免责声明:我是jQuery的新手。如果我的解释中的任何部分看起来不正确,请告诉我!