diff --git a/08-HTML5和CSS3/07-CSS3属性详解:Web字体.md b/08-HTML5和CSS3/07-CSS3属性详解:Web字体.md index 239e4c0..3141fc0 100644 --- a/08-HTML5和CSS3/07-CSS3属性详解:Web字体.md +++ b/08-HTML5和CSS3/07-CSS3属性详解:Web字体.md @@ -4,7 +4,7 @@ ## 前言 -开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体。从此,把特殊字体处理成图片的方式便成为了过去。 +开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体。从此,把特殊字体处理成图片的方式便成为了过去。 支持程度比较好,甚至 IE 低版本的浏览器也能支持。 @@ -156,13 +156,13 @@ woff字体是Web字体中最佳格式,他是一个开放的TrueType/OpenType - [2018-02-20-WebFont举例.zip](http://download.csdn.net/download/smyhvae/10253565) -## 字体图标 +## 字体图标(阿里的 iconfont 网站举例) 我们其实可以把图片制作成字体。常见的做法是:把网页中一些小的图标,借助工具生成一个字体包,然后就可以像使用文字一样使用图标了。这样做的优点是: -- 将所有图标打包成字体库,减少请求; +- 将所有图标打包成字体库,减少请求; -- 具有矢量性,可保证清晰度; +- 具有矢量性,可保证清晰度; - 使用灵活,便于维护。 @@ -315,6 +315,7 @@ SVG素材: + ## 360浏览器网站案例 暂略。 @@ -326,11 +327,47 @@ SVG素材: - 相关说明:http://www.dowebok.com/77.html - - - - - +## 使用 Bootstrap 网站的图标字体 + +打开如下网站:。 + +20180223_2100.png + +如上图所示,下载字体后,进行解压: + +20180223_2105.png + +使用步骤如下: + +(1)如图只是想要字体的话,可以把`css`和`font`这两个文件夹拷贝到项目里。 + +(2)在html文档中的 标签里,引入 font-awesome.min.css 文件: + +```html + +``` + +(3)想在哪个标签里用这个图标,直接在这个标签里加className就行(className都在[网站](http://www.bootcss.com/p/font-awesome/)上列出来了)。 + + +完整版代码如下: + +```html + + + + + Title + + + + + 播放 + + +``` diff --git a/08-HTML5和CSS3/08-HTML5举例:简单的视频播放器.md b/08-HTML5和CSS3/08-HTML5举例:简单的视频播放器.md new file mode 100644 index 0000000..5ca25ac --- /dev/null +++ b/08-HTML5和CSS3/08-HTML5举例:简单的视频播放器.md @@ -0,0 +1,266 @@ + + +我们采用 Bootstrap 网站的图标字体,作为播放器的按钮图标。 + +index.html的代码如下: + +```html + + + + + + + + + + + +
+ +
视频案例
+
+ + +
+ + +
+ +
+
+ +
+ 00:00:00/00:00:00 +
+ + +
+ +
+
+ + + + +``` + + + + + +工程文件: + +- 2018-02-23-H5多媒体播放器.rar + + diff --git a/08-HTML5和CSS3/09-HTML5详解(二).md b/08-HTML5和CSS3/09-HTML5详解(二).md new file mode 100644 index 0000000..ed6f34d --- /dev/null +++ b/08-HTML5和CSS3/09-HTML5详解(二).md @@ -0,0 +1,624 @@ + + +## 本文主要内容 + +- 拖拽 + +- 历史 + +- 地理位置 + +- 全屏 + +## 拖拽 + +20180223_2130.gif + +如上图所示,我们可以拖拽博客园网站里的图片和超链接。 + +在HTML5的规范中,我们可以通过为元素增加 `draggable="true"` 来设置此元素是否可以进行拖拽操作,其中图片、链接默认是开启拖拽的。 + +### 1、拖拽元素 + +页面中设置了 `draggable="true"` 属性的元素。 + +举例如下: + +```html + + + + + Title + + + + + +
+ + +``` + +效果如下: + +20180223_2140.gif + +上图中,我们给 box1 增加了`draggable="true"` 属性之后,发现 box1 是可以拖拽的。但是拖拽之后要做什么事情呢?这就涉及到**事件监听**。 + + +**拖拽元素的事件监听**:(应用于拖拽元素) + +- `ondragstart`当拖拽开始时调用 + +- `ondragleave` 当**鼠标离开拖拽元素时**调用 + +- `ondragend` 当拖拽结束时调用 + +- `ondrag` 整个拖拽过程都会调用 + + +代码演示: + +```html + + + + + + + + +
+ + + + +``` + + +效果如下: + +20180223_2201.gif + +打印结果: + +20180223_2213.png + + +### 2、目标元素 + +比如说,你想把元素A拖拽到元素B里,那么元素B就是目标元素。 + +页面中任何一个元素都可以成为目标元素。 + +**目标元素的事件监听**:(应用于目标元素) + +- `ondragenter` 当拖拽元素进入时调用 + +- `ondragover` 当拖拽元素停留在目标元素上时,就会连续一直触发(不管拖拽元素此时是移动还是不动的状态) + +- `ondrop` 当在目标元素上松开鼠标时调用 + +- `ondragleave` 当鼠标离开目标元素时调用 + + +代码演示: + +```html + + + + + + + + +
+
+ + + + +``` + + +效果演示: + +20180223_2240.gif + +注意,上方代码中,我们加了`event.preventDefault()`这个方法。如果没有这个方法,后面ondrop()方法无法触发。如下图所示: + +20180223_2245.gif + +如上图所示,连光标的形状都提示我们,无法在目标元素里继续操作了。 + +**总结**:如果想让拖拽元素在目标元素里做点事情,就必须要在 `ondragover()` 里加`event.preventDefault()`这一行代码。 + + +**案例:拖拽练习** + +完整版代码: + +```html + + + + + + + + +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
+
+ + + + +``` + +效果如下: + +20180224_2050.gif + +## 历史 + +界面上的所有JS操作不会被浏览器记住,就无法回到之前的状态。 + +在HTML5中可以通过 `window.history` 操作访问历史状态,让一个页面可以有多个历史状态 + +`window.history`对象可以让我们管理历史记录,可用于单页面应用,Single Page Application,可以无刷新改变网页内容。 + +1. window.history.forward(); // 前进 +2. window.history.back(); // 后退 +3. window.history.go(); // 刷新 +4. 通过JS可以加入一个访问状态 +5. history.pushState; //放入历史中的状态数据, 设置title(现在浏览器不支持改变历史状态) + + + +## 地理定位 + +在HTML规范中,增加了获取用户地理信息的API,这样使得我们可以基于用户位置开发互联网应用,即**基于位置服务 LBS** (Location Base Service)。 + + + +### 获取地理信息的方式 + +#### 1、IP地址 + + +#### 2、三维坐标: + + +(1)**GPS**(Global Positioning System,全球定位系统)。 + +目前世界上在用或在建的第2代全球卫星导航系统(GNSS)有: + +- 1.美国 Global Positioning System (全球定位系统) 简称GPS; + +- 2.苏联/俄罗斯 GLOBAL NAVIGATION SATELLITE SYSTEM (全球卫星导航系统)简称GLONASS(格洛纳斯); + +- 3.欧盟(欧洲是不准确的说法,包括中国在内的诸多国家也参与其中)Galileo satellite navigation system(伽利略卫星导航系统) 简称GALILEO(伽利略); + +- 4.中国 BeiDou(COMPASS) Navigation Satellite System(北斗卫星导航系统)简称 BDS ; + +- 5.日本 Quasi-Zenith Satellite System (准天顶卫星系统) 简称QZSS ; + +- 6.印度 India Regional Navigation Satellite System(印度区域卫星导航系统)简称IRNSS。 + +以上6个系统中国都能使用。 + +(2)**Wi-Fi**定位:仅限于室内。 + +(3)**手机信号**定位:通过运营商的信号塔定位。 + + +### 3、用户自定义数据: + +对不同获取方式的优缺点进行了比较,浏览器会**自动以最优方式**去获取用户地理信息: + +20180224_2110.png + + +### 隐私 + +HTML5 Geolocation(地理位置定位) 规范提供了一套保护用户隐私的机制。必须先得到用户明确许可,才能获取用户的位置信息。 + + +### API详解 + +- navigator.getCurrentPosition(successCallback, errorCallback, options) 获取当前地理信息 + +- navigator.watchPosition(successCallback, errorCallback, options) 重复获取当前地理信息 + + +1、当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position:(Coords即坐标) + +- position.coords.latitude纬度 + +- position.coords.longitude经度 + + +2、当获取地理信息失败后,会调用errorCallback,并返回错误信息error。 + + +3、可选参数 options 对象可以调整位置信息数据收集方式 + + +地理位置的 api 代码演示: + +```html + + + + + + + + + + +``` + + +百度地图api举例: + +```html + + + + 普通地图&全景图 + + + + + + +
+ + + + +``` + +## 全屏 + +> HTML5规范允许用户自定义网页上**任一元素**全屏显示。 + +### 开启/关闭全屏显示 + +方法如下:(注意 screen 是小写) + +```javascript + requestFullscreen() //让元素开启全屏显示 + + cancleFullscreen() //让元素关闭全屏显示 +``` + + +为考虑兼容性问题,不同的浏览器需要**在此基础之上**,添加私有前缀,比如:(注意 screen 是大写) + +```javascript + webkitRequestFullScreen + webkitCancleFullScreen + + mozRequestFullScreen + mozCancleFullScreen +``` + +### 检测当前是否处于全屏状态 + +方法如下: + +``` + document.fullScreen +``` + + +不同浏览器需要加私有前缀,比如: + +```javascript + document.webkitIsFullScreen + + document.mozFullScreen +``` + + +### 全屏的伪类 + +- :full-screen .box {} + +- :-webkit-full-screen {} + +- :moz-full-screen {} + +比如说,当元素处于全屏状态时,改变它的样式。这时就可以用到伪类。 + +### 代码举例 + +```html + + + + + + + + +
+ + + + +``` + +效果如下: + +20180224_2130.gif + + + + + diff --git a/08-HTML5和CSS3/10-HTML5详解(三).md b/08-HTML5和CSS3/10-HTML5详解(三).md new file mode 100644 index 0000000..0da0dac --- /dev/null +++ b/08-HTML5和CSS3/10-HTML5详解(三).md @@ -0,0 +1,370 @@ + + +## Web 存储 + +随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案。 + +### H5 中有两种存储的方式 + +1、**`window.sessionStorage` 会话存储:** + +- 保存在内存中。 + +- **生命周期**为关闭浏览器窗口。也就是说,当窗口关闭时数据销毁。 + +- 在同一个窗口下数据可以共享。 + + +2、**`window.localStorage` 本地存储**: + +- 有可能保存在浏览器内存里,有可能在硬盘里。 + +- 永久生效,除非手动删除(比如清理垃圾的时候)。 + +- 可以多窗口共享。 + + +### Web 存储的特性 + +(1)设置、读取方便。 + +(2)容量较大,sessionStorage 约5M、localStorage 约20M。 + +(3)只能存储字符串,可以将对象 JSON.stringify() 编码后存储。 + + +### 常见 API + +设置存储内容: + +```javascript + setItem(key, value); +``` + +PS:可以新增一个 item,也可以更新一个 item。 + +读取存储内容: + +```javascript + getItem(key); +``` + +根据键,删除存储内容: + +```javascript + removeItem(key); +``` + + +清空所有存储内容: + +```javascript + clear(); +``` + +根据索引值来获取存储内容: + + +```javascript + key(n); +``` + + +sessionStorage 的 API 举例: + +```html + + + + + + + + + + + + + + + + +``` + +效果如下: + +20180224_2200.gif + +如上图所示,我们可以在 Storage 选项卡中查看 Session Storage 和Local Storage。 + +**localStorage 的 API 举例:** + + +```html + + + + + + + + + + + + + + + + + +``` + + +### 案例:记住用户名和密码 + +代码: + +```html + + + + + + + + +

