placeholder
    输入框提示信息
    contenteditable
    是否可以编辑元素内容
    子元素可以继承
    默认值:false
    draggable
    是否可以拖拽元素,a元素与img元素默认就有
    Chrome与safari可以正常使用
    拖拽的生命周期,拖拽的组成,
    1.拖拽的开始,拖拽进行中,拖拽结束
    事件
    ondragstart 拖拽的开始
    ondrag 拖拽进行中
    ondragend 拖拽结束

    1. var div = document.getElementsByTagName('div')[0];
    2. var beginX = 0;
    3. var beginY = 0;
    4. div.ondragstart = function(e){
    5. beginX = e.clientX;
    6. beginY = e.clientY;
    7. }
    8. div.ondragend = function(e){
    9. var x = e.clientX - beginX;
    10. var y = e.clientY - beginY;
    11. div.style.left = div.offsetLeft + x +'px';
    12. div.style.top = div.offsetTop + y + 'px';

    2.被拖拽物,目标区域
    事件
    ondragenter
    拖拽物体被拖进目标区域,这里的元素图形进去不会触发,需要拖拽的鼠标进入才会触发
    ondragover
    在目标区域移动就会触发
    ondragleave
    离开目标区域触发
    ondrop
    在目标区域放下触发,默认情况下不会触发,因为所有标签元素,当拖拽周期结束时,默认事件是回到原处,需要在ondragover事件下阻止默认事件
    在drop和dragstart 使用e.dataTransfer.effectAllowed/dropEffect 可以修改鼠标样式,兼容性极差
    拖拽实例,将ul1的子元素拖拽进ul2

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. <style>
    8. ul {
    9. padding: 0;
    10. margin: 0;
    11. width: 100px;
    12. height: 100px;
    13. border: 1px solid #000;
    14. position: absolute;
    15. }
    16. li {
    17. list-style: none;
    18. width: 80px;
    19. height: 25px;
    20. background: chartreuse;
    21. margin: 5px auto;
    22. }
    23. .warp1 {
    24. left: 300px;
    25. }
    26. .warp2 {
    27. left: 600px;
    28. }
    29. </style>
    30. </head>
    31. <body>
    32. <ul class="warp1">
    33. <li class="box" draggable="true"></li>
    34. <li class="box" draggable="true"></li>
    35. <li class="box" draggable="true"></li>
    36. </ul>
    37. <ul class="warp2"></ul>
    38. <script>
    39. var dragDom = null;
    40. var li = document.getElementsByClassName('box');
    41. var warp1 = document.getElementsByClassName('warp1')[0];
    42. var warp2 = document.getElementsByClassName('warp2')[0];
    43. for (var i = 0; i < li.length; i++) {
    44. li[i].ondragstart = function (e) {
    45. dragDom = e.target;
    46. }
    47. }
    48. warp2.ondragover = function (e) {
    49. return false;
    50. }
    51. warp2.ondrop = function (e) {
    52. warp2.appendChild(dragDom);
    53. dragDom = null;
    54. }
    55. warp1.ondragover = function (e) {
    56. return false;
    57. }
    58. warp1.ondrop = function (e) {
    59. warp1.appendChild(dragDom);
    60. dragDom = null;
    61. }
    62. </script>
    63. </body>
    64. </html>