整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript-浏览器兼容的脚本化class操

JavaScript-浏览器兼容的脚本化class操作
/**

 * @author zswxjjh

 * @date  2021/3/29

 */
'use  strict';

/*
* 模仿DOMTokenList对象,提供contains()
* add(),remove()。toggle()方法
* 重写toString方法,为了模拟类数组特性
* 提供toArray方法
*
* */
var  classList=(function () {
  /*
  * e是一个元素,定义一个CSSClassList类模拟
  * DOMTokenList类
  * */
  function classList(e) {
   /* if(e.classList)
      return e.classList;
    else*/
      return new CSSClassList(e);
  }

  /*
  * 定义CSSClassList类
  * */
  function CSSClassList(e) {
     this.e=e;
  }

  /*
  * c是一个合法的类名,判断是否包含给定的类名
  * 返回boolean
  * */
  CSSClassList.prototype.contains=function (c) {
      //是否合法
    if(!c)
    {
      throw new TypeError('参数不存在!');
    }
    else  if(c.length===0 || c.lastIndexOf(' ')!==-1/*c包含空格*/)
    {
      throw new TypeError('不合法的类名:"'+c+'"!');
    }
    if(!this.e.className)
      return false;
   if(this.e.className===c)
     return true;
   return this.e.className.search('\\b'+c+'\\b')!==-1;
  };

  /*
  * 追加一个类名在尾部
  *
  * */
  CSSClassList.prototype.add=function (c) {
      if(this.contains(c))
        return;
      //判断值里面是否以空格结尾
      var classes=this.e.className;
       if(!classes)
         this.e.className='';
       if(classes.length!==0 && classes[classes.length-1]!==' ')/*不是以空格结尾*/
       {
          c=' '+c;
       }
       this.e.className+=c;
  };
  /*
  * 移除类名字c
  * */
  CSSClassList.prototype.remove=function (c) {
     if(this.contains(c))
     {
       var pattern=new RegExp('\\b'+c+'\\b\\s*','g');
       this.e.className=this.e.className.replace(pattern,'');
       if(!this.e.className)
       {
         this.e.removeAttribute('class');
       }
     }
  };

  /*
  * 如果c存在,删除c,返回false
  * 否则,追加c,返回true
  * */
  CSSClassList.prototype.toggle=function (c) {
     if(this.contains(c))
     {
       this.remove(c);
       return false;
     }
     else
     {
       this.add(c);
       return true;
     }
  };

  /*
  * 覆盖toString方法
  * */
  CSSClassList.prototype.toString=function () {
      return this.e.className;
  };

  /*
  * 提供类数组的功能,转换成数组
  * */
  CSSClassList.prototype.toArray=function () {
      return this.e.className.match(/\b\w+\b/g) ||[];
  };

  return classList;
})();
/*以上代码提供对HTML5标签属性class的跨浏览器操作*/

前不久抽空对目前比较火的视频直播,做了下研究与探索,了解其整体实现流程,以及探讨移动端HTML5直播可行性方案。

发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 HLS 为主(HLS存在延迟性问题,也可以借助 video.js 采用RTMP),PC端则以 RTMP 为主实时性较好,接下来将围绕这两种视频流协议来展开H5直播主题分享。

一、视频流协议HLS与RTMP

1. HTTP Live Streaming

HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持。一些常见的客户端如:MPlayerX、VLC 也都支持 HLS 协议。

HLS 协议基于 HTTP,而一个提供 HLS 的服务器需要做两件事:

编码:以 H.263 格式对图像进行编码,以 MP3 或者 HE-AAC 对声音进行编码,最终打包到 MPEG-2 TS(Transport Stream)容器之中;分割:把编码好的 TS 文件等长切分成后缀为 ts 的小文件,并生成一个 .m3u8 的纯文本索引文件;浏览器使用的是 m3u8 文件。m3u8 跟音频列表格式 m3u 很像,可以简单的认为 m3u8 就是包含多个 ts 文件的播放列表。播放器按顺序逐个播放,全部放完再请求一下 m3u8 文件,获得包含最新 ts 文件的播放列表继续播,周而复始。整个直播过程就是依靠一个不断更新的 m3u8 和一堆小的 ts 文件组成,m3u8 必须动态更新,ts 可以走 CDN。一个典型的 m3u8 文件格式如下:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
gear1/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
gear2/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
gear3/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
gear4/prog_index.m3u8

可以看到 HLS 协议本质还是一个个的 HTTP 请求 / 响应,所以适应性很好,不会受到防火墙影响。但它也有一个致命的弱点:延迟现象非常明显。如果每个 ts 按照 5 秒来切分,一个 m3u8 放 6 个 ts 索引,那么至少就会带来 30 秒的延迟。如果减少每个 ts 的长度,减少 m3u8 中的索引数,延时确实会减少,但会带来更频繁的缓冲,对服务端的请求压力也会成倍增加。所以只能根据实际情况找到一个折中的点。

对于支持 HLS 的浏览器来说,直接这样写就能播放了:

<video src=”./bipbopall.m3u8″ height=”300″ width=”400″  preload=”auto” autoplay=”autoplay” loop=”loop” webkit-playsinline=”true”></video>

注意:HLS 在 PC 端仅支持safari浏览器,类似chrome浏览器使用HTML5 video

标签无法播放 m3u8 格式,可直接采用网上一些比较成熟的方案,如:sewise-player、MediaElement、videojs-contrib-hls、jwplayer。

程序猿的生活:web前端全栈资料粉丝福利(面试题、视频、资料笔记,进阶路线)zhuanlan.zhihu.com/p/136454207

2. Real Time Messaging Protocol

Real Time Messaging Protocol(简称 RTMP)是 Macromedia 开发的一套视频直播协议,现在属于 Adobe。这套方案需要搭建专门的 RTMP 流媒体服务如 Adobe Media Server,并且在浏览器中只能使用 Flash 实现播放器。它的实时性非常好,延迟很小,但无法支持移动端 WEB 播放是它的硬伤。

虽然无法在iOS的H5页面播放,但是对于iOS原生应用是可以自己写解码去解析的, RTMP 延迟低、实时性较好。浏览器端,HTML5 video

标签无法播放 RTMP 协议的视频,可以通过 video.js 来实现。

