标签: draggable

在不使用JS的情况下防止图像可拖动或可选择

有没有人知道如何在Firefox中使图像不可拖动且不可选择 - 同时不使用Javascript?看似微不足道,但问题在于:

1)可以在Firefox中拖动和突出显示:

<img src="...">
Run Code Online (Sandbox Code Playgroud)

2)所以我们添加它,但拖动时仍然可以突出显示图像:

<img src="..." draggable="false">
Run Code Online (Sandbox Code Playgroud)

3)所以我们添加这个,以解决突出显示问题,但后来违反直觉,图像再次变得可拖动.很奇怪,我知道!使用FF 16.0.1

<img src="..." draggable="false" style="-moz-user-select: none;">
Run Code Online (Sandbox Code Playgroud)

那么,有没有人知道为什么添加"-moz-user-select:none",会以某种方式特朗普并禁用"draggable = false"?当然,webkit按预期工作.关于这一点,Interwebs上没有任何内容......如果我们能够一起发光,那就太好了.

谢谢!!

编辑: 这是关于保持UI元素不被无意拖动并提高可用性 - 不是一些跛脚尝试复制保护方案:-)

html css firefox html5 draggable

120
推荐指数
6
解决办法
13万
查看次数

如何为触摸屏创建一个jQuery UI'draggable()'div draggable?

我有一个draggable()适用于Firefox和Chrome 的jQuery UI .用户界面概念基本上是单击以创建"post-it"类型项.

基本上,我点击或点击div#everything(100%高和宽)听取点击,并显示输入textarea.您添加文本,然后在完成后保存它.你可以拖动这个元素.这适用于普通浏览器,但在iPad上我可以测试,我无法拖动项目.如果我触摸选择(然后稍微变暗),我就无法拖动它.它根本不会向左或向右拖动.我可以向上或向下拖动,但我不是拖动个人div,我拖动整个网页.

所以这是我用来捕获点击的代码:

$('#everything').bind('click', function(e){
    var elem = document.createElement('DIV');
    STATE.top = e.pageY;
    STATE.left = e.pageX;
    var e = $(elem).css({
        top: STATE.top,
        left: STATE.left
    }).html('<textarea></textarea>')
    .addClass('instance')
    .bind('click', function(event){
        return false;
    });
    $(this).append(e);
});
Run Code Online (Sandbox Code Playgroud)

这里是我用来"保存"音符并将输入div转换为显示div的代码:

