> ## :-: H5 - 获取地理位置 (2019-6-30)
```
// H5 - 获取地理位置 (HTTPS/file协议下才能用、HTTP协议不行)
// 经度最大值180,纬度最大值90、
window.navigator.geolocation.getCurrentPosition(function(position) {
// 成功回调
console.log(position); // Geoposition {coords: Coordinates, timestamp: 1561865377145}
}, function() {
// 失败回调
console.log('fail to get');
});
```
> ## :-: H5 - 重力感应(陀螺仪) (2019-6-30)
```
// H5 - 重力感应(陀螺仪)
// ios设备需要https协议、安卓设备没那么多限制、
// alpha:指北(指南针) [0,360] 当为0的时候指北,180指南。
// beta:平放的时候beta值为0。如果将手机立起来(短边接触桌面) 直立的时候beta为90度、
// gamma:平放的时候gamma值为0。如果将手机立起来(长边接触桌面),直立的时候gamma为90度、
window.addEventListener('deviceorientation', function(event) { console.log(event) });
```
Demo - Gyroscope:http://a-1.vip/demo/Gyroscope
> ## :-: H5 - 设备加速度(判断晃动) (2019-6-30)
```
window.addEventListener('devicemotion', function(event) {
// event.acceleration.x | event.acceleration.y | event.acceleration.z
if (Math.abs(event.acceleration.x) > 50 || Math.abs(event.acceleration.y) > 50 || Math.abs(event.acceleration.z) > 50) {
alert('稳住,小老弟 ~');
}
});
```
> ## :-: H5 - [requestAnimationFrame](https://www.jianshu.com/p/4a04a037084e) (2019-6-30)
```
// js动画最佳实现 -- requestAnimationFrame(func); - 兼容性极差
// 屏幕刷新率60Hz,每秒60帧、
let element = document.getElementById('main'),
timer = null;
function move() {
element.style.left = element.offsetLeft + 20 + 'px';
timer = requestAnimationFrame(move); // 设置定时器(1000ms/60)
if (element.offsetLeft > 1400) cancelAnimationFrame(timer); // 清除定时器
}
move();
```
Demo:http://a-1.vip/demo/H5/requestAnimationFrame
> ## :-: H5 - [数据存储](https://www.cnblogs.com/minigrasshopper/p/8064367.html) (2019-6-30)
```
localStorage -- 本地存储(长期)
sessionStorage -- 会话存储(临时)
// localStorage 中的键值对总是以字符串的形式存储。 (需要注意, 和js对象相比, 键值对总是以字符串的形式存储意味着数值类型会自动转化为字符串类型).
// 写入 -- localStorage.name = 'test'
// 读取 -- localStorage.name
// 删除 -- localStorage.removeItem('name');
// 清空 -- localStorage.clear();
```
| 特性 | Cookie | localStorage | sessionStorage |
| :---: | :---: | :---: | :---: |
| 数据的生命期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
| 存放数据大小 | 4K左右 | 一般为5MB | [Refer to the left] |
| 与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | [Refer to the left] |
| 易用性 | 需要程序员自己封装,源生的Cookie接口不友好 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 | [Refer to the left] |
下面的代码片段访问了当前域名下的本地[`Storage`](https://developer.mozilla.org/zh-CN/docs/Web/API/Storage "作为 Web Storage API 的接口,Storage 提供了访问特定域名下的会话存储或本地存储的功能,例如,可以添加、修改或删除存储的数据项。")对象,并通过[`Storage.setItem()`](https://developer.mozilla.org/zh-CN/docs/Web/API/Storage/setItem "setItem() 作为 Storage 接口的方法,接受一个键名和值作为参数,将会把键名添加到存储中,如果键名已存在,则更新其对应的值。")增加了一个数据项目。
~~~js
localStorage.setItem('myCat', 'Tom');
~~~
该语法用于读取`localStorage`项,如下:
~~~js
let cat = localStorage.getItem('myCat');
~~~
该语法用于移除`localStorage`项,如下:
~~~js
localStorage.removeItem('myCat');
~~~
该语法用于移除所有的`localStorage`项,如下:
~~~js
localStorage.clear();
~~~
> ## :-: H5 - [Event](https://www.w3cschool.cn/fetch_api/fetch_api-2era2pce.html)
```
// url被改变事件、
addEventListener('popstate', (e) => { console.log(e) });
// url中的锚点(hash)被改变事件、
addEventListener('hashchange', (e) => { console.log(e) });
```
` e.preventDefault(); // 阻止默认事件、`
- 前端工具库
- HTML
- CSS
- 实用样式
- JavaScript
- 模拟运动
- 深入数组扩展
- JavaScript_补充
- jQuery
- 自定义插件
- 网络 · 后端请求
- css3.0 - 2019-2-28
- 选择器
- 边界样式
- text 字体系列
- 盒子模型
- 动图效果
- 其他
- less - 用法
- scss - 用法 2019-9-26
- HTML5 - 2019-3-21
- canvas - 画布
- SVG - 矢量图
- 多媒体类
- H5 - 其他
- webpack - 自动化构建
- webpack - 起步
- webpack -- 环境配置
- gulp
- ES6 - 2019-4-21
- HTML5补充 - 2019-6-30
- 微信小程序 2019-7-8
- 全局配置
- 页面配置
- 组件生命周期
- 自定义组件 - 2019-7-14
- Git 基本操作 - 2019-7-16
- vue框架 - 2019-7-17
- 基本使用 - 2019-7-18
- 自定义功能 - 2019-7-20
- 自定义组件 - 2019-7-22
- 脚手架的使用 - 2019-7-25
- vue - 终端常用命令
- Vue Router - 路由 (基础)
- Vue Router - 路由 (高级)
- 路由插件配置 - 2019-7-29
- 路由 - 一个实例
- VUEX_数据仓库 - 2019-8-2
- Vue CLI 项目配置 - 2019-8-5
- 单元测试 - 2019-8-6
- 挂载全局组件 - 2019-11-14
- React框架
- React基本使用
- React - 组件化 2019-8-25
- React - 组件间交互 2019-8-26
- React - setState 2019-11-19
- React - slot 2019-11-19
- React - 生命周期 2019-8-26
- props属性校验 2019-11-26
- React - 路由 2019-8-28
- React - ref 2019-11-26
- React - Context 2019-11-27
- PureComponent - 性能优化 2019-11-27
- Render Props VS HOC 2019-11-27
- Portals - 插槽 2019-11-28
- React - Event 2019-11-29
- React - 渲染原理 2019-11-29
- Node.js
- 模块收纳
- dome
- nodejs - tsconfig.json
- TypeScript - 2020-3-5
- TypeScript - 基础 2020-3-6
- TypeScript - 进阶 2020-3-9
- Ordinary小助手
- uni-app
- 高德地图api
- mysql
- EVENTS
- 笔记
- 关于小程序工具方法封装
- Tool/basics
- Tool/web
- parsedUrl
- request