<link href=“http://vjs.zencdn.net/5.8.8/video-js.css” rel=“stylesheet”>
<video id=“example_video_1″ class=“video-js vjs-default-skin” controls preload=“auto” width=“640” height=“264” loop=“loop” webkit-playsinline>
<source src=“rtmp://10.14.221.17:1935/rtmplive/home” type=‘rtmp/flv’>
</video>
<script src=“http://vjs.zencdn.net/5.8.8/video.js”></script>
<script>
videojs.options.flash.swf=‘video.swf’;
videojs(‘example_video_1′).ready(function() {
this.play();
});
</script>


3. 视频流协议HLS与RTMP对比


二、直播形式

目前直播展示形式,通常以YY直播、映客直播这种页面居多,可以看到其结构可以分成三层:

① 背景视频层

② 关注、评论模块

③ 点赞动画

而现行H5类似直播页面,实现技术难点不大,其可以通过实现方式分为:

① 底部视频背景使用video视频标签实现播放

② 关注、评论模块利用 WebScoket 来实时发送和接收新的消息通过DOM 和 CSS3 实现

③ 点赞利用 CSS3 动画

了解完直播形式之后,接下来整体了解直播流程。

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

三、直播整体流程

直播整体流程大致可分为:

视频采集端:可以是电脑上的音视频输入设备、或手机端的摄像头、或麦克风,目前以移动端手机视频为主。

直播流视频服务端:一台Nginx服务器,采集视频录制端传输的视频流(H264/ACC编码),由服务器端进行解析编码,推送RTMP/HLS格式视频流至视频播放端。

视频播放端:可以是电脑上的播放器(QuickTime Player、VLC),手机端的native播放器,还有就是 H5 的video标签等,目前还是以手机端的native播放器为主。

