H5整理(一)

HTML5新的页面结构

<!doctype html>

<meta charset=”utf-8”/>

 

语义化标签

这样做的好处是使得文档结构层次清晰,利于代码编写和开发,还有搜索引擎优化(seo)等等的好处。

<header></header> 页眉

主要用于页面的头部的信息介绍,也可用于板块头部

<hgroup></hgroup>标题组合

一个标题和一个子标题,或者标语的组合

<nav></nav>导航

<section></section>页面上的板块

用于划分页面上的不同区域

<article></article>独立的内容部分

比section具有更明确的语义,可包含其他语义化标签

<aside></ aside>

aside标签定义 article 以外的内容,一般用于辅助信息或侧边栏

<figure><figure>

描述图像或视频

<figcaption><figcaption>   图像标题

<datalist></datalist>     选项列表

与 input 元素配合使用,来定义 input 可能的值。

<input type="text" list="valList">
<datalist id="valList">
<option>javascript</option>
</datalist>

<details></details>

用于描述文档或文档某个部分的细节

    <summary></summary>

open属性 , 展开,不写open 就是折叠

<progress><progress>   定义进度条

<progress max="100" value="76">
</progress>

 

IE兼容

针对IE6-8这些不支持HTML5语义化标签的浏览器我们可以使用javascript来解决他们 方法如下:
<script>
document.createElement(“header”);
document.createElement(“nav”);
</script>
注意display的问题

表单控件

<form action="http://www.baidu.com">
    <p>邮箱:<input type="email"  /> </p>
    <p>手机号:<input type="tel"  /></p>  <!--在手机访问会弹出数字键盘-->
    <p>url:<input type="url"/></p>
    <p>search:<input type="search"/></p>
    <p>range范围:  <input type="range" max="100" min="0" value="50" step="1"> </p>
    <p>number:<input type="number"/></p>
    <p>color:<input type="color"/></p>           
    <p>time:<input type="time"/></p>
    <p>date:<input type="date"/></p>
    <p>week:<input type="week"/></p>
    <p>month:<input type="month"/></p>
    <input type="submit" />
</form>

表单属性

<form action="http://www.baidu.com">
    <input type="text" name="abc" autocomplete="on"  >
       
    <!--autocomplete="on"  "off"
       autocomplete 属性规定输入字段是否应该启用自动完成功能。
自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。       
    -->
    <!-- autofocus自动获取光标-->
    <input type="submit">
</form>

 

<input type="text" name="abc2" required  pattern="\d{1,5}" maxlength="10">

<!--required属性 表示值不能为空
    pattern 后面正则表达式, 表示用户输入的内容要匹配正则表达式,否则提示
    格式不一致
    maxlength 限制用户输入最大长度    
-->

表单验证--事件invalid

通过这个事件可以自己定制错误信息框

<form action="http://www.baidu.com" id="form1">
        <p>email:<input id="usereamil" type="email" name="useremail" required pattern="\d{1,7}"></p>
        <input type="submit">
    </form>

    <div id='errorInfo'></div>
    <script>
        var oemail = document.getElementById("usereamil");
        var oform = document.getElementsByTagName("form")[0];
       
        var oerror = document.getElementById("errorInfo");
       
        var error = {
            patternMismatch:"格式错误",
            typeMismatch:"类型错误",
          
 valueMissing:"空错误",
            tooLong:"输入过长",

        }
       
        oemail.addEventListener("invalid",function(ev){
           
            oerror.innerHTML="";
            console.log(this.validity);
           
            //这个对象中的属性值 是true , 就表示该项不匹配。
           
           ev.preventDefault();
            //阻止浏览器默认输入 错误提示。
           
            for(var i in this.validity){
               
                if(this.validity[i]){
                    oerror.innerHTML += error[i]+"<br/>";
                }
            }
        })

新选择器

<div id="div1" class="box">
            <span>span标签</span>       
            <input type="text"  />
            <input type="password" />
        </div>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <script>
            var ospan  = document.querySelector("ul li");
            // querySelector 参数是css 选择器的写法。
            // 只能匹配第一个dom元素,
           
            ospan.style.background = "red";
           
            var oli = document.querySelectorAll("#div1 span");
           
            // queryselecotor 能够匹配所有的元素, 返回值是一个数组,
            //如果只匹配到了一个,返回值则是一个只有一个元素的数组
            console.log(oli);
           
           
            var odiv = document.getElementsByClassName("box");
           
            //getElementsByClassName 返回值是一个数组, 通过class 名字匹配
            console.log(odiv[0]);
        </script>

获取class列表

<div id="div1" class="box1 box2 box3">aaaa</div>

<script>
    var odiv = document.querySelector("#div1");
   
    odiv.classList.add("box4") ;  //box1 box2 box3 box4
   
    odiv.classList.remove("box1");  //box2 box3 box4
   
    odiv.classList.toggle("box5"); //切换 , 已有class 就是删除,没有class就是添加
   
    console.log(odiv.classList);
</script>


历史管理—onhashchange

