html div拖动可见性无法在Safari浏览器中进行

BinaryTie

我在玩一个谜,发现在“拖动”过程中将对象拖动到放置区域时,该对象不可见。在Chrome浏览器上工作正常。

https://jsfiddle.net/hehehe2/wk5pzfx1/

一个假设是改变这条线

ev.dataTransfer.setData("text", ev.target.className); 

并更改为target.id,但无济于事。

该问题是由不使用造成的拖动效果属性为拖动事件还您正在使用的CSS#puz#puzz有几个属性,使拖HTML元素去流出来,我删除float:left,并position:absolute<i>标签CSS和#puzDIV,并用容器代替他们<div>来将元素居中,这是一个工作片段以及jsfiddle

function color() {
        let root = document.documentElement
        root.style.setProperty('--color', "hsl("+Math.floor(Math.random()*360)+"deg,50%,50%)");  
      }
      color()

      function allowDrop(ev) {
        ev.preventDefault();
      }

      function drag(ev) {
        ev.dataTransfer.setData("text", ev.target.className);
        ev.effectAllowed = "copyMove";
      }

      function drop(ev) {
        ev.preventDefault();
        var data = ev.dataTransfer.getData("text")
        
        if(ev.target.className == data){
          ev.target.classList.add('dropped')
          document.querySelector('.'+data+"[draggable='true']").classList.add('done')
          
          if(document.querySelectorAll('.dropped').length == 3) {
            document.querySelector('#puz').style.border = 'none'  
            document.querySelector('#puz').style.animation = 'allDone 1s linear forwards'  
            
            setTimeout(function(){
              document.body.innerHTML = "<div class='container'><div id='puz'>  <i class='first' ondrop='drop(event)' ondragover='allowDrop(event)'></i>  <i class='secon' ondrop='drop(event)' ondragover='allowDrop(event)'></i>  <i class='third' ondrop='drop(event)' ondragover='allowDrop(event)'></i></div><div id='puzz'>  <i class='third' draggable='true' ondragstart='drag(event)'></i>  <i class='first' draggable='true' ondragstart='drag(event)'></i>  <i class='secon' draggable='true' ondragstart='drag(event)'></i></div></div>";
              color()
            },1500)
          }    
        }  
      }
:root {
  --color:tomato;
  --height:75px;
  --border-radius:35px;
/*   turn on below for image based version */
/*   --image:url('https://media.gettyimages.com/vectors/hot-dog-dachshund-puppy-vector-id895877422?s=2048x2048'); */
}

#puz, #puzz {
  /*position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);*/
  width:300px;
  height:var(--height);
  border-radius:var(--border-radius);
  border:3px dashed lightgray;  
  white-space:nowrap;
  user-select:none;
}
#puzz {
  /*transform:translate(-50%,100%);*/
  border:0;
}

#puz i {
  display: inline-block;
  width:100px;
  height:var(--height);
}

#puzz i {
  display:inline-block;
  width:100px;
  height:var(--height);
  background:var(--color);
  background-image:var(--image);
  background-size:300px 300px;
  cursor:move;
}
.first {
  border-top-left-radius:var(--border-radius);
  border-bottom-left-radius:var(--border-radius);
  background-position:left center !important;
}
.secon {
  background-position:center center !important;
}
.third {
  border-top-right-radius:var(--border-radius);
  border-bottom-right-radius:var(--border-radius);
  background-position:right center !important;
}

.dropped {
  background:var(--color);
  background-image:var(--image);
  background-size:300px 300px;
}
.done {
  opacity:0;
  pointer-events:none;
}

@keyframes allDone {
  50% { transform: scale(1.2); }
}
.container {
  width: 300px;
  height: 400px;
  margin: 100px auto;
}
<div class="container">
  <div id='puz'>
    <i class='first' ondrop='drop(event)' ondragover='allowDrop(event)'></i>
    <i class='secon' ondrop='drop(event)' ondragover='allowDrop(event)'></i>
    <i class='third' ondrop='drop(event)' ondragover='allowDrop(event)'></i>
  </div>
  <div id='puzz'>
    <i class='third' draggable='true' ondragstart='drag(event)'></i>
    <i class='first' draggable='true' ondragstart='drag(event)'></i>
    <i class='secon' draggable='true' ondragstart='drag(event)'></i>
  </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可见性隐藏后无法查看html表

来自分类Dev