(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

四、H5 录制视频

对于H5视频录制,可以使用强大的 webRTC (Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的技术,缺点是只在 PC 的 Chrome 上支持较好,移动端支持不太理想。

使用 webRTC 录制视频基本流程

① 调用 window.navigator.webkitGetUserMedia()

获取用户的PC摄像头视频数据。

② 将获取到视频流数据转换成 window.webkitRTCPeerConnection

(一种视频流数据格式)。

③ 利用 WebScoket

将视频流数据传输到服务端。

注意:

虽然Google一直在推WebRTC,目前已有不少成型的产品出现,但是大部分移动端的浏览器还不支持 webRTC(最新iOS 10.0也不支持),所以真正的视频录制还是要靠客户端(iOS,Android)来实现,效果会好一些。


WebRTC支持度

WebRTC支持度

iOS原生应用调用摄像头录制视频流程

① 音视频的采集,利用AVCaptureSession和AVCaptureDevice可以采集到原始的音视频数据流。

② 对视频进行H264编码,对音频进行AAC编码,在iOS中分别有已经封装好的编码库(x264编码、faac编码、ffmpeg编码)来实现对音视频的编码。

③ 对编码后的音、视频数据进行组装封包。

④ 建立RTMP连接并上推到服务端。


五、搭建Nginx+Rtmp直播流服务

安装nginx、nginx-rtmp-module

① 先clone nginx项目到本地:

brew tap homebrew/nginx

② 执行安装nginx-rtmp-module

brew install nginx-full –with-rtmp-module

2. nginx.conf配置文件,配置RTMP、HLS

查找到nginx.conf配置文件(路径/usr/local/etc/nginx/nginx.conf),配置RTMP、HLS。

① 在http节点之前添加 rtmp 的配置内容:

② 在http中添加 hls 的配置

3. 重启nginx服务

重启nginx服务,浏览器中输入 http://localhost:8080,是否出现欢迎界面确定nginx重启成功。

nginx -s reload

六、直播流转换格式、编码推流

当服务器端接收到采集视频录制端传输过来的视频流时,需要对其进行解析编码,推送RTMP/HLS格式视频流至视频播放端。通常使用的常见编码库方案,如x264编码、faac编码、ffmpeg编码等。鉴于 FFmpeg 工具集合了多种音频、视频格式编码,我们可以优先选用FFmpeg进行转换格式、编码推流。

1.安装 FFmpeg 工具

brew install ffmpeg

2.推流MP4文件

视频文件地址:/Users/gao/Desktop/video/test.mp4

推流拉流地址:rtmp://localhost:1935/rtmplive/home,rtmp://localhost:1935/rtmplive/home

//RTMP 协议流
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://10.14.221.17:1935/rtmplive/home
//HLS 协议流
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test


注意:

当我们进行推流之后,可以安装VLC、ffplay(支持rtmp协议的视频播放器)本地拉流进行演示

3.FFmpeg推流命令

① 视频文件进行直播

ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://192.168.1.101:1935/hls/test
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test


② 推流摄像头+桌面+麦克风录制进行直播

ffmpeg -f avfoundation -framerate 30 -i “1:0″ \-f avfoundation -framerate 30 -video_size 640x480 -i “0” \-c:v libx264 -preset ultrafast \-filter_complex ‘overlay=main_w-overlay_w-10:main_h-overlay_h-10′ -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://192.168.1.101:1935/hls/test


更多命令,请参考:

FFmpeg处理RTMP流媒体的命令大全

FFmpeg常用推流命令

七、H5 直播视频播放

移动端iOS和 Android 都天然支持HLS协议,做好视频采集端、视频流推流服务之后,便可以直接在H5页面配置 video 标签播放直播视频。

<video controls preload=“auto” autoplay=“autoplay” loop=“loop” webkit-playsinline>
<source src=“http://10.14.221.8/hls/test.m3u8″ type=“application/vnd.apple.mpegurl” />
<p class=“warning”>Your browser does not support HTML5 video.</p>
</video>

八、总结

本文从视频采集上传,服务器处理视频推流,以及H5页面播放直播视频一整套流程,具体阐述了直播实现原理,实现过程中会遇到很多性能优化问题。

① H5 HLS 限制必须是H264+AAC编码。

② H5 HLS 播放卡顿问题,server 端可以做好分片策略,将 ts 文件放在 CDN 上,前端可尽量做到 DNS 缓存等。

③ H5 直播为了达到更好的实时互动,也可以采用RTMP协议,通过video.js 实现播放。

原文 https://zhuanlan.zhihu.com/p/146323842

HTML5 是最近十年来 Web 开发标准最巨大的飞跃,目前苹果、谷歌、微软世界三大移动互联网巨头都支持了 HTML5,HTML5 的发展给移动互联网应用带来了全新的变化。HTML5 的出现,给移动互联网带来了新的变革,为移动互联网中富媒体的应用提供了新的思路,并具有广阔的应用前景。所以HTML5适应了目前的移动互联网应用潮流。

Html5课程内容主要包括以下八个方面:Web页面制作基础,UI网站设计,编程基础技术,后端开发技术,移动互联网应用,特效开发高级实战,企业级应用开发以及网页游戏开发。

兄弟连教育根据公司和行业发展的实际需要设计教学内容,现行的课程体系包括四大阶段和特级课:“基础网页布局与响应式布局”、“前端核心技术:Javascript”、“HTML5新特性”、”MEAN(MongoDB+Express+Angular.js+Node.js)全栈框架开发”,”特级课:微信开发”。

第一阶段:基础网页布局与响应式布局

主要内容:

1、HTML CSS

2、PS操作,网页切图

3、基本网页布局

4、HTML5 语义标签

5、HTML5 智能表单

6、CSS3

7、Media Query响应式布局

--------------------------------------------------分割符---------------------------------------------------------------------------

详细内容包括:

WEB开发构件

系统及文件基本操作

基本的快捷键

描述 Windows Mac OS

编辑菜单 Alt + E Ctrl + F2 + F

文件菜单 Alt + F Ctrl + F2 + E

视图菜单 Alt + V Ctrl + F2 + V

全选文本 Ctrl + A Cmd + A

复制文本 Ctrl + C Cmd + C

查找文本 Ctrl + F Cmd + F

查找替换文本 Ctrl + H Cmd + F

新建文档 Ctrl + N Cmd + N

打开文件 Ctrl + O Cmd + O

打印选项 Ctrl + P Cmd + P

保存文件 Ctrl + S Cmd + S

粘贴文本 Ctrl + V Cmd + V

剪切文本 Ctrl + X Cmd + X

重做文本 Ctrl + Y Shift + Cmd + Z

撤销文本 Ctrl + Z Cmd + Z

文本编辑 描述 Windows Mac OS

光标移动操作

文本编辑操作

Web 浏览器操作

标签/窗口管理

打印当前网页

保存当前网页

地址栏操作

书签操作

屏幕截图

WEB开发构件

C/S结构

B/S结构

HTTP协议

传输数据方式:post,get

HTTP消息类型:2xx,4xx,5xx

URL组成

HTML介绍

HTML发展史

HTML5简介

新标准

引入原生多媒体支持

引入可编程内容

引入予以Web

http协议

HTTP消息类型:2xx,4xx,5xx

开发软件

nodepad++

sublime

dreamweaver

HTML介绍

HTML发展史

HTML5介绍

HTML基本语法与规范

标签

属性

固有属性

自定义属性

通用属性

元素

父元素(理解)

子元素

兄弟元素

后代元素

主体结构

长度单位

颜色单位

基础标签

文本类标签

文本格式化标签

<b> 定义粗体文本

<strong> 定义加重语气

<em> 定义着重文字

<i> 定义斜体字

<br> 换行标签

<sub> 定义下标字

<sup> 定义上标字

<ins> 定义插入字

<del> 定义删除字

<code> 定义计算机代码

<kbd> 定义键盘码

<samp> 定义计算机代码样本

<var> 定义变量

<pre> 定义预格式文本

<abbr> 定义缩写

<address> 定义地址

<bdo> 定义文字方向

<blockquote> 定义长的引用

<q> 定义短的引用语

<cite> 定义引用、引证

<dfn> 定义一个定义项目。

计算机输出类

语义,引用及标签定义

链接<a>

标题Hn

HTML框架iframe

段落P

列表标签

字符实体

空格 &nbsp; &#160;

< 小于号 &lt; &#60;

> 大于号 &gt; &#62;

& 和号 &amp; &#38;

" 引号 &quot; &#34;

' 撇号 &apos; (IE不支持) &#39;

¢ 分 &cent; &#162;

£ 镑 &pound; &#163;

¥ 日元 &yen; &#165;

 欧元 &euro; &#8364;

§ 小节 &sect; &#167;

? 版权 &copy; &#169;

? 注册商标 &reg; &#174;

? 商标 &trade; &#8482;

× 乘号 &times; &#215;

÷ 除号 &divide; &#247;

表格标签

colgroup

caption

table

thead

col

span

th

tbody

tr

td

colspan

rowspan

tfoot

头部标签

<!doctype html>

<head> 定义了文档的信息

<title> 定义了文档的标题

<base> 定义了页面链接标签的默认链接地址

<link> 定义了一个文档和外部资源之间的关系

<meta> 定义了HTML文档中的元数据

charsetNew character_set 定义文档的字符编码。

content text 定义与 http-equiv 或 name 属性相关的元信息。

http-equiv content-type

default-style

refresh 把 content 属性关联到 HTTP 头部。

name application-name

author

description

generator

keywords 把 content 属

<script> 定义了客户端的脚本文件

<style> 定义了HTML文档的样式文件

多媒体标签

1. img

1.1 导入一张图片

1.2 属性

src 图片地址

width 设置图片宽

height 设置图片高

border 设置图片边框

alt 不显示图片时的提示信息

title 鼠标放上时显示的图片描述信息

usemap map标签的name #name

2. map

2.1 给图片划分区域 配合area

2.2 属性

name 给map指定一个name

3. area

3.1 在map的配合下给图片划分指定形状的区域

3.2 属性

shape 划分的形状

coords 形状的坐标·

href 要链接的地址

target 新网页打开方式

4. audio

4.1 导入音频的标签 HTML5新标签

4.2 属性

src 音频源的路径 必备

controls 显示控制按钮 必备

autoplay 自动播放

loop 是否循环

preload 预加载 不能跟autoplay属性混用

4.3 audio标签内部加文字,如果浏览器支持这个标签则文字不会显示 ,如果不支持就会显示

4.4 audio标签的两个格式

简单格式

<audio src="../video/music.mp3" controls>您的破浏览器不支持,请升级浏览器

</audio>

完整格式 视频源单独放到source标签中

<audio controls>

您的破浏览器不支持,请升级浏览器

<source src='../video/music.mp3' type='audio/mp3'>

<source src='../video/music.wav' type='audio/wav'>

</audio>

5. video

5.1 导入视频的标签 HTML5新标签

5.2 属性

src 路径

controls 显示控制按钮

autoplay 自动播放 属性值 auto none

loop 是否循环播放

width 视频的宽

height 视频的高

poster 缩略图地址

6. source

6.1 配合video标签 导入不同格式的视频 HTML5新标签

6.2 属性

src 视频地址

7. canvas 用于画图的标签

8. embed

8.1 导入多媒体文件 音频 视频 HTML5新标签

8.2 属性

src 多媒体文件地址

width

height

HTML表单及智能表单

1. 表单相关标签

1.1 form 客户端跟服务器端进行交互,常用语 登录 注册 调查问卷...

① 定义表单 所有的表单控件放在form中

② 属性

action 表单要提交的地址

method 提交方法 get(默认)提交的值会显示在url上 不安全而且传递的值数量有限 post 提交的内容不会显示 在url上,传递的值范围也比get方式的大,相对安全

target 打开新网页的方式 _self _blank _top _parent

enctype="multipart/form-data" 传文件必须加上

1.2 input

① 定义输入框密码框单选框复选框.....

② 属性

type input的类型

name input的名字

value input的值

checked 默认radio和checkbox

size input框的大小 type:text password textarea

maxlength input最大输入长度 type:text password

1.3 button

① 以标签形式定义按钮

② 属性

type 设置submit(默认值), 按钮具有提交功能 设置为button,普通按钮 reset 重置

1.4 textarea

① 文本域 双标签

② 属性

name 指定名字

rows 指定行数 决定文本域高度

cols 指定列数 决定文本域宽度

1.5 select

① 选择框 下拉框 单选框

② 属性

name 指定名字

multiple 设置为多选

1.6 option

① 定义select中的的选项

② 属性

value 指定真正的值

selected 默认值

1.7 optgroup

① 给option分组 不常用

1.8 fieldset 套在form的外部 添加边框 不常用

1.9 legend 在边框定义form的标题 不常用

1.20 input select textarea button 称作表单控件元素

1.21 通用属性 所有的表单控件元素都具有属性 disabled enabled(默认)

2. form表单input中type类型

text 文本框 value设置默认值

password 密码框 value设置默认值

radio 单选框 所有的redio name相同才能单选 value设置真正提交的值 默认的按钮可以设置checked

checkbox 复选框 value设置真正提交的值 设置默认添加checked属性

image 提交按钮,按钮样式来自图片 配合src属性

submit 提交按钮, value指定按钮上的文字

reset 重置按钮 value指定按钮上的文字

button button按钮 value指定按钮上的文字

file 上传框

hidden 隐藏域 name value

3. label标签

用来嵌套input, 点击label嵌套的任何元素都可以激活label内的input

属性 for 指定 input的id

语义标签

<header> 定义了文档的头部区域

<nav> 定义运行中的进度(进程)。

<article> 定义页面独立的内容区域。

<figure> 规定独立的流内容(图像、图表、照片、代码等等)。

<figcaption> 定义 <figure> 元素的标题

<aside> 定义页面的侧边栏内容。

<section> 定义文档中的节(section、区段)。

<footer> 定义 section 或 document 的页脚。

<address> 定义文档作者或拥有者的联系信息

<bdi> 允许您设置一段文本,使其脱离其父元素的文本方向设置。

<command> 定义命令按钮,比如单选按钮、复选框或按钮

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

<summary> 标签包含 details 元素的标题

<dialog> 定义对话框,比如提示框

dt

dd

<mark> 定义带有记号的文本。

<meter> 定义度量衡。仅用于已知最大和最小值的度量。

<progress> 定义任何类型的任务的进度。

<ruby> 定义 ruby 注释(中文注音或字符)。

<rt> 定义字符(中文注音或字符)的解释或发音。

<rp> 在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。

<time> 定义日期或时间。

<wbr> 规定在文本中的何处适合添加换行符。

CSS基础与规范知识

1. CSS的定义

Cascading Style Sheets 层叠样式表(级联样式表)

2. CSS的作用

定义网页外观,如字体、背景、颜色等

3. CSS特点

① 精确的定位 准确的控制页面的任何元素

② 精细的控制 可以做到像素级别的调整

③ 样式与内容的分离 便于维护,便于重用

4. 发展历程

① CSS1 作为一项W3C推荐,CSS1发布于 1996年12月17 日。1999 年1月11日,此推荐被重新修订。

② CSS2 作为一项 W3C 推荐,CSS2发布于 1999年1月11日。CSS2添加了对媒介(打印机和听觉设备)和可下载字体的支持。

③ CSS3 CSS3 计划将 CSS 划分为更小的模块。2001年至今 HTML5+CSS3

CSS选择器

HTML tag

Class

包含选择器:div span a

ID

组合选择 div,span,a

任意选择器(通配符选择器)*

关系选择器

包含选择符

子选择符

相邻选择符

兄弟选择符

属性选择器

伪类选择器

伪对象选择器

CSS3属性

尺寸

边框

背景

内补白

外补白

布局

定位

字体

文本

列表

表格

用户界面

多栏

2D变换

过渡

动画

Photoshop网页设计基础

I设计介绍

photoshop安装与设置

位图与矢量图

网页常用图片格式

图像大小与分辨率

选区创建和编辑

选区的创建

选区工具M

套锁工具L

快速选区工具W和魔术棒W

钢笔选区

创建矢量路径

锚点操作

钢笔工具

形状转选区ctrl+Enter

选区的编辑

选区的存储

应用辅助功能

使用标尺ctrl+R

设置网格:视图>显示>网格ctrl+'

应用变换功能

选择>可变换选区ctrl+T

缩放

旋转

扭曲

透视

变形

水平翻转

垂直翻转

应用内容识别比例功能

操控变形

裁剪图像

裁剪工具

基础绘画

了解绘画和绘画修饰工具

画笔

颜色替换

涂抹工具

绘画的基本技巧

绘制直线,按住shift

绘制曲线

定义颜色

使用拾色器

渐变工具

填充前景色:alt+delete

填充背景色:control+delete

为图像填充颜色shift+f5

图形、路径计算

网页布局规范

Web设计规范

banner设计

网页栅格系统

网页构成

命名规范

导航设计

版式设计

网页配色

Photoshop网页切图

网页切图及切图常见问题

精灵图片技术

专题页设计

W3C盒子模型

div+css网页布局

HTML5兼容性处理

使用 HTML5布局元素的布局

Media Query响应式布局

原生响应式布局

媒体查询+尺寸属性:百分比,max-width,max-height,min-width,min-height

--------------------------------------------------分割符---------------------------------------------------------------------------

可实现效果

1、表格制作个人简历

2、使用表单制作注册页面

3、div+css基本网页布局

4、PS网页设计

5、精灵图片技术

6、语义化标签布局

7、智能表单验证

8、多媒体播放

9、css3:圆角边框、边框九宫格特效、多图背景、动画、渐变和倒影、多列属性布局、服务器端字体

10、响应式网页实现

--------------------------------------------------分割符---------------------------------------------------------------------------

第二阶段:前端核心技术:Javascript

主要内容:

1、Javascript

2、Ajax

3、JQuery

4、JS高级特效

--------------------------------------------------分割符---------------------------------------------------------------------------

详细内容

JavaScript 脚本语言

什么是JavaScript?

1. JavaScript 是一种客户端脚本语言(脚本语言是一种轻量级的编程语言)。

2. JavaScript 通常被直接嵌入 HTML 页面。

3. JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。

特点:

1. 弱类型

2. 基于对象。(因为面向对象需要具有封装、继承、多态的特征)

JavaScript语言中包含三个核心:ECMAScript基本语法、DOM、BOM

JavaScript是基于对象的脚本语言。

在HTML中如何使用JavaScript

1. 使用<script></script>标签:

属性:

charset(可选)字符集设置、

defer(可选执行顺序)值:defer、

language(已废除)、

src(可选)使用外部的js脚本文件

type(必选)类型:值:text/javascript

<script type="text/javascript">

<!--

javaScript语言

//-->

</script>

2. 在html标签的事件中,超级链接里。

<button onclick="javaScript语言"></button>

<a href="javascript:alert('aa');alert('bb')">点击</a>

3. 外部导入方式(推荐):

<script type="text/javascript" src="my.js"></script>

JavaScript的语法:

1.区分大小写:变量名、函数名、运算符以及其他一切东西都是区分大小写的。

2.他和php一样属于弱类型语言。

3.每行结尾的分号可有可无。(js中的每条语句之间的分割符可以是回车换行也可以是";"分号(推荐))

4.脚本注释:

// 单行注释

/* 多行注释 */

5.括号表示代码块:{}

6.变量的定义:使用var关键字来声明。

变量的命名规范是:字母数字,$符和下划线构成,但是不可以以数字开始。

变量名不可以使用关键字.

typeof函数获取一个变量的类型:

7.JavaScript的数据类型:

undefined 类型

null 类型(对象)

boolean 类型

number 类型

object引用类型

8. 类型转换:

JavaScript的运算符

1. 一元运算符

delete:用于删除对象中属性的 如:delete o.name; //删除o对象中的name属性

void: void 运算符对任何值返回 undefined。没有返回值的函数真正返回的都是 undefined。

++ --

一元加法和一元减法

2. 位运算符

位运算 NOT ~

位运算 AND &

位运算 OR |

位运算 XOR ^ (不同为1,相同则为0)

左移运算 <<

右移运算 >>

3. 逻辑运算符

逻辑 NOT ! 运算符 非

逻辑 AND && 运算符 与

逻辑 OR || 运算符 或

4. 乘性运算符:*( 乘) /(除) %(取模)求余

5. 加性运算符: + -

*其中+号具有两重意思:字串连接和数值求和。

就是加号”+“两侧都是数值则求和,否则做字串连接

6. 关系运算符 > >=< <=

7. 等性运算符=====!=!==

8. 条件运算符 ? : (三元运算符)

9. 赋值运算符=+=-=*=/=%=>>=<<=

10 逗号运算符

用逗号运算符可以在一条语句中执行多个运算。

var iNum1=1, iNum2=2, iNum3=3;

javaScript(语句流程控制)

1. 判断语句 if语句; if... else ... if ... else if ... else...

2. 多分支语句: switch(){。 case :。。。。}

switch (i) {

case 20: alert("20");

break;

case 30: alert("30");

break;

case 40: alert("40");

break;

default: alert("other");

}

3. 循环语句(迭代语句)

for:

while

do...while

*for-in 语句: 语句是严格的迭代语句,用于枚举对象的属性。

var a=[10,20,30,40,50];

//迭代的是数组的下标。

for(i in a){

document.write(a[i]);

}

//输出: 1020304050

4. break 和 continue 语句对循环中的代码执行提供了更严格的控制。

5. *with 语句用于设置代码在特定对象中的作用域。

//扩充知识:

1. 在网页文档中获取一个节点对象(HTML标签)

document.getElementById("mid"); //获取标签id属性值为mid的节点对象

2. 定时相关函数:

setTimeout(vCode, iMilliSeconds [, sLanguage]) -- 单次定时执行指定函数

clearTimeout(iTimeoutID) -- 取消上面的单次定时

setInterval(vCode, iMilliSeconds [, sLanguage]) --无限次定时执行指定函数

clearInterval(iIntervalID)-- 取消上面的多次定时

一、JavaScript的函数:

标准格式: function 函数名([参数列表..]){

函数体。。。

[return 返回值;]

}

JavaScript三种定义函数方法:

*第一种是使用function语句定义函数

如上面格式

第二种是使用Function()构造函数来定义函数(不常用)

var 函数名=new Function(“参数1”,”参数2”,”参数3”……”函数体”);

如:

var 函数名=new Function(”x”,”y”,”var z=x+y;return z;”);

*第三种是在表达式中定义函数

var 函数名=function(参数1,参数2,…){函数体};

//例如:

//定义

var add=function(a,b){

return a+b;

}

//调用函数

document.write(add(50,20));

arguments 对象

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0]

也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,

第二个参数位于位置 1,依此类推)。