+ +

+ +

+ + + + + +``` + +## 网络状态 + +我们可以通过 `window.onLine` 来检测用户当前的网络状况,返回一个布尔值。另外: + +- window.online:用户网络连接时被调用。 + +- window.offline:用户网络断开时被调用(拔掉网线或者禁用以太网)。 + +网络状态监听的代码举例: + +```html + + + + + + + + + + +``` + + +## 应用缓存 + +HTML5中我们可以轻松的构建一个离线(无网络状态)应用,只需要创建一个 `cache manifest` 缓存清单文件。 + + +### 优势 + +1、可配置需要缓存的资源; + +2、网络无连接应用仍可用; + +3、本地读取缓存资源,提升访问速度,增强用户体验; + +4、减少请求,缓解服务器负担。 + + + + + +### `cache manifest` 缓存清单文件 + + + +缓存清单文件中列出了浏览器应缓存,以供离线访问的资源。推荐使用 `.appcache`作为后缀名,另外还要添加MIME类型。 + +**缓存清单文件里的内容怎样写:** + +(1)顶行写CACHE MANIFEST。 + +(2)CACHE: 换行 指定我们需要缓存的静态资源,如.css、image、js等。 + +(3)NETWORK: 换行 指定需要在线访问的资源,可使用通配符(也就是:不需要缓存的、必须在网络下面才能访问的资源)。 + +(4)FALLBACK: 换行 当被缓存的文件找不到时的备用资源(当访问不到某个资源时,自动由另外一个资源替换)。 + +格式举例1: + +20180224_2240.png + +格式举例2: + +```bash +CACHE MANIFEST + +#要缓存的文件 +CACHE: + images/img1.jpg + images/img2.jpg + + +#指定必须联网才能访问的文件 +NETWORK: + images/img3.jpg + images/img4.jpg + + +#当前页面无法访问是回退的页面 +FALLBACK: + 404.html + +``` + + +**缓存清单文件怎么用:** + +(1)例如我们创建一个名为 `demo.appcache`的文件。例如: + +demo.appcache: + +```bash +CACHE MANIFEST + +# 注释以#开头 +#下面是要缓存的文件 +CACHE: + http://img.smyhvae.com/2016040101.jpg +``` + + +(2)在需要应用缓存在页面的根元素(html)里,添加属性manifest="demo.appcache"。路径要保证正确。例如: + + +```html + + + + + + + + + + +``` + + +