h5复习笔记

HTML提升

语义标签

常见语义标签
  • header 头部
  • nav 导航
  • article 主体内容
  • aside 侧边栏
  • section 片段 区块
  • footer 底部
语义化标签兼容性
  • 语义化标签在IE9以下不支持
  • 使用html5shiv插件可以解决,使用方法如下
    <!--  条件注释  lt gt lte gte  9 指的是版本 -->
    <!--[if lt IE 9 ]>
    <script src="html5shiv.min.js"></script>
    <![endif]-->

表单类型

常用类型
  • search
  • email
  • url
  • number
  • date

表单属性

常用表单属性
  • form

    • autocomplete 设置整个表单是否开启自动完成 on|off
    • novalidate 设置H5的表单校验是否工作 true 不工作 不加该属性代表校验
  • input:

    • autocomplete 单独设置每个文本框的自动完成
    • autofocus 设置当前文本域页面加载完了过后自动得到焦点
    • placeholder 文本框占位符
    • required 限制当前input为必须的
    • form 属性是让表单外的表单元素也可以跟随表单一起提交

JAVASCRIPT提升

DOM扩展

获取元素
document.getElementsByClassName ('class'); 
//通过类名获取元素,以伪数组形式存在。

document.querySelector('selector');
//通过CSS选择器获取元素,符合匹配条件的第1个元素。

document.querySelectorAll('selector'); 
//通过CSS选择器获取元素,以伪数组形式存在。
类名操作
Node.classList.add('class'); 
//添加class

Node.classList.remove('class'); 
//移除class

Node.classList.toggle('class'); 
//切换class,有则移除,无则添加

Node.classList.contains('class'); 
//检测是否存在class
自定义属性

在HTML5中我们可以自定义属性,其格式如下data-*=""


<div id="demo" data-my-name="itren" data-age="10">
<script>
/*
  Node.dataset是以对象形式存在的,当我们为同一个DOM节点指定了多个自定义属性时,
  Node.dataset则存储了所有的自定义属性的值。
  */
var demo = document.querySelector('demo');
//获取
//注:当我们如下格式设置时,则需要以驼峰格式才能正确获取
var name = demo.dataset['myName'];
var age = demo.dataset['age'];
//设置
demo.dataset['name'] = 'web developer';
<script/>
综合案例TAB栏
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab-切换(选项卡)</title>
    <style>
        .tab {
            width: 400px;
            height: 400px;
            border: 1px solid #ccc;
        }

        .tab ul {
            list-style: none;
            margin: 0;
            padding: 0;
            height: 50px;
        }

        .tab ul li {
            float: left;
            width: 100px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            background: green;
            color: #fff;
            font-size: 16px;
            cursor: pointer;
        }

        .tab ul li.now {
            background: red;
        }

        .tab > div {
            padding: 10px;
            display: none;
        }

        .tab > div.active {
            display: block;
        }
    </style>
</head>
<body>
<div class="tab">
    <ul>
        <li data-id="hot" class="now">热点新闻</li>
        <li data-id="follow">关注新闻</li>
        <li data-id="china">国内新闻</li>
        <li data-id="nba">NBA新闻</li>
    </ul>
    <div id="follow">
        关注新闻关注新闻关注新闻关注新闻关注新闻关注新闻
        关注新闻关注新闻关注新闻关注新闻关注新闻关注新闻
        关注新闻关注新闻关注新闻关注新闻关注新闻关注新闻
    </div>
    <div id="hot" class="active">
        热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻
        热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻热点新闻
    </div>
    <div id="china">
        国内新闻国内新闻国内新闻国内新闻国内新闻
        国内新闻国内新闻国内新闻国内新闻国内新闻
    </div>
    <div id="nba">
        NBA新闻NBA新闻NBA新闻NBA新闻NBA新闻
        NBA新闻NBA新闻NBA新闻NBA新闻NBA新闻
    </div>
</div>
<script>
    window.onload = function (ev) {
        /*1. 点击菜单 更换当前样式*/
        /*2. 点击菜单 更换当前显示的内容*/
        document.querySelector('ul').onclick = function (e) {
            /*事件触发源*/
            var currentLi = e.target;
            console.log(e.target.tagName);
            if(e.target.tagName == 'LI'){
                /*判断是否已经是选中的 如果是执行停止*/
                if(currentLi.classList.contains('now')) return;
                /*去掉之前的 给当前的加上 now*/
                var oldLi = document.querySelector('li.now');
                oldLi.classList.remove('now');
                currentLi.classList.add('now');

                /*隐藏之前显示的内容*/
                var oldContentId = oldLi.dataset.id;
                document.querySelector('#'+oldContentId).classList.remove('active');
                /*显示的当前的内容*/
                var currentContentId = currentLi.dataset.id;
                document.querySelector('#'+currentContentId).classList.add('active');
            }
        }
    }
</script>
</body>
</html>

课程总结

  • 能够使用过渡转换动画实现宣传页一类型的需求。
  • 在使用HTML5语义标签,表单类型,表单属性的时候,遇见新的不要太惊讶,因为它可能做了更新。
  • HTML5新增API,提高在应用开发过程中的效率

扩展内容

拖拽上传

拖拽事件
  • 拖拽元素
    • ondrag 应用于拖拽元素,整个拖拽过程都会调用
    • ondragstart应用于拖拽元素,当拖拽开始时调用
    • ondragleave应用于拖拽元素,当鼠标离开拖拽元素时调用
    • ondragend应用于拖拽元素,当拖拽结束时调用
  • 目标元素
    • ondragenter应用于目标元素,当拖拽元素进入时调用
    • ondragover应用于目标元素,当停留在目标元素上时调用
    • ondrop应用于目标元素,当在目标元素上松开鼠标时调用
    • ondragleave应用于目标元素,当鼠标离开目标元素时调用
上传代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            border: 1px dashed #ccc;
            line-height: 200px;
            text-align: center;
            color: #ccc;
        }
    </style>
</head>
<body>
<div class="box">拖放图片到该区域</div>
<script>
    var box = document.querySelector('.box');
    box.addEventListener('dragenter', function (e) {
        /*禁用浏览器默认预览文件或下载文件操作*/
        e.preventDefault();
    });
    box.addEventListener('dragover', function (e) {
        /*禁用浏览器默认预览文件或下载文件操作*/
        e.preventDefault();
    });
    box.addEventListener('drop', function (e) {
        e.preventDefault();
        /*第一个文件数据*/
        var file = e.dataTransfer.files[0];
        //console.log(file);
        /*把数据设置到表单数据中*/
        var formData = new FormData();
        formData.append('dragImage', file);
        /*通过ajax异步提交*/
        var xhr = new XMLHttpRequest();
        xhr.open('post','upload.php');
        xhr.send(formData);
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200){
                /*上传成功*/
                console.log('ok');
                var img = new Image();
                img.src = xhr.responseText;
                document.querySelector('body').appendChild(img);
            }
        }
    });
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 一、HTML5 1.1 认识HTML5 HTML5并不仅仅只是作为HTML标记语言的一个最新版本,更重要的是它制定...
    福尔摩鸡阅读 15,741评论 14 51
  • CSS复习巩固 1、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 1. IE: trident内核2...
    雪落丶阅读 233评论 0 2
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,828评论 0 0
  • 1、HTML5:HTML4.1网页开发:结构: html4.0样式:css css2行为:jsHTML5:是HTM...
    Yuann阅读 877评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139