关于变量和参数问题:

函数外面定义的变量是全局变量,函数内可以直接使用。

在函数内部没有使用var定义的=变量则为全局变量,

*在函数内使用var关键字定义的变量是局部变量,即出了函数外边无法获取。

js函数定义的参数没有默认值(目前只有最新的火狐浏览器支持)

二、系统中常用的内置函数:

escape() //字串编码

unescape() //字串反编码

*eval() //将参数字符串作为脚本代码来执行。

*isNaN() // is not a number (不是一个数值)

*parseInt()

*parseFloat()

三、JavaScript的对象的定义和使用

1.使用构造函数创建内置对象

var myObject=new Object();

myObject.name=“lijie”;

myObject.age=20;

myObject.say=function(){...}

2.直接创建自定义对象

var 对象名={属性名1:属性值,属性名2:属性值2,…….}

*3.使用自定义构造函数创建对象

function pen(name,color,price){

//对象的name属性

this.name=name;

//对象的color属性

this.color=color;

//对象的piece属性

this.price=price;

//对象的say方法

this.say=function(){};

}

var pen=new pen(“铅笔”,”红色”,20);

pen.say();

一、for…in语句

----------------------------------------

for(var i in window){

document.write(i+”----”+window[i]);

}

这种语句可以遍历对象中的所有属性或数组中的所有元素。

