HTML5和CSS3二接口

Posted 酒茶白开水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML5和CSS3二接口相关的知识,希望对你有一定的参考价值。

代码下载地址

网络状态改变事件

<script>
    /*online:网络联通时触发*/
    window.addEventListener("online", function () 
        alert("网络联通了");
    );
    /*offline:网络断开时触发*/
    window.addEventListener("offline", function () 
        alert("网络断开了");
    );
</script>

全屏显示接口

<body>
<div>
    <img src="images/huliena.jpeg" alt="" width="810" height="540"> <br/>
    <input type="button" id="fullscreen" value="开启全屏">
    <input type="button" id="exitFullscreen" value="退出全屏">
    <input type="button" id="isFullscreen" value="是否全屏">
</div>

<script>
    /*全屏操作方法和属性:
        1、requestFullscreen():开启全屏显示
            不同浏览器需要加不同前缀:chrome/safari-webkit,firefox-moz,ie-ms,oprea-o
        2、exitFullscreen():退出全屏显示
            不同浏览器也需要加上述不同前缀,退出全屏只能使用document来实现
        3、fullscreenElement:是否是全屏显示状态
            不同浏览器也需要加上述不同前缀,也只能使用document来判断
    */
    window.onload = function () 
        var div = document.querySelector("div");
        /*全屏操作*/
        document.querySelector("#fullscreen").onclick = function () 
            /*使用能力测试添加不同浏览器前缀*/
            if (div.requestFullscreen) 
                div.requestFullscreen();
             else if (div.webkitRequestFullscreen) 
                div.webkitRequestFullscreen();
             else if (div.mozRequestFullscreen) 
                div.mozRequestFullscreen();
             else if (div.msRequestFullscreen) 
                div.msRequestFullscreen();
            
        ;

        /*退出全屏*/
        document.querySelector("#exitFullscreen").onclick = function () 
            if (document.exitFullscreen) 
                document.exitFullscreen();
             else if (document.webkitExitFullscreen) 
                document.webkitExitFullscreen();
             else if (document.mozExitFullscreen) 
                document.mozExitFullscreen();
             else if (document.msExitFullscreen) 
                document.msExitFullscreen();
            
        

        /*判断是否是全屏*/
        document.querySelector("#isFullscreen").onclick = function () 
            if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullscreenElement || document.msFullscreenElement) 
                console.log("true");
             else 
                console.log("false")
            
        
    
</script>
</body>

文件操作接口

<body>

<form action="">
    <!--及时预览:
            1、及时:选择文件后立刻预览处理——onchange
            2、预览:通过读取对象的完成
    -->
    文件:<input type="file" name="myFile" id="myFile" onchange="getFileContent();">
</form>

<!--src:指定路径(资源定位——url),请求的是外部资源,一般来说是服务器资源,意味着需要像服务器发送请求,占用服务器资源。-->
<img src="" alt="">

<script>
    /*fileReader:读取文件内容
        :读取文本文件,返回字符串(默认编码utf8)
        :读取任意类型的文件,返回二进制字符串,不是用来读取文件给用户看而是用来存储文件。例如——读取文件获取二进制数据传给后台,
        后台收到数据再存储。
        :读取文件获取一段以data开头的字符串,这段字符串的本质就是DataURL.DataURL是一种将文件嵌入到文档的方案。DataURL是
        将资源转化为base64编码的字符串,并且将这些内容直接存储在URL中。优化网页加载速度和执行效率。
        :中断执行效率。
    * */
    function getFileContent() 
        /*读取文件:
            1、创建读取对象
            2、获取文件,读取DataURL
                没有任何返回值——void,读完文件后会将存储在文件读取对象的result中
                需要传递一个参数binary large object文件(图片或其他可以嵌入到文档的类型)
                文件存储在file表单元素的files属性中,它是一个数组
            3、获取数据——fileReader提供完整的事件模型用来捕获读取文件的状态
                onabort:读取文件中断触发
                onerror:读取文件错误时触发
                onload:读取文件成功时触发
                onloadend:读取文件完成时触发,无论成功还是失败
                onloadstart:开始读取触发
                onloadprogress:读取过程中触发
        * */
        var reader = new FileReader();
        var file = document.querySelector("#myFile").files[0];
        reader.readAsDataURL(file)
        reader.onload = function () 
            document.querySelector("img").src = reader.result;
        
    
