【问题标题】:JQueryUI droppable hover class bug on scaled target缩放目标上的 JQuery UI 可放置悬停类错误
【发布时间】:2018-03-05 17:06:33
【问题描述】:

缩放可放置元素时,JQueryUI 错误地向元素添加/删除悬停类:缩放表的两个 'tr' 元素一次获取此类。 有什么办法可以避免吗?

PS bug ticket here

dirty fix here(codepen)

or here(github)

$('div').draggable();
$('tr').droppable({hoverClass:"highlight"});
div {
  display:inline-block;
  padding:3px;
  border:1px solid rgba(200,0,0,.6);
}
table {
  transform:scale(0.5);
  border:1px solid gray;
  padding:0;
  border-collapse: collapse;
}
td {
  padding:5px;
  background: rgba(0,0,150,0.3);
}
tr.highlight td {
  background: rgba(150,0,0,0.8);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div>grab me and drag over the table</div>
<table>
  <tr>
    <td>11111111111111111111111</td>
  </tr>
  <tr>
    <td>222222222222222222222</td>
  </tr>
  <tr>
    <td>333333333333333333333</td>
  </tr>
  <tr>
    <td>11111111111111111111111</td>
  </tr>
  <tr>
    <td>222222222222222222222</td>
  </tr>
  <tr>
    <td>333333333333333333333</td>
  </tr>
</table>

【问题讨论】:

    标签: javascript css jquery-ui scale droppable


    【解决方案1】:

    实际上transform:scale() 改变元素像素比而不是它在DOM上的实际像素

    那么为什么不直接减少tdfont-sizepadding 而不是使用transform

    堆栈片段

    $('div').draggable();
    $('tr').droppable({
      hoverClass: "highlight"
    });
    div {
      display: inline-block;
      padding: 3px;
      border: 1px solid rgba(200, 0, 0, .6);
    }
    
    table {
      border: 1px solid gray;
      padding: 0;
      border-collapse: collapse;
    }
    
    td {
      padding: 2px;
      background: rgba(0, 0, 150, 0.3);
      font-size: 10px;
    }
    
    tr.highlight td {
      background: rgba(150, 0, 0, 0.8);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <div>grab me and drag over the table</div>
    <table>
      <tr>
        <td>11111111111111111111111</td>
      </tr>
      <tr>
        <td>222222222222222222222</td>
      </tr>
      <tr>
        <td>333333333333333333333</td>
      </tr>
      <tr>
        <td>11111111111111111111111</td>
      </tr>
      <tr>
        <td>222222222222222222222</td>
      </tr>
      <tr>
        <td>333333333333333333333</td>
      </tr>
    </table>

    【讨论】:

    • 我的问题中的片段只是重现错误的活生生的例子。在现实生活中,我有巨大的可编辑数据库图表,带有平移和缩放功能。所以我需要的正是我所要求的:避免此错误的解决方法,但不是重新设计应用程序的建议。
    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多