javascript - 如何将可拖动对象的移动限制在一个区域?

标签 javascript jquery html css jquery-ui

我已经让用户能够在屏幕上生成他们的输入并移动每个字符。

虽然我不希望他们能够将这些 Angular 色移动/放置在任何地方,但我想将移动限制在一个小正方形或矩形内。

HTML

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js">
</script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>

<div id="word-container">
  <div class="character">P</div>
  <div class="character">l</div>
  <div class="character">a</div>
  <div class="character">c</div>
  <div class="character">e</div>
  <div class="character">m</div>
  <div class="character">a</div>
  <div class="character">r</div>
  <div class="character">k</div>
</div>
<br>
<br>

<form action="demo_form">
  Word:
  <input type="text" id="my-word" name="fname">
  <br>
  <button type="button" id="make-word">Make word</button>
</form>

CSS

.character {
  width: 10px;
  height: 15px;
  font-size: 50px;
  display: inline;
  cursor: drag;
}

JQuery

function initDragable($elements) {
  $elements.draggable();
}
initDragable($('.character'));

$(function(){
    $('#make-word').click(function() {
      var $this = $(this);
      var letters = $('#my-word').val().split('');
      letters = '<div class="character">'+letters.join('</div><div class="character">')+'</div>';
      initDragable($('#word-container').html(letters).find('.character'));
    });
});

最佳答案

看起来您可以指定包含:http://api.jqueryui.com/draggable/#option-containment

我相信你可以改变你的 initDraggable 函数:

function initDragable($elements) {
  $elements.draggable({ containment: 'parent' });
}

随后的请求询问有关移动字符的垂直位置:您可以通过调整字符和字符容器的样式来完成此操作:

.character {
  width: 10px;
  line-height: 100px;
  font-size: 50px;
  display: inline;
  cursor: drag;
}

#word-container {
  height: 100px;
  border: 1px solid black;
}

我在容器周围添加了边框(因此可以轻松看到此功能)并添加了 100 像素的高度。然后我将字符的行高设置为 100px,这样它就会出现在#word-container 元素的中间。用户现在可以在#word-container 元素内垂直和水平地单击和拖动元素。

关于javascript - 如何将可拖动对象的移动限制在一个区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710035/

相关文章:

Ajax 前提条件失败错误

javascript - 在 Javascript 中生成内容时应该使用字符串还是节点?

jquery - 将一个 `div` 无边框的分成两半,并以 `Z` 的方式为掉落的 div 提供索引

javascript - adMod 与 PhoneGap 云构建

javascript - JavaScript 中的客户端服务器端

javascript - 如何使用 angular2-highcharts 和 AOT 编译器导入导出.js 和导出数据.js?

javascript - 如何在echarts中的bars中添加自定义文字并修改hover的颜色?

Javascript简单代码错误

javascript - 如何确保列在 Twitter Bootstrap 3 中均等地换行?

php - 检查 SQL 字段是否包含数据,如果是则回显数据,否则返回文本字段