</script>

</body>

拖拽接口

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div.div1 
            border: 1px solid red;
            width: 300px;
            height: 300px;
            float: left;
            position: relative;
        
        p 
            margin: 0;
            background-color: blue;
        
        div.div2 
            border: 1px solid cyan;
            width: 300px;
            height: 300px;
            float: left;
            margin-left: 50px;
        
    </style>
</head>
<body>

<div class="div1" id="div1">
    <!--在h5中,拖拽元素必须添加draggable="true"属性,图片和超链接默认可以拖拽-->
    <p id="pe" draggable="true">我是文字,拖我!</p>
</div>

<div class="div2" id="div2">

</div>

<script>
    /*被拖拽元素事件:
        ondrag:拖拽过程中调用——持续触发
        ondragstart:拖拽开始时调用
        ondragend:拖拽结束调用
        ondragleave:鼠标离开拖拽元素原本位置/松开鼠标时调用
    * */
    var pe = document.querySelector("#pe");
    pe.ondrag = function () 
        console.log("正在拖拽");
    
    pe.ondragstart = function () 
        console.log("开始拖拽");
    
    pe.ondragend = function () 
        console.log("结束拖拽");
    
    pe.ondragleave = function () 
        console.log("鼠标离开");
    

    /*目标元素事件:
        ondragenter:应用于目标元素,当拖拽元素进入时调用
        ondragover:应用于目标元素,当停留在目标元素上时调用
        ondrop:应用于目标元素,当在目标元素上松开鼠标时调用
        ondragleave:应用于目标元素,当鼠标离开目标元素时调用
    * */
    var div2 = document.querySelector("#div2");
    div2.ondragenter = function () 
        console.log("已经进入")
    
    div2.ondragover = function (e) 
        /*console.log("正在停留")*/
        /*如果想触发ondrap事件,必须在ondragover事件中禁止浏览器默认行为*/
        e.preventDefault()
    
    div2.ondrop = function () 
        console.log("松开鼠标")
        div2.appendChild(pe);
    
    div2.ondragleave = function ()
        console.log("离开目标")
    

    /*给div1加上往回拖拽的功能*/
    var div1 = document.querySelector("#div1");
    div1.ondragover = function (e)
        e.preventDefault();
    
    div1.ondrop = function () 
        div1.appendChild(pe);
    
</script>

</body>

拖动多个元素以及在拖曳中使用dataTransfer代替全局变量:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * 
            padding: 0;
            margin: 0;
        
        div.div1 
            border: 1px solid red;
            width: 200px;
            height: 200px;
            float: left;
            margin-left: 20px;
            margin-top: 20px;
        
        p 
            margin-top: 5px;
            background-color: blue;
        
        div.div2 
            border: 1px solid cyan;
            width: 200px;
            height: 200px;
            float: left;
            margin-left: 20px;
            margin-top: 20px;
        
        div.div3 
            border: 1px solid purple;
            width: 200px;
            height: 200px;
            float: left;
            margin-left: 20px;
            margin-top: 20px;
        
    </style>
</head>
<body>

<div class="div1" id="div1">
    <!--在h5中,拖拽元素必须添加draggable="true"属性,图片和超链接默认可以拖拽-->
    <p id="pe" draggable="true">我是文字,拖我!</p>
    <p id="pe1" draggable="true">我也是文字,拖我!</p>
</div>

<div class="div2" id="div2">

</div>

<div class="div3" id="div3">

</div>

