当位于bootstrap选项卡内时,变形不会设置位置

Shapeshift doesn't set positions when located inside bootstrap tab

本文关键字:变形 位置 设置 bootstrap 选项      更新时间:2023-09-26

我正在使用变形来拖动&删除选项,其中一个容器隐藏在bootstrap选项卡中。变形在这里初始化,但在第一次拖动项目之前不会设置项目的位置。


jsst修复这个bug: https://jsfiddle.net/owm6wo0r/


正如你在JSFiddle中看到的,当你点击"Tab 2"时,所有的项目都是一个接一个的。当你试图拖动它们时,它们会设置位置。

这是插件的文档:https://github.com/McPants/jquery.shapeshift/wiki/2.0-api-documentation

我尝试了事件"ss-rearrange"点击选项卡,但它没有工作…知道怎么修吗?


HTML:

<div class="dragdrop">
  <div>Item</div>
  <div>Item</div>
  <div>Item</div>
  <div>Item</div>
</div>
<ul class="nav-tabs nav" role="tablist">
  <li class="active">
    <a href="#tab1" data-toggle="tab" aria-controls="tab1" role="tab">Tab 1</a>
  </li>
  <li>
    <a href="#tab2" data-toggle="tab" role="tab" aria-controls="tab2">Tab 2</a>
  </li>
 </ul>
<div class="tab-content">
  <div id="tab1" role="tabpanel" class="tab-pane active">
    <p> Nothing there </p>
  </div>
<div id="tab2" role="tabpanel" class="tab-pane">
    <div class="dragshared">
        <div>Item</div>
        <div>Item</div>
        <div>Item</div>
        <div>Item</div>
    </div>
  </div>
 </div>

JS:

$('.nav-tabs a').click(function (e) {
  e.preventDefault();
  $(this).tab('show');
});
$('.dragdrop').shapeshift({
selector: "div",
enableResize: false,
align: "left",
paddingX: 0,
paddingY: 0,
gutterX: 35,
gutterY: 70,
colWidth: 190,
animated: false,
minColums: 4,
dragClone: false,
enableDrag: true,
enableCrossDrop: true
});
$('.dragshared').shapeshift({
selector: "div",
enableResize: false,
align: "left",
paddingX: 0,
paddingY: 0,
gutterX: 35,
gutterY: 70,
colWidth: 190,
animated: false,
minColums: 4,
deleteClone: true,
dragClone: true,
enableCrossDrop: false
});

我的最终解决方案是在visibility: hidden/visible而不是display: block/none的开始引导选项卡上设置,并且只有在变形初始化后再次切换为显示无/块,因为可见性没有正常工作(停用选项卡可见一秒钟)。

我相信有办法让它变得聪明。

CSS

    .tab-content>.tab-pane {
      display: block;
      visibility: hidden;
      height: 0;
      width: 100%;
      .dragshared {
        height: 0!important;
      }
    }
    .tab-content>.active {
      height: auto;
      visibility: visible;
      .dragshared {
        height: auto;
      }
    }
    .tab-content.initialized>.tab-pane {
      display: none;
      visibility: visible;
    }
    .tab-content.initialized>.tab-pane.active {
      display: block;
    }

JS

(shapeshift initialization)
$('.tab-content').addClass('initialized');