首页前端开发HTMLHTML5新增属性之拖拽属性(介绍)

HTML5新增属性之拖拽属性(介绍)

时间2024-01-23 18:37:10发布访客分类HTML浏览578
导读:收集整理的这篇文章主要介绍了HTML5新增属性之拖拽属性(介绍),觉得挺不错的,现在分享给大家,也给大家做个参考。本文给大家介绍HTML5新增属性中的拖拽属性,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。HTML5新增的...
收集整理的这篇文章主要介绍了HTML5新增属性之拖拽属性(介绍),觉得挺不错的,现在分享给大家,也给大家做个参考。本文给大家介绍HTML5新增属性中的拖拽属性,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

HTML5新增的许多属性:

o 文件型声明(!DOCTYPE> 有一型:!DOCTYPE HTML>

o 新的解析序:不再基于SGML

o 新的元素:section, video, PRogress,nav, meter, time, aside, canvas, command, datalist, details, embed, figcaption,figure, footer, header, hgroup, keygen, mark, output, rp, rt, ruby, source,summary, wbr

o input元素的新型:date,email, url等等。

o 新的属性:ping(用于aarea,charset(用于meta, async(用于script)。

o 全域属性:id, tabindex, repeat

o 新的全域属性:contentedITable,contextmenu, Draggable, dropzone, hidden, spellcheck

o 移除元素:acronym, applet,basefont, Big, center, dir, font, frame, frameset, isindex, noframes, strike,tt

下面我们就可是介绍HTML5新增属性中的拖拽属性吧。

Datatransfer:拖拽象用来传递的媒介,一般Event.dataTransfer

Draggable属性: 名思,被拖拽的元素需要设置draggable=true,否则不会有效果

p draggable =’true’>
    /p>
    

DataTransfer属性和

dropEffect

String


effectAllowed

String

files

FileList

mozCursor

String

mozItemCount

Unsigned long

mozSourceNode

Node

mozUserCancelled

Boolean

types

DOMStringList

ondragstart 事件: 当拖拽元素开始被拖拽的候触事件,此事件作用在被拖拽元素上

ondragenter事件:当拖拽元素入目元素候触事件,此事件作用在目标元素上

ondragover事件:当拖拽元素穿过元素候触事件,此事件作用在目标元素上

ondrop事件:当拖拽元素在目标元素上同时放开鼠标时触发的时候,此事件作用在目标元素上

ondragend事件:当拖拽完成事件,此事件作用在被拖拽元素上

Event.preventDefault() 方法:阻止默认事件方法等的执行。在ondrop中一定要执行preventDefault,否则ondrop事件不会被触发。另外,如果是从其他应用软件或者文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或者是相关信息,并不是真的执行drop。此时需要用document的ondragover事件替代

Event.effectAllowed 属性:拖拽效果,取有:

None,copy,copyLink,copyMove,link,linkMove,move,all,uninitialized(default)

含义

None

该项目不允许被drop

copy

源项目的复制项可能会出现在新的位置

copyLink

允许copy或者link操作

copyMove

允许copy或者move操作

link

可以在新的地方建立与源的链接

linkMove

允许link或者move操作

move

一个项目可能被移动到新的位置

All

允许所有操作

事件触发顺序

ondragstart-> ondragenter-> ondragover-> ondrop-> ondragend

Demo

box从右边拖到container中后,box在右边消失,container中添加了被拖拽的box。

右边的box是可排序的。

代码

body>
    p class="container">
         container/p>
    p class="boxList">
        p class="box" draggable="true">
    box-1/p>
        p class="box" draggable="true">
    box-2/p>
        p class="box" draggable="true">
    box-3/p>
        p class="box" draggable="true">
    box-4/p>
        p class="box" draggable="true">
    box-5/p>
        p class="box" draggable="true">
    box-6/p>
        p class="box" draggable="true">
    box-7/p>
    /p>
    p class="alert"/>
    /body>
    
script>
        VAR container = document.getElementsByclassname('container')[0];
        var boxList = document.getElementsByClassName('boxList')[0];
        var boxes =  document.getElementsByClassName('box');
        var listLength = boxes.length;
        var targetDropEle=null;
    (function () {
            for(let i=0;
    ilistLength;
i++){
            boxes[i].ondragstart = function (ev) {
                    ev.dataTransfer.effectAllowed = "move";
                    ev.dataTransfer.setDragImage(ev.target, 0, 0);
                    ev.dataTransfer.setData("Text",i+1);
    //                dataTransfer.setData() 方法设置被拖数据的数据类型和值//                数据类型是text,值是可拖动元素的innerHTML                targetDropEle = ev.target;
                showAlter("ondragstart")            }
            boxes[i].ondragend = function(ev) {
                    /*拖拽结束*/                ev.dataTransfer.clearData("Text");
                    targetDropEle = null;
                    showAlter("ondragend");
                return false            }
    ;
            boxes[i].ondragover = function () {
                    /*拖拽元素进入目标元素上移动*/                showAlter("ondragover");
                    event.preventDefault();
    //            默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式;
            }
            boxes[i].ondragenter = function (ev) {
                    showAlter("ondragenter");
                /*拖拽元素进入目标元素*/            }
            boxes[i].ondrop = function (ev) {
                /*拖拽元素进入目标元素头上,同时鼠标松开的时候*/                if(targetDropEle){
                        ev.preventDefault();
    //                调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)                    showAlter("ondrop");
                        ev.target.parentNode.insertBefore(targetDropEle,ev.target);
                }
            }
        }
        container.ondragover = function () {
                /*拖拽元素进入目标元素上移动*/            showAlter("ondragover");
                event.preventDefault();
    //            默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式;
        }
        container.ondragenter = function (ev) {
                showAlter("ondragenter");
            /*拖拽元素进入目标元素*/            ev.target.style.opacity=0.5        }
        container.ondrop = function (ev) {
            /*拖拽元素进入目标元素头上,同时鼠标松开的时候*/            if(targetDropEle){
                    ev.preventDefault();
    //                调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)                showAlter("ondrop");
    //                let number=ev.dataTransfer.getData("Text");
//                if(number%2==0){
    //                    return false;
//                }
                    targetDropEle.parentNode.removeChild(targetDropEle);
                    container.appendChild(targetDropEle);
                    ev.target.style.opacity=1;
            }
        }
    }
    )();
    function showAlter(content) {
        setTimeout(function () {
            document.getElementsByClassName('alert')[0].style.display="none"        }
    ,1000)        document.getElementsByClassName('alert')[0].innerHTML=content;
            document.getElementsByClassName('alert')[0].style.display="block"        console.LOG(content);
    }
    /script>
    

还看到了一些html5的新属性就写在文章末尾吧

!DOCTYPE html>
    html>
    head>
        meta charset="UTF-8">
        title>
    Title/title>
        style>
        .userInfo{
                color: red;
        }
        .userInfo :hover{
                color: transparent;
        }
        .userInfo:hover:after{
                content: attr(data-hover-response);
                color: black;
        }
        /style>
    /head>
    body>
    !--data-***-->
    !--符合html5的规范-->
    !--js提供dataset方法-->
    !--css提供attr()方法-->
    !--div userid = "6666" name="hugo">
    /div>
    -->
    div id ="user" data-userid="6666" data-hover-response="see I am changed" data-name="hugo" data-date-of-birthday>
    Fiona/div>
    !--datalist-->
    browsers:input list="browsers">
    datalist id="browsers">
        option value="chrome">
    /option>
        option value="fireFox">
    /option>
        option value="IE">
    /option>
        option value="opera">
    /option>
        option value="Safari">
    /option>
    /datalist>
    !--download属性:表明资源是让用户下载的而不是立即显示的。download的值就是文件名-->
    div style="margin-top: 20px">
        a href="1-160F6160T7.jpg"  download="kitty.jpg">
     download with download /a>
        a href="1-160F6160T7.jpg" style="margin-left: 20px">
     download without download /a>
    /div>
    !--下载动态生成的文件,通bob创建二进制文件,然后用这个属性下载到本地-->
    !--autofocus 页面加载时自动获得焦点,仅对于input, button, textarea等表单元素有效,多个autofocus存在时候,作用与第一个-->
    div style="margin-top: 20px">
        input>
        button autofocus="autofocus">
    click me/button>
        textarea autofocus="autofocus">
    /textarea>
        input autofocus="autofocus">
    /div>
    !--placeholder-->
    div style="margin-top: 20px">
    input placeholder="use rname">
    /div>
    !--menu目前chrome safari不支持-->
    div>
        menu type="context" id="mymenu">
            menuitem label="fresh post">
    /menuitem>
            menuitem label="skip to moment">
    /menuitem>
            menuitem label="share to...">
                menuitem label="faceBook">
    /menuitem>
                menuitem label="twitter">
    /menuitem>
            /menuitem>
        /menu>
    /div>
    /body>
    script>
        var user = document.getElementById("user");
        //驼峰的写法    user.dataset.dateOfBirthday = "1992-04-04"    user.dataset.englishName = "Fiona"//    !--下载动态生成的文件,通bob创建二进制文件,然后用这个属性下载到本地-->
    var blob = new Blob(["hello world I am content "]);
    //文本内容    var a = document.createElement("a");
        a.href = window.URL.createObjectURL(blob);
        a.download = "hello world.txt";
        a.textContent = "download hello world"    document.body.appendChild(a)/script>
    /html>
    

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问HTML5视频教程!

相关推荐:

php公益培训视频教程

HTML5图文教程

HTML5在线手册

html5特效代码大全

以上就是HTML5新增属性之拖拽属性(介绍)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

Drag

若转载请注明出处: HTML5新增属性之拖拽属性(介绍)
本文地址: https://pptw.com/jishu/584512.html
H5上滑跳转页面的实现(代码实例) HTML5中dialog元素的详细讲解(代码示例)

游客 回复需填写必要信息