在可见性切换时调整div的大小(在HTML +纯JS中)?

来自分类Dev

如何基于html中选择的选项切换div的可见性

来自分类Dev

使用简单的MVC Html.DropDownList来控制div,onLoad和selectChange的可见性

来自分类Dev

在 HTML5 中切换 div 块的可见性

来自分类Dev

Chrome浏览器可见性:折叠

来自分类Dev

无法在渲染的HTML代码中更改Panel的可见性

来自分类Dev

通过指令更新HTML元素的可见性

来自分类Dev

(HTML / Js)循环元素可见性

来自分类Dev

HTML上的Yii2可见性属性

来自分类Dev

使用Java脚本更改html可见性

来自分类Dev

浏览器无法很好地呈现HTML空DIV

来自分类Dev

当单击诸如showcaps,small,number之类的按钮时,html中的div不变,可见性不起作用

来自分类Dev

如何在呈现html按钮之前更改html按钮的可见性?滑轨

来自分类Dev

无法从Android浏览器捕获HTML

来自分类Dev

当html表格行中的div具有可见性时,如何将html表格行默认设置为无高度:

来自分类Dev

Google Chrome浏览器中的页面可见性API

来自分类Dev

在浏览器窗口调整大小时切换滑出可见性

来自分类Dev

使用jQuery / JavaScript处理HTML表(用于列重新排序,可见性)?

来自分类Dev

如何使用html / css / js /在2个画布之间切换可见性?

来自分类Dev

使用单选按钮的HTML元素的Javascript过滤器可见性

来自分类Dev

在HTML和JS中更改可见性属性的怪癖

来自分类Dev

基于权限而不是MVC中角色的HTML元素可见性

来自分类Dev

使用jsp切换动态创建的html按钮的可见性

来自分类Dev

HTML - 在页面上删除元素的“存在”但保持其可见性?

来自分类Dev

HTML文字未在Windows的Safari浏览器中显示

来自分类Dev

为什么即使使用HTML5也无法通过浏览器进行UDP连接?

来自分类Dev

浏览器缓存 HTML

来自分类Dev

可见性发生变化时,Chrome浏览器中的iFrame滚动条会消失

Related 相关文章

  1. 1

    可见性隐藏后无法查看html表

  2. 2

    在可见性切换时调整div的大小(在HTML +纯JS中)?

  3. 3

    如何基于html中选择的选项切换div的可见性

  4. 4

    使用简单的MVC Html.DropDownList来控制div,onLoad和selectChange的可见性

  5. 5

    在 HTML5 中切换 div 块的可见性

  6. 6

    Chrome浏览器可见性:折叠

  7. 7

    无法在渲染的HTML代码中更改Panel的可见性

  8. 8

    通过指令更新HTML元素的可见性

  9. 9

    (HTML / Js)循环元素可见性

  10. 10

    HTML上的Yii2可见性属性

  11. 11

    使用Java脚本更改html可见性

  12. 12

    浏览器无法很好地呈现HTML空DIV

  13. 13

    当单击诸如showcaps,small,number之类的按钮时,html中的div不变,可见性不起作用

  14. 14

    如何在呈现html按钮之前更改html按钮的可见性?滑轨

  15. 15

    无法从Android浏览器捕获HTML

  16. 16

    当html表格行中的div具有可见性时,如何将html表格行默认设置为无高度:

  17. 17

    Google Chrome浏览器中的页面可见性API

  18. 18

    在浏览器窗口调整大小时切换滑出可见性

  19. 19

    使用jQuery / JavaScript处理HTML表(用于列重新排序,可见性)?

  20. 20

    如何使用html / css / js /在2个画布之间切换可见性?

  21. 21

    使用单选按钮的HTML元素的Javascript过滤器可见性

  22. 22

    在HTML和JS中更改可见性属性的怪癖

  23. 23

    基于权限而不是MVC中角色的HTML元素可见性

  24. 24

    使用jsp切换动态创建的html按钮的可见性

  25. 25

    HTML - 在页面上删除元素的“存在”但保持其可见性?

  26. 26

    HTML文字未在Windows的Safari浏览器中显示

  27. 27

    为什么即使使用HTML5也无法通过浏览器进行UDP连接?

  28. 28

    浏览器缓存 HTML

  29. 29

    可见性发生变化时,Chrome浏览器中的iFrame滚动条会消失

热门标签

归档