二、with语句

--------------------------------------------

如果使用with语句,就可以简化对象属性调用的层次。

document.write(‘test1’);

document.write(‘test2’);

document.write(‘test3’);

可以使用with来简化:

with(document){

write(‘test1’);

write(‘test2’);

write(‘test3’);

}

三、JavaScript内置对象

* Array(数组)

var a=new Array(); //创建一个空数组

a=new Array(10); //创建一个数组单元为10个的数组。

a=new Array(10,20,30);//创建一个指定数组单元的数组。

a=['a','b','c','d']; //快捷定义数组

常用属性:

length--获取长度。

常用方法:

toString() 把数组转换为字符串,并返回结果。

sort() 对数组的元素进行排序

join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

pop() 删除并返回数组的最后一个元素

push() 向数组的末尾添加一个或更多元素,并返回新的长度。

* Boolean 布尔值包装类对象

方法:toSource() 返回该对象的源代码。

toString() 把逻辑值转换为字符串,并返回结果。

valueOf() 返回 Boolean 对象的原始值。

* Date

var dd=new Date();

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。

getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。

getMonth() 从 Date 对象返回月份 (0 ~ 11)。

getFullYear() 从 Date 对象以四位数字返回年份。

getYear() 请使用 getFullYear() 方法代替。

getHours() 返回 Date 对象的小时 (0 ~ 23)。

getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。

getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。

getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。

getTime() 返回 1970 年 1 月 1 日至今的毫秒数。

同上还有很多set方法用来设置。

* Math 对象用于执行数学任务。方法是静态的。

abs(x) 返回数的绝对值。

ceil(x) 对数进行上舍入。

floor(x) 对数进行下舍入。

random() 返回 0 ~ 1 之间的随机数。

round(x) 把数四舍五入为最接近的整数。

max(x,y) 返回 x 和 y 中的最高值。

min(x,y) 返回 x 和 y 中的最低值。

* Number

toString();

toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。

* String 子串处理对象

anchor() 创建 HTML 锚。

*charAt() 返回在指定位置的字符。

charCodeAt()返回在指定的位置的字符的 Unicode 编码。

*indexOf() 检索字符串。

*lastIndexOf() 从后向前搜索字符串。

match() 找到一个或多个正在表达式的匹配。

*replace() 替换与正则表达式匹配的子串。

search() 检索与正则表达式相匹配的值。

slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。

split() 把字符串分割为字符串数组。

substr() 从起始索引号提取字符串中指定数目的字符。

*substring() 提取字符串中两个指定的索引号之间的字符。

toLocaleLowerCase() 把字符串转换为小写。

toLocaleUpperCase() 把字符串转换为大写。

*toLowerCase() 把字符串转换为小写。

*toUpperCase() 把字符串转换为大写。

* RegExp

exec()正则匹配

test()

match()

* Global

escape(string) -- 可对字符串进行编码

unescape(string) -- 函数可对通过 escape() 编码的字符串进行解码。

encodeURI(URIstring) -- 函数可把字符串作为 URI 进行编码。

decodeURI(URIstring) -- 函数可对 encodeURI() 函数编码过的 URI 进行解码。

*eval(string) -- 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

getClass(javaobj) -- 函数可返回一个 JavaObject 的 JavaClass。

*isNaN(x) -- 函数用于检查其参数是否是非数字值。

Number(object) --函数把对象的值转换为数字。

*parseFloat(string) -- 函数可解析一个字符串,并返回一个浮点数。

*parseInt(string, radix)

事件处理

一、事件源: 任何一个HTML元素(节点) body, div , button p, a, h1 .......

二、事件: 你的操作

鼠标:

* click 单击

dblclick 双击

contextmenu (在body) 文本菜单(鼠标右键使用)

要想屏蔽鼠标右键使用return false

window.document.oncontextmenu=function(ent){...}

* mouseover 放上(移入)

* mouseout 离开(移出)

mousedown 按下

mouseup 抬起

* mousemove 移动

键盘:

keypress 键盘事件

keydown 按下

文档:(主要使用在body标签中)

* load 加载

unload 关闭(为了兼容可使用下面函数)

beforeunload 关闭之前

表单:

* focus 焦点

* blur 失去焦点

* submit 提交事件

* change 改变(如下拉框选择事件)

其它:

* scroll 滚动事件(常用延迟加载、瀑布流技术)

window.onscroll=function(){

document.documentElement.scrollTop;//获取滚动条的上距离

document.documentElement.scrollLeft;//滚动条的左距离

}

selectd 事件

。。。。

三、事件处理程序

使用一个匿名或回调函数

有三种方法加事件

第一种:

格式: <tag on事件="事件处理程序" />

*第二种:

<script>

对象.on事件=事件处理程序

</script>

第三种:(火狐不兼容)

<script for="事件源ID" event="on事件">事件处理程序</script>

事件对象:

属性:

1. srcElement

2. keyCode 键盘值

事件 event window.event

1. srcElement 代表事件源对象

2. keyCode 事件发生时的键盘码 keypress , keydown keyup

3. clientX, clientY 坐标位置

4. screenX, screenY

5. returnValue

6. cancelBubble;

//为页面添加鼠标右点击事件

window.document.oncontextmenu=function(ent){

//兼容IE和火狐浏览器兼容

var event=ent || window.event;

//获取事件坐标位置

var x=event.clientX;

var y=event.clientY;

...

}

一、BOM

1. window对象

常用的属性:

*document :对 Document 对象的只读引用

*history :对 History 对象的只读引用。

*location:用于窗口或框架的 Location 对象

Navigator: 对 Navigator 对象的只读引用

*parent: 返回父窗口。

length: 设置或返回窗口中的框架数量。

Screen: 对 Screen 对象的只读引用

status: 设置窗口状态栏的文本。

top: 返回最顶层的先辈窗口。

常用方法:

alert() 显示带有一段消息和一个确认按钮的警告框。

confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。

prompt() 显示可提示用户输入的对话框。

close() 关闭浏览器窗口。

open() 打开一个新的浏览器窗口或查找一个已命名的窗口。

scrollTo() 把内容滚动到指定的坐标。

setTimeout() 在指定的毫秒数后调用函数或计算表达式。

clearTimeout() 取消由 setTimeout() 方法设置的 timeout。

setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。

clearInterval() 取消由 setInterval() 设置的 timeout。

2. Navigator 对象