<!DOCTYPE HTML>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>无标题文档</title>
        <style>
            *{
                margin: 0px;
                padding:0px
            }
           
            html,body{
                height: 100%;
                width: 100%;
                overflow: hidden;
            }
           
            body{
                display: flex;
                flex-flow: column;
            }
           
            header,footer{
                height: 50px;
                background: gray;
            }
            article{
                flex: 1;
                overflow: auto;
            }
           
            article section{
                height: 100%;
                display: none;
            }
           
            footer{
                display: flex;
                text-align: center;
                line-height: 50px;
            }               
            footer a{
                flex: 1;
            }
        </style>
    </head>

    <body>
        <header> </header>
        <article>
            <section id="weixin">
                我是微信界面               
            </section>
            <section id="me">
                我是我的相关设置界面
            </section>
            <section id="contact">
                我是联系人界面
            </section>
        </article>
        <footer>
            <a href="#weixin">微信</a>
            <a href="#me">我</a>
            <a href="#contact">联系人</a>
        </footer>

        <script>       
            var ome = document.getElementById("me");
            var oweixin = document.getElementById("weixin");
            var ocontact = document.getElementById("contact");

            var divObj={
                "#weixin":oweixin,
                "#contact":ocontact,
                "#me":ome
            }
            window.onhashchange = function(){
                console.log(location.hash);
               
                //window.location.hash  取值就是 锚点部分 #weixin
                for(var i in  divObj){
                    divObj[i].style.display = "none";
                }
                divObj[location.hash].style.display = "block";
            }
            //window.location.hash 可读可写
           
            window.location.hash =  "#me";
            //单页面 的路由管理机制
        </script>
    </body>

</html>

拖拽操作

被拖拽

draggable
设置为true,元素就可以拖拽了
拖拽元素事件 :  事件对象为被拖拽元素
dragstart ,  拖拽前触发
drag ,拖拽前、拖拽结束之间,连续触发
dragend  , 拖拽结束触发

<style>
    #div1 {
        width: 100px;
        height: 100px;
        background: red;
        color:white;
    }
</style>
<div id="div1" draggable="true">
</div>
<script>
    var odiv = document.getElementById("div1");
    odiv.addEventListener("dragstart",function(){
        this.style.backgroundColor = "yellow";
    });
    odiv.addEventListener("drag",function(){
        console.log(1111);
    });
    odiv.addEventListener("dragend",function(){
        this.style.backgroundColor = "red";
    });
</script>

降落

目标元素事件 :  事件对象为目标元素(必须绑定的)
dragenter ,  进入目标元素触发,相当于mouseover
dragover ,进入目标、离开目标之间,连续触发
dragleave ,  离开目标元素触发,相当于mouseout
drop  ,  在目标元素上释放鼠标触发

注意:当ondrop事件想触发的时候,必须阻止ondragover的默认事件

dataTransfer对象
setData() : 设置数据 key和value(必须是字符串)
getData() : 获取数据,根据key值,获取对应的value


解决火狐下的问题:
必须设置dataTransfer对象才可以拖拽除图片外的其他标签

       <style>
            .commondiv {
                width: 100px;
                height: 100px;
                background: red;
                color:black;
            }
            #div2{
                width: 300px;
                height: 300px;
                background: gray;
                position: absolute;
                top:100px;
                left:400px;
            }
        </style>
        <div id="div1" draggable="true" class="commondiv">
            12345678
        </div>
       
        <div id="div2">
        </div>
        <script>
            var odiv1 = document.getElementById("div1");
            odiv1.addEventListener("dragstart",function(ev){
                this.style.backgroundColor = "yellow";
               
                //设置要传递的键值对
                ev.dataTransfer.setData("content",this.innerHTML);
            });
            odiv1.addEventListener("drag",function(){
//                console.log(1111);
            });
            odiv1.addEventListener("dragend",function(){
                this.style.backgroundColor = "red";
            });
           
            var odiv2 = document.getElementById("div2");
           
            odiv2.ondragenter = function(){
                this.style.border= "5px solid red";
            }
            odiv2.ondragover = function(ev){
                console.log(111);
                ev.preventDefault();
            }
           
            odiv2.ondragleave = function(){
                this.style.border= "none";
            }
           
            odiv2.ondrop = function(ev){
               
                //获取的传递过来的键值对。
                console.log(ev.dataTransfer.getData("content"));
                this.style.border= "none";
               
                var div = document.createElement("div");
                div.className = "commondiv";
                div.innerHTML = ev.dataTransfer.getData("content");
                this.appendChild(div);
               
                odiv1.remove();
            }
        </script>

拖放外部文字
(1)dragover事件中设置
ev.dataTransfer.dropEffect = “copy”
(2) ev.dataTransfer.getData(“text”)“; 来访问

拖放外部文件
(1)阻止ondrop 默认事件
(2) 获取ev.dataTransfer.files
(3) var fileReader = new FileReader();
               fileReader.onload = function(){
                         console.log(this.result);
                        }
         fileReader.readAsDataURL(ev.dataTransfer.files[0]);


www.dropzonejs.com   发现的一个关于drop的库

posted @ 2016-09-26 20:46  只是铅笔  阅读(215)  评论(0)    收藏  举报