$('textarea').live('mouseleave', function(){
    var val = jQuery.trim($(this).val());
    STATE.content = val;
    if (val == '') {
        $(this).parent().remove();
    } else {
        var div  = $(this).parent();
        div.text(val).css({
            height: '30px'
        });
        STATE.height = 30;
        if ( div.width() !== div[0].clientWidth || div.height …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-ui touchscreen draggable ipad

109
推荐指数
4
解决办法
10万
查看次数

jQuery draggable在页面滚动后在错误的位置显示帮助器

我正在使用jQuery draggabledroppable来开发我正在开发的工作计划系统.用户将作业拖到不同的日期或用户,然后使用ajax调用更新数据.

一切正常,除非我向下滚动主页面(作业出现在超出浏览器窗口底部的大型周规划器中).如果我尝试在这里拖动一个可拖动的元素,那么元素会出现在我的鼠标光标上方与我向下滚动的像素数量相同.悬停状态仍然可以正常工作并且功能正在爆炸,但看起来并不正确.

我正在使用jQuery 1.6.0和jQuery UI 1.8.12.

我确定我需要添加一个偏移功能,但我不知道应用它的位置,或者是否有更好的方法.这是我的.draggable()初始化代码:

$('.job').draggable({
  zIndex: 20,
  revert: 'invalid',
  helper: 'original',
  distance: 30,
  refreshPositions: true,
});
Run Code Online (Sandbox Code Playgroud)

知道我能做些什么来解决这个问题吗?

jquery jquery-ui draggable jquery-ui-draggable

78
推荐指数
7
解决办法
6万
查看次数

确定从dragenter和dragover事件中拖动的内容

我正在尝试使用HTML5可拖动的API(虽然我意识到它有它的问题).到目前为止,我遇到的唯一一个显示是我无法找到一种方法来确定当一个dragoverdragenter事件触发时被拖动的内容:

el.addEventListener('dragenter', function(e) {
  // what is the draggable element?
});
Run Code Online (Sandbox Code Playgroud)

我意识到我可以认为它是发射dragstart事件的最后一个元素,但是......多点触控.我也试着使用e.dataTransfer.setDatadragstart附加一个唯一的标识符,但显然这些数据是不可访问dragover/ dragenter:

只有在丢弃事件期间发生丢弃时,才能使用此数据.

那么,有什么想法吗?

更新:在撰写本文时,HTML5拖放似乎没有在任何主流移动浏览器中实现,因此在实践中提出了关于多点触控的观点.但是,我想要一个可以保证在规范的任何实现中都能使用的解决方案,这似乎不会阻止同时拖动多个元素.

我在下面发布了一个有效的解决方案,但这是一个丑陋的黑客攻击.我仍然希望有更好的答案.

javascript html5 draggable

64
推荐指数
5
解决办法
3万
查看次数

精确的拖放在一个令人满意的

安装程序

所以,我有一个令人满意的div - 我正在制作一个WYSIWYG编辑器:粗体,斜体,格式化,无论如何,最近:插入花哨的图像(在一个花哨的盒子里,带有标题).

<a class="fancy" href="i.jpg" target="_blank">
    <img alt="" src="i.jpg" />
    Optional Caption goes Here!
</a>
Run Code Online (Sandbox Code Playgroud)

用户使用我给他们提供的对话框添加这些奇特的图像:他们填写详细信息,上传图像,然后很像其他编辑器功能,我用document.execCommand('insertHTML',false,fancy_image_html);它来根据用户的选择进行填充.

期望的功能

所以,现在我的用户可以拍摄一个奇特的图像 - 他们需要能够移动它.用户需要能够单击并拖动图像(花式框和所有图像),以便将其放置在满足其中的任何位置.他们需要能够在段落之间移动,甚至在段落之间 - 如果他们想要的话,在两个单词之间移动它.

什么给了我希望

请记住 - 在一个可信的,简单的旧<img>标签已经被用户代理祝福,具有这种可爱的拖放功能.默认情况下,您可以将<img>标签拖放到任何地方; 默认的拖放操作就像人们梦寐以求的那样.

所以,考虑一下这种默认行为如何对我们的<img>伙伴们如此有用- 我只想稍微扩展这种行为以包含更多的HTML - 这似乎应该是容易实现的.

我的努力到目前为止

首先,我<a>使用draggable属性设置我的花哨标签,并禁用contenteditable(不确定是否有必要,但似乎它可能也是关闭):

<a class="fancy" [...] draggable="true" contenteditable="false">
Run Code Online (Sandbox Code Playgroud)

然后,因为用户仍然可以将图像拖出花哨的<a>盒子,我不得不做一些CSS.我在Chrome上工作,所以我只向你展示-webkit-前缀,尽管我也使用了其他的.

.fancy {
    -webkit-user-select:none;
    -webkit-user-drag:element; }
    .fancy>img {
        -webkit-user-drag:none; }
Run Code Online (Sandbox Code Playgroud)

现在,用户可以拖动整个花哨的盒子,并且稍微部分褪色的点击拖动表示图像反映了这一点 - 我可以看到我现在正在拿起整个盒子:)

我已经尝试了几种不同CSS属性的组合,上面的组合似乎对我有意义,并且似乎效果最好.

我希望只有这个CSS就足以让浏览器使用整个元素作为可拖动的项目,自动向用户授予我一直梦寐以求的功能...... 然而,它似乎比这更复杂.

HTML5的JavaScript拖放API

这种拖放似乎比它需要的更复杂.

所以,我开始深入研究DnD api文档,现在我被卡住了.所以,这就是我所操作的(是的,jQuery):

$('.fancy')
    .bind('dragstart',function(event){
        //console.log('dragstart');
        var dt=event.originalEvent.dataTransfer;
        dt.effectAllowed …
Run Code Online (Sandbox Code Playgroud)

javascript html5 drag-and-drop draggable css3

60
推荐指数
1
解决办法
2万
查看次数

没有jQuery UI的可拖动div

正如标题所说,我试图在不使用jQuery UI的情况下使div可拖动.

但是,我坚持使用下面的代码.我明白我将使用相对于容器div的鼠标位置(其中div应该被拖动),并且我将相对于这些值设置divs偏移.

我只是无法弄清楚如何.有什么线索吗?

这段代码(当然)不起作用:

var X, Y;

$(this).mousedown(function() {
    $(this).offset({ 
        left: X, 
        top: Y
    });
});

$("#containerDiv").mousemove(function(event) {
    X = event.pageX;
    Y = event.pageY;
});
Run Code Online (Sandbox Code Playgroud)

html jquery draggable

58
推荐指数
7
解决办法
10万
查看次数

<可移动/可拖动<div>

这是我更新和修改过的脚本,它完全可以工作,除了我想要普及它...观察****我怎么能这样做,这样我function(e){BOX.Draggable.elemen = e.target || e.srcElement; elementDraggable(e);每次都不需要使用可拖动功能对于不同的元素?

window.onload = addListeners;

var BOX = function(){
  return{
    Draggable: function(){}
  };
}();

function addListeners(){
  document.getElementById('div').addEventListener('contextmenu', menumove, false);
  **document.getElementById('div').addEventListener('mousedown', function(e){BOX.Draggable.elemen = e.target || e.srcElement; elementDraggable(e);}, false);**
}

function elementDraggable(e){
  var e = e || window.event;
  var div = BOX.Draggable.elemen;
  BOX.Draggable.innerX = e.clientX + window.pageXOffset - div.offsetLeft;
  BOX.Draggable.innerY = e.clientY + window.pageYOffset - div.offsetTop;

  window.addEventListener('mousemove', elementMove, false);
  window.addEventListener('mouseup', function(){
    window.removeEventListener('mousemove', elementMove, false);
    }, true);

  function elementMove(e){
    div.style.position = 'absolute';
    div.style.left = e.clientX + window.pageXOffset …
Run Code Online (Sandbox Code Playgroud)

javascript move draggable mousemove

54
推荐指数
5
解决办法
17万
查看次数

jQuery UI - Draggable不是一个函数?

我试图在页面上的某些div上使用可拖动效果,但每当我加载页面时,我都会收到错误消息:

Error: $(".draggable").draggable is not a function
Run Code Online (Sandbox Code Playgroud)

我已经看过它似乎其他人有这个问题因为他们没有包含jQuery UI javascript文件,但我肯定有.

以下是我页面的标题内:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>    
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

谁有人建议解决方案?

任何建议表示赞赏

谢谢.

快速编辑,我也有jquery工具js包含在页面的头部,如果我删除它工作正常.有没有人设法让这两个人一起工作?

jquery draggable

53
推荐指数
7
解决办法
10万
查看次数

jquery draggable:如何限制可拖动区域?

我有一个可拖动的对象(div),还有一些可放置的对象(表TD).我希望用户将我的可拖动对象拖到其中一个可放置的TD上.

我以这种方式启用draggable和droppable:

$(".draggable").draggable();
$(".droppable").droppable();
Run Code Online (Sandbox Code Playgroud)

问题在于,用户可以将div拖动到屏幕上的任何位置,包括从可放置区域移出.

如何限制可拖动对象的边界区域?

jquery draggable

53
推荐指数
3
解决办法
11万
查看次数

通过Google Maps API V3检索可拖动引脚的纬度和经度

我会解释.我设法在地图上有一个可拖动的针脚.我想检索此点的坐标并将它们放入两个字段:纬度和经度.稍后这些坐标将通过PHP发送到SQL表.这是我打算做的一个例子,但它只是一个而不是几个引脚,它是可拖动的.问题是:我甚至无法显示初始点的坐标.当然,当用户移动引脚时,我希望坐标也在字段中改变.我希望我清楚自己.我做错了什么?我应该使用地理编码服务吗?

这是JS:

<script type="text/javascript">
  var map;
  function initialize() {
  var myLatlng = new google.maps.LatLng(40.713956,-74.006653);

  var myOptions = {
     zoom: 8,
     center: myLatlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
     }
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

  var marker = new google.maps.Marker({
  draggable: true,
  position: myLatlng, 
  map: map,
  title: "Your location"
  });

  google.maps.event.addListener(marker,'click',function(overlay,point){
     document.getElementById("latbox").value = lat();
     document.getElementById("lngbox").value = lng();
     });

}
</script> 
Run Code Online (Sandbox Code Playgroud)

和HTML:

<html>
<body onload="initialize()">

  <div id="map_canvas" style="width:50%; height:50%"></div>

  <div id="latlong">
    <p>Latitude: <input size="20" type="text" id="latbox" name="lat" ></p>
    <p>Longitude: <input size="20" type="text" …
Run Code Online (Sandbox Code Playgroud)

draggable latitude-longitude google-maps-api-3

48
推荐指数
2
解决办法
8万
查看次数