Navigator 对象包含的属性描述了正在使用的浏览器。可以使用这些属性进行平台专用的配置。

常用属性:

with(document) {

write ("你的浏览器信息:<ul>");

write ("<li>代码:"+navigator.appCodeName+"</li>");

write ("<li>名称:"+navigator.appName+"</li>");

write ("<li>版本:"+navigator.appVersion+"</li>");

write ("<li>语言:"+navigator.language+"</li>");

write ("<li>编译平台:"+navigator.platform+"</li>");

write ("<li>用户表头:"+navigator.userAgent+"</li>");

write ("</ul>");

}

3. Screen 对象包含有关客户端显示屏幕的信息。

常用属性:

document.write( "屏幕宽度:"+screen.width+"px<br />" );

document.write( "屏幕高度:"+screen.height+"px<br />" );

document.write( "屏幕可用宽度:"+screen.availWidth+"px<br />" );

document.write( "屏幕可用高度:"+screen.availHeight+"px" );

参考了解其他属性信息获取方式

网页可见区域宽: document.body.clientWidth

网页可见区域高: document.body.clientHeight

网页可见区域宽: document.body.offsetWidth (包括边线的宽)

网页可见区域高: document.body.offsetHeight (包括边线的高)

网页正文全文宽: document.body.scrollWidth

网页正文全文高: document.body.scrollHeight

网页被卷去的高: document.body.scrollTop

网页被卷去的左: document.body.scrollLeft

网页正文部分上: window.screenTop

网页正文部分左: window.screenLeft

屏幕分辨率的高: window.screen.height

屏幕分辨率的宽: window.screen.width

屏幕可用工作区高度: window.screen.availHeight

屏幕可用工作区宽度: window.screen.availWidth

4. History 对象包含用户(在浏览器窗口中)访问过的 URL。

5. Location 对象包含有关当前 URL 的信息。

讲解DOM

一、基本概念

HTML DOM 定义了访问和操作HTML文档的标准方法。

HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。

DOM 被分为不同的部分:

1.Core DOM

定义了一套标准的针对任何结构化文档的对象

2.XML DOM

定义了一套标准的针对 XML 文档的对象

3.HTML DOM

定义了一套标准的针对 HTML 文档的对象。

节点:根据 DOM,HTML 文档中的每个成分都是一个节点。

DOM 是这样规定的:

>整个文档是一个文档节点

>每个 HTML 标签是一个元素节点

>包含在 HTML 元素中的文本是文本节点

>每一个 HTML 属性是一个属性节点

>注释属于注释节点

节点彼此间都存在关系。

>除文档节点之外的每个节点都有父节点。

>大部分元素节点都有子节点。

>当节点分享同一个父节点时,它们就是同辈(同级节点)。

>节点也可以拥有后代,后代指某个节点的所有子节点,或者这些子节点的子节点

>节点也可以拥有先辈。先辈是某个节点的父节点,或者父节点的父节点

查找并访问节点

你可通过若干种方法来查找您希望操作的元素:

>通过使用 getElementById() 和 getElementsByTagName() 方法

>通过使用一个元素节点的 parentNode、firstChild 以及 lastChild childNodes属性

节点信息

每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

nodeName(节点名称)

nodeValue(节点值)

nodeType(节点类型)

nodeName 属性含有某个节点的名称。

元素节点的 nodeName 是标签名称

属性节点的 nodeName 是属性名称

文本节点的 nodeName 永远是 #text

文档节点的 nodeName 永远是 #document

二、HTML DOM 对象参考

Document: 代表整个 HTML 文档,可被用来访问页面中的所有元素

常用集合属性:forms

Anchor : 代表 <a> 元素

Area : 代表图像映射中的 <area> 元素

Base : 代表 <base> 元素

Body : 代表 <body> 元素

Button : 代表 <button> 元素

Event : 代表某个事件的状态

Form : 代表 <form> 元素

Frame : 代表 <frame> 元素

Frameset: 代表 <frameset> 元素

Iframe : 代表 <iframe> 元素

Image : 代表 <img> 元素

Input button : 代表 HTML 表单中的一个按钮

Input checkbox : 代表 HTML 表单中的复选框

Input file : 代表 HTML 表单中的文件上传

Input hidden : 代表 HTML 表单中的隐藏域

Input password : 代表 HTML 表单中的密码域

Input radio : 代表 HTML 表单中的单选按钮

Input reset : 代表 HTML 表单中的重置按钮

Input submit : 代表 HTML 表单中的确认按钮

Input text : 代表 HTML 表单中的文本输入域(文本框)

Link : 代表 <link> 元素

Meta : 代表 <meta> 元素

Object : 代表 <Object> 元素

Option : 代表 <option> 元素

Select : 代表 HTML 表单中的选择列表

Style : 代表单独的样式声明

Table : 代表 <table> 元素

TableData : 代表 <td> 元素

TableRow : 代表 <tr> 元素

Textarea : 代表 <textarea> 元素

AJAX

var xmlhttp;

1. 创建请求对象