<script>
    var pe = document.querySelector("#pe");
    var obj = null;
    var target = null;
    document.ondragstart = function (e) 
        /*通过事件捕获来获取当前被拖拽的子元素*/
        target = e.target.parentNode;
        e.target.style.alpha = 0.2;
        e.target.parentNode.style.borderWidth = "5px";
        obj = e.target;

        /*通过datatransfer来实现数据的存储与获取
        * format:数据类型text/plain、text/urilist
        * data:数据一般来说是字符串值
        * */
        e.dataTransfer.setData("text/plain", e.target.id);
    
    document.ondragend = function (e) 
        e.target.style.alpha = 1.0;
        target.style.borderWidth = "1px";
    

    document.ondragover = function (e) 
        /*console.log("正在停留")*/
        /*如果想触发ondrap事件,必须在ondragover事件中禁止浏览器默认行为*/
        e.preventDefault()
    
    document.ondrop = function (e) 
        /*console.log(obj);
        e.target.appendChild(obj);
        console.log(e.target);*/

        /*通过dataTransfer.setData存储的数据只能在ondrop中取*/
        var id = e.dataTransfer.getData("text/plain");
        var element = document.getElementById(id);
        if (e.target.class=="")
        e.target.appendChild(element);
    
</script>

</body>
</html>

地理定位接口

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div.demo 
            width: 200px;
            height: 200px;
            border: 1px solid cyan;
        
    </style>
</head>
<body>

<div class="demo", id="demo"></div>

<script>
    var demo = document.getElementById("demo");
    function getLoction() 
        demo.innerHTML = "定位";
        /*能力测试:是否有定位功能*/
        if (navigator.geolocation) 
            /*
            successCallback:获取定位信息成功回调
            errorCallback:失败回调
            options:设置获取数据方式(对象)
                anableHighAccuracy:ture/false是否开启高精度
                timeout:设置超时时间,单位毫秒ms
                maximumAge:设置浏览器重新获取地理信息的时间,单位毫秒ms
             */
            navigator.geolocation.getCurrentPosition(successCallback, errorCallback, anableHighAccuracy: false, timeout: 3000);
         else 
            demo.innerHTML = "Geolocation is not surpported by this browser."
        
    

    /*定位成功,会将地理信息传递给回调函数*/
    function successCallback(positon) 
        console.log(positon);
        /*
        * latitude:经度
        * longitude:纬度
        * accuracy:精度
        * altitude:海拔高度*/
        demo.innerHTML = "Latitude: " + positon.coords.latitude + "<br/>Longitude: " + positon.coords.longitude
    
    function errorCallback(error) 
        console.log(error);
        switch (error.code) 
            /*用户拒绝定位请求*/
            case error.PERMISSION_DENIED:
                demo.innerHTML = "User denied the request for geoloction.";
                break;
            /*定位信息不可用*/
            case error.POSITION_UNAVAILABLE:
                demo.innerHTML = "Position information is unavailable.";
                break;
            /*请求超时*/
            case error.TIMEOUT:
                demo.innerHTML = "The request to get user location time out.";
                break;
            /*未知错误*/
            case error.UNKNOWN_ERR:
                demo.innerHTML = "An unknow error occured.";
                break;
        
    

    getLoction();
</script>

</body>
</html>

百度地图接口:

<body>
<div id="map1_container">
    <div id="allmap1"></div>
</div>
<div id="map2_container">
    <div id="allmap2"></div>
</div>

<script>
    // 加载第一张地图
    var map1 = new BMapGL.Map('allmap1'); // 创建Map实例1
    var point1 = new BMapGL.Point(116.404, 39.915);
    map1.centerAndZoom(point1, 9);
    map1.enableScrollWheelZoom();
    // 加载第二张地图
    var map2 = new BMapGL.Map('allmap2'); // 创建Map实例2
    var point2 = new BMapGL.Point(116.404, 39.915);
    map2.centerAndZoom(point2, 15);
    map2.enableScrollWheelZoom();
</script>
</body>
</html>

存储接口

sessionStorage存储数据:

<body>

<!--
sessionStorage:存储数据到本地,容量5MB左右
    1、本质存储在本页内存中
    2、生命周期为当前页面,关闭后就会被清除,前进/后退不受影响
setItem(key, value):存储数据,以键值对的方式存储
getItem(key):获取数据,(如果找不到对应的key,就会获得null)
removeItem(key):删除数据
clear:清空所以存储内容
-->

