学习内容:
一、navigator对象
navigator 对象包含有关浏览器的信息,它有很多属性,我们最常用的是 userAgent,
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|
Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS
|Symbian|Windows Phone)/i))) {
window.location.href = ""; //手机
} else {
window.location.href = ""; //电脑
}
二、history 对象
history对象方法 | 作用 |
back() | 可以后退功能 |
forward() | 前进功能 |
go(参数) | 前进后退功能 参数如果是1前进一个页面 如果是-1 后退一个页面 |
三、PC端网页特效
1、元素偏移量 offset 系列
(1)相关属性可以动态的得到该元素的位置(偏移)、大小等。
(2) 获得元素距离带有定位父元素的位置 。
(3)获得元素自身的大小(宽度高度)。
(4)注意: 返回的数值都不带单位。
offset系列属性 | 作用 |
element.offsetParent | 返回作为该元素带有定位的父级元素 如果妒忌都没有定位则返回body |
element.offsetTop | 返回元素相对带有定位父元素上方的偏移 |
element.offsetLeft | 返回元素相对带有定位父元素左边框的偏移 |
element.offsetWidth | 返回自身包括padding、边框、内容区的宽度,返回值不带单位。 |
element.offsetHeight | 返回自身包括padding、边框、内容区的高度,返回值不带单位。 |
offset 与 style 区别
(1)offset 可以得到任意样式表中的样式值 ,style 只能得到行内样式表中的样式值 。
(2)offset 系列获得的数值是没有单位的,style.width 获得的是带有单位的字符串 。
(3)offsetWidth 包含padding+border+width, style.width 获得不包含padding和border 的值。
(4)offsetWidth 等属性是只读属性,只能获取不能赋值 。所以,我们想要获取元素大小位置,用offset更合适
(5)style.width 是可读写属性,可以获取也可以赋值 。所以,我们想要给元素更改值,则需要用style改变
2、元素可视区 client 系列
client 翻译就是客户端,通过 client 系列 的相关属性可以动态的得到该元素的边框大小、元素大小等
client系列属性 | 作用 |
element.clientTop | 返回元素上边框的大小 |
element.clientLeft | 返回元素左边框的大小 |
element.clientWidth | 返回自身包括padding 、内容区的宽度,不含边框,返回数值不带单位。 |
element.clientHeight | 返回自身包括padding 、内容区的高度,不含边框,返回数值不带单位。 |
3、元素滚动 scroll 系列
scroll 翻译过来就是滚动的,我们使用 scroll 系列的相关属性可以动态的得到该元素的大小、滚动距离等。
scroll系列属性 | 作用 |
element.scrollTop | 返回被卷上去的上侧距离,返回数值不带单位。 |
element.scrollLeft | 返回被卷上去的左侧距离,返回数值不带单位。 |
element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位。 |
element.scrollHeight | 返回自身实际的高度,不含边框,返回数值不带单位。 |
4、以上三个系列的对比
三大系列大小对比 | 作用 | 常用于 |
element.offsetWidth | 返回自身包括padding、边框、内容区的宽度,返回值不带单位。 | 获取元素位置 |
element.clientWidth | 返回自身包括padding 、内容区的宽度,不含边框,返回数值不带单位。 | 获取元素大小 |
element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位。 | 获取滚动距离 |
5、mouseenter 和mouseover的区别
(1)当鼠标移动到元素上时就会触发 mouseenter 事件。
(2) mouseover 鼠标经过自身盒子会触发,经过子盒子还会触发。
(3)mouseenter 只会经过自身盒子触发 。
(4)之所以这样,就是因为mouseenter不会冒泡。
(5) 跟mouseenter搭配,鼠标离开 mouseleave 同样不会冒泡。
6、动画实现原理
核心原理:通过定时器 setInterval() 不断移动盒子位置。
实现步骤:
(1) 获得盒子当前位置
(2) 让盒子在当前位置加上1个移动距离
(3)利用定时器不断重复这个操作
(4)加一个结束定时器的条件
(5)注意此元素需要添加定位,才能使用element.style.left
四、移动端网页特效
1、触屏事件
常见触屏事件如下
(1)touchstart 手指触摸到一个DOM元素时触发
(2)touchmove手指在一个DOM元素上滑动时触发
(3)touchend手指从一个DOM元素上移开时触发
2、触摸事件对象 以上三种触摸事件又会有各自的事件对象。
(1)touches 正在触摸屏幕的所有手指的一个列表
(2)targetTouches 正在触摸当前DOM元素上的手指的一个列表
(3)changedTouches 手指状态发生了改变的列表,从无到有,从有到无变化。
3、移动端拖动元素三部曲
(1) 触摸元素 touchstart: 获取手指初始坐标,同时获得盒子原来的位置
(2) 移动手指 touchmove: 计算手指的滑动距离,并且移动盒子
(3) 离开手指 touchend
五、移动端常用开发插件
1、JS 插件的使用 GitHub官网地址: https://github.com/ftlabs/fastclick
2、Swiper 插件的使用 中文官网地址: https://www.swipe
3、其他移动端常见插件
superslide: http://www.superslide2.com/
iscroll: https://github.com/cubiq/iscroll
六、移动端常用开发框架
1、 前端常用的框架有 Bootstrap、Vue、Angular、React 等。既能开发PC端,也能开发移动端
2、前端常用的移动端插件有 swiper、superslide、iscroll等
3、框架: 大而全,一整套解决方案
4、插件: 小而专一,某个功能的解决方
5、常见的Bootstrap 前端开发框架
Bootstrap JS插件使用步骤:
(1)引入相关js 文件
(2)复制HTML 结构
(3) 修改对应样式
(4) 修改相应JS 参数