if(window.XMLHttpRequest){

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}else{

// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

2. 设置回调函数(监听)

xmlhttp.onreadystatechange=函数名;

xmlhttp.onreadystatechange=function(){

函数体。。。

}

3. 初始化:

xmlhttp.open("GET",url,true);

4. 发送:

xmlhttp.send();

其中:xmlhttp请求对象:

**属性:

*readyState //请求状态:0,1,2,3,4

*responseText//响应内容

responseXML //xml响应对象

*status //浏览器响应状态:200正常, 404 请求地址不存在 ,,

statusText //状态内容

*onreadystatechange //回调函数属性

方法:

abort() //取消当前响应,关闭连接并且结束任何未决的网络活动。

getAllResponseHeaders() //把 HTTP 响应头部作为未解析的字符串返回。

getResponseHeader() //返回指定的 HTTP 响应头部的值

*open() //初始化 HTTP 请求参数

*send() //发送 HTTP 请求,使用传递给 open() 方法的参数

*setRequestHeader() //向一个打开但未发送的请求设置或添加一个 HTTP 请求。

自定义Ajax实例使用

jQuery的基本语法

对象的访问

each()

size()

length

selector

context

get()

index()

jQuery 属性操作

属性

attr

removeAttr

prop

removeProp

CSS

addClass

removeClass

toggleClass

HTML代码/文本/值

html()

text()

val()

基础知识

JQuery简介

JQuery 安装

JQuery语法

jQuery CSS 操作

css:css()

位置

offset()

position()

scrollTop()

scrollLeft()

尺寸

height()

width()

innerHeight()

innerWidth()

outerHeifht()

outerWIdth()

jQuery 选择器

基本

层级

伪类

内容

可见性

属性

子元素

表单

表单对象属性

jQuery 筛选

过滤

查找

串联

jQuery HTML文档处理

内部插入

外部插入

包裹

替换

删除

复制

jQuery 事件

页面载入

事件处理

事件委派

事件切换

事件

jQuery效果

jQuery 隐藏显示

jQuery 淡入淡出

jQuery 滑动

jQuery 动画

jQuery停止动画

jQuery Callback

Jquery chaining

jQuery Ajax

jQuery Ajax简介

jQuery load()方法

jQuery get()/post()方法

jQuery 其他

jQuery noConflict()方法

jQuery JSONP

数组和对象操作

函数操作

测试操作

字符串操作

浏览器及特性检测

URL

数据缓存

队列机制

jQuery 插件

插件使用

jQuery 自定义插件方法

--------------------------------------------------分割符---------------------------------------------------------------------------

可实现效果

1、刷新改背景

2、获取和设置时间

3、从URL中获取文件名

4、简单的计算器

5、滚动类效果

6、自定义菜单

7、下拉菜单

8、手风琴菜单

9、弹出层

10、瀑布流布局,滚动事件

11、选项卡开发

12、幻灯播放

13、拖拽效果

14、淘宝商品的放大效果

15、登录注册验证

16、首页多特效合成

17、后台效果制作

18、瀑布流

19、点名器

20、抽奖

--------------------------------------------------分割符---------------------------------------------------------------------------

第三个阶段:HTML5新特性

主要内容

1、视频/音频

2、地理定位

3、Web 存储

4、应用缓存

5、拖放

6、文件读取

7、Web Workers

8、画布 SVG

9、CSS预处理

10、BootStrap 响应式框架

--------------------------------------------------分割符---------------------------------------------------------------------------

详细内容:

HTML5 多媒体

audio/video API操作

地理位置信息获取

geolocation API操作

地球间两点距离计算方法

地图API调用

HTML5离线缓存

cache manifest规范及格式

HTML5本地存储

localStorage - 没有时间限制的数据存储

sessionStorage - 针对一个 session 的数据存储

拖放(Drag 和 drop)

FileReader

浏览器多线程

画布 SVG 动画实现

SASS使用

SASS的基本语法

Bootstrap配置

使用Bootstrap布局页面

Bootstrap全局样式

栅格系统原理

Bootstrap各种常用组件

Bootstrap常用插件应用

--------------------------------------------------分割符---------------------------------------------------------------------------

可实现效果:

制作属于自己的音/视频播放器

查看经纬度

获取公交路线

显示路线导航

离线应用

多线程优化用户体验

拖放歌曲列表

图片拖放显示

拖放照片墙

绘画五角星

绘制时钟

匀速、变速、圆周、曲线等物理运动

碰撞原理与实现

九大行星围绕运动

鼠标交互特效

使用SASS制作动态CSS程序

使用UI框架实现响应式布局

--------------------------------------------------分割符---------------------------------------------------------------------------

第四阶段:MEAN(MongoDB+Express+Angular.js+Node.js)全栈框架开发

主要内容:

1、Node.js

2、MongoDB

3、Express

4、AngularJS

5、WEB APP制作

--------------------------------------------------分割符---------------------------------------------------------------------------

详细内容:

NodeJS与浏览器js的区别

NodeJS基础

NodeJS安装

模块

require

exports

module

NPM

代码的组织和部署

模块路径解析规则

包(package)

index.js

package.json

文件操作

Buffer(数据块)

Stream(数据流)

File System(文件系统)

Path(路径)

网络操作

HTTP

HTTPS

URL

Query String

Zlib

Net

NPM/Bower依赖管理工具

Zepto.js库

NodeJS文件操作

使用NodeJS搭建Web服务器

使用NodeJS搭建Socket服务器

数据仓库:

SQL:结构化查询语言(Structured Query Language)

常见的SQL:MySQL Oracle MariaDB PostgreSQL等SQL

常见的NoSQL:MongoDB Redis Memcache

MongoDB:

C++语言编写,基于分布式文件存储的开源数据库系统

BSON:类JSON对象(Binary JSON,二进制形式的存储格式)

{"username":"zhangsan","age":20,"sex":"男"}

由"键值对"组成

结构划分:

数据库(database) db

集合(collection)

文档(document)

字段(field)

安装MongoDB

1.针对库的操作

查看所有库

创建并进入数据库

查看当前库

删除数据库

2.集合操作

查看当前集合

3.针对文档操作

插入数据

修改数据:

删除

查询数据

Express框架快速构建WEB应用程序

Express简介+MVC简介

Express路由模块

模板引擎 jade ejs handlebars

nosql数据库MogoDB管理数据

使用mongoose操作MongoDB

Angular JS介绍

Angular JS 表达式

Angular JS简介

Angular JS指令

Angular JS模型

Angular JS Scope(作用域)

Angular JS 控制器

Angular JS 过滤器

Angular JS Http

Angular JS 表格

Angular JS SQL

Angular JS HTML DOM

Angular JS 事件

Angular JS模块

Angular JS表单

Angular JS输入验证

Angular JS Bootstrap应用

Angular JS 包含

Angular JS 应用

App介绍

WebApp/NativeApp/HybirdApp简介

Cordova线下打包App

移动应用开发平台云端打包App

--------------------------------------------------分割符---------------------------------------------------------------------------

可实现以下效果

使用Nodejs搭建

应用程序的服务端

使用Socket长连接实时网络通信技术制作聊天室

带有前后台的简单博客系统

使用AngularJS打造单页面购物车应用

打包手机端应用

--------------------------------------------------分割符---------------------------------------------------------------------------

特级课:微信开发

主要内容:微信开发

1、微信接口开发

2、微信应用开发

3、微信UI框架

4、原型设计

5、面试题讲解

--------------------------------------------------分割符---------------------------------------------------------------------------

详细内容

微信JSSDK使用

分享接口

图像接口

音频接口

智能接口

设备信息

地理位置

界面操作

WEUI框架

原型设计

用户体验设计

面试题

--------------------------------------------------分割符---------------------------------------------------------------------------

可实现但不限于以下效果

微信测智商

测测上辈子是谁

测运势

留言板

照片分享发送

语音识别

位置显示

WEUI框架制作微信原生样式界面

小编已尽力排版,如小伙伴们觉得依然较乱,请留言