key:<input type="text", id="key"> <br/>
value:<input type="text" id="value"> <br/>
<input type="button" id="setData" value="存储数据" onclick="saveAction()">
<input type="button" id="getData" value="获取数据" onclick="getAction()">
<input type="button" id="removeData" value="移除数据" onclick="removeAction()">
<input type="button" id="clearData" value="清空数据" onclick="clearAction()">

<script>
    function saveAction() 
        console.log("saveAction");
        var key = document.querySelector("#key").value;
        var value = document.querySelector("#value").value;
        window.sessionStorage.setItem(key, value);
    
    function getAction() 
        console.log("getAction");
        var key = document.querySelector("#key").value;
        alert(window.sessionStorage.getItem(key));
    
    function removeAction() 
        console.log("removeAction");
        var key = document.querySelector("#key").value;
        window.sessionStorage.removeItem(key);
    
    function clearAction() 
        console.log("clearAction");
        window.sessionStorage.clear();
    
</script>
</body>

localStorage存储数据:

<body>

<!--
localStorage:容量20MB左右
    1、不同浏览器不能共享数据,但是同一个浏览器的不同窗口可以共享数据
    2、永久生效,不会随着页面关闭而删除,如果想删除必须手动删除
setItem(key, value):存储数据,以键值对的方式存储
getItem(key):获取数据,(如果找不到对应的key,就会获得null)
removeItem(key):删除数据
clear:清空所以存储内容
-->

key:<input type="text", id="key"> <br/>
value:<input type="text" id="value"> <br/>
<input type="button" id="setData" value="存储数据" onclick="saveAction()">
<input type="button" id="getData" value="获取数据" onclick="getAction()">
<input type="button" id="removeData" value="移除数据" onclick="removeAction()">
<input type="button" id="clearData" value="清空数据" onclick="clearAction()">

<script>
    function saveAction() 
        console.log("saveAction");
        var key = document.querySelector("#key").value;
        var value = document.querySelector("#value").value;
        window.localStorage.setItem(key, value);
    
    function getAction() 
        console.log("getAction");
        var key = document.querySelector("#key").value;
        alert(window.localStorage.getItem(key));
    
    function removeAction() 
        console.log("removeAction");
        var key = document.querySelector("#key").value;
        window.localStorage.removeItem(key);
    
    function clearAction() 
        console.log("clearAction");
        window.localStorage.clear();
    
</script>
</body>

应用程序缓存

<!--manifest="应用程序缓存清单文件的路径",建议文件扩展名为appcache,该文件的本质就是文本文件-->
<html lang="en" manifest="demo.appcache">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        img 
            width: 200px;
            display: block;
        
    </style>
</head>
<body>

<img src="images/one.png" alt="">
<img src="images/two.png" alt="">
<img src="images/three.png" alt="">
<img src="images/four.png" alt="">

<!--
通过cache manifest文件可以创建web应用的离线版本
    优势:1、配置需要缓存的资源,2、网络无连接仍可用,3、本地读取资源,提升访问速度,增强用户体验,4、减少请求,减轻服务器压力
    基础实现:
        1、在html标签中包含manifest属性
        2、创建配置appcache文件
-->

</body>
</html>

manifest配置文件:

CACHE MANIFEST
# 上面这句标记当前文件是缓存清单文件,第一句必须是这句

# 需要缓存的文件清单
CACHE:
../images/one.png
../images/two.png

# 每次都需要重新从服务器获取的资源文件清单
NETWORK:
../images/three.png
# *: 代表所有文件

# 如果文件无法获取则使用指定的文件替代
FALLBACK:
../images/fou.png ../images/huliena.jpeg
# /: 代表所有文件

以上是关于HTML5和CSS3二接口的主要内容,如果未能解决你的问题,请参考以下文章

HTML5和CSS3二接口

HTML5和CSS3五CSS3二

HTML5和CSS3五CSS3二

HTML5和CSS3五CSS3二

精通HTML5+CSS3需要学啥?

动画选项 HTML5 Canvas/CSS3/jQuery