mobile_音悦台
音悦台

- less 可以 width = 1080/67.5rem;
/**** 变量定义 ****/
@px: 67.5rem; /**** Start ****/
#wrap {
width: 100%;
height: 100%; background-color: #eee;
#content {
width: 1080/@px;
height: 135/@px; background-color: #96b377;
}
}
- 头部 header
- Logo 用 h1 和 a 包裹
- 移动端的 点击元素 大多使用 <a> 模拟
移动端 默认有 a元素的高亮 设置成 透明色
a {
-webkit-tap-hightlight-color: rgba(0, 0, 0, 0);
}
- 两个 input 之间有缝 的 2 个解决方法
1. 父元素 font-size: 0;
2. float: left;
- 封装原生 js 操作 class
- 因为阻止冒泡,所有的 document 事件都不会执行,此时,补一个 e.preventDefault();
- 元素 js 获取焦点 ele.focus();
- 元素 js 失去焦点 ele.blur();
- 内容区 导航条
文本永不换行(实现长导航栏)
- nav
375 屏幕大小
- ul
white-space: nowrap;
float: left; 浮动/定位,由子元素撑开宽度
font-size: 0;
- 橡皮筋特效
touchstart
元素清除 动画.style.transition = "0s none";
拉:越来越难拉
- 比例 scale = 0.6 - translateX / (clientWidth*3111111111111111111111111111111111111111111111111111111111111111111111); 由 1 逐渐向 0 减小
- translateX = translateX * scale; translate 始终在增加,只是增加地越来越小。
释放: 加速效果
- 得到此行代码的时间 sTime = new Data().getTime(); // ms
- 元素.style.transition = "2s all ease 0s";
- 元素位置 = touchmoveX + speed*100;
- 回弹
- li 变成 行内块元素
font-size: 1rem; 注意:不是 1/@rem;
解决行内块的缝:
- 父元素 font-size: 0;
- li 浮动
误触 解决方法:
touchstart 设置 isClick = true; 在 touchmove 中 isClick = false;
- 内容区 无缝滑屏
- 抖动:
手指在滑屏,但是图片被滑动
- 防抖动:
单方向→多方向(isFirst取第一次 move 一小段 touchmove,如果 touchmoveY 大于 touchmoveX,则本次滑屏始终禁止)
- 内容区 tab 选项卡

- 可以看到图中 港台 下面的小绿条
不能使用 border 实现
- 监控过渡结束后,再 loading 图 opacity = 1
tabWrap.addEventListener("transitionend", func, false);
tabWrap.removeEventListener(webkitTransitionend", func);
- 2D 变换 元素 的文本会在过渡时产生闪烁
加上 3D 效果
- 近大远小 的效果
- 解决文本闪烁
// 加 3D 效果,因为 3D 效果渲染比 2D 快得多
transformEle(ulList, "translateZ", 0.1);
- 即点即停
在滑动加速过程中,点击屏幕,停止加速
- 关键点:
过渡 覆盖操作
过渡 在元素没加载完,没有过渡效果
没有中过程值,没有过渡效果
过渡 最终检测的是 起点到终点的整个过程,中间过程捕捉不到。
- Tween 算法 实现: (检测元素过渡的 中间值)
https://www.cnblogs.com/bluedream2009/archive/2010/06/19/1760909.html
- Tween {
- 中间过程: 正常加速 ---- 匀速
Linear: function {... ...},
- 两边效果: 橡皮筋回弹 ----
back + easeOut
先找到 back ,back 中有个 easeOut: function{... ...}
};
t 当前次数
b 元素的初始位置
c 元素 结束位置 与 初始位置 的距离差
d 总次数 (从0-100,是一次性跑过去,还是 d 次跑过去)
s 回弹系数 s 越大,回弹越远 s 默认值 为 1.70158
Tween["Linear"](); 调用,返回值 当前次数运动到的位置

- 封装: 将一段过渡(加速 或者 回弹),分为几段去完成。
- (即点即停:内部使用定时器实现,在点击 touchstart 时,清除定时器)
- 注意:
每次开启定时器之前,记得先关,保证始终只有一个定时器在运行。
记得在次数完成时,关定时器。
// 竖向 滑屏加速 与 橡皮筋特效 需要封装 translateY 的 transform 函数
// 元素 目标位置 总时间 类型(匀速 或者 回弹)
function tweenMove(ele, target, timeAll, type){
var t = 0; // t : 当前次数
var b = transformCss(ele,'translateY'); // b : 元素初始位置
var c = target - b; // c : 元素结束位置与初始位置 距离差
var d = timeAll/0.02; // d : 总次数 = 总时间/每次花费的时间 //重置开启定时器,清除上一次的定时器
var timer = 0;
clearInterval(timer);
timer = setInterval(function(){
t++; if(t > d){
clearInterval(timer); // 元素停止状态 停止定时器
}else{
var point = Tween[type](t,b,c,d); // 元素正常走的状态(加速和回弹)
transformCss(ele,'translateY',point);
};
},20);
};
- 自定义 滚动条
- 滚动条逻辑
- 滚动条的 height = (屏幕的height / 内容区的高)*屏幕的height
- var callBack = {
start: function(){
滚动条的显示
}, // 1. 触屏的状态
move: function(){
滚动条显示
滚动条移动
}, // 2. 监测 touchmove 3.加速状态
end: function(){} // 4. 加速完的状态更新
};
- 作为 callBack 传入屏幕滑动 逻辑中,处理横向抖动问题
mobile_音悦台的更多相关文章
- jQuery Mobile_事件
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- jQuery Mobile_页面事件
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- jQuery Mobile_表单元素
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- jQuery Mobile_简单的爱情故事
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- jQuery Mobile_公司简介
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- php获取音悦台视频
<?php $url=isset($_GET['url'])?trim($_GET['url']):''; $url = "http://v.yinyuetai.com/video/6 ...
- mobile_像素
document.documentElement.clientWidth 不包含滚动条 window.innerWidth ...
- mobile_视口
document.documentElement.clientWidth 不包含滚动条 window.innerWidth ...
- mobile_缩放
document.documentElement.clientWidth 不包含滚动条 window.innerWidth ...
随机推荐
- 如何实现Python调用C代码--python与C之间如何通信(swig)
转载: https://www.zhihu.com/question/23003213 1. C代码如何调用Python 1.1 test #include <Python.h> int ...
- CSS margin负值学习及实际应用
前言 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它. 表现 虽然m ...
- spark JAVA 开发环境搭建及远程调试
spark JAVA 开发环境搭建及远程调试 以后要在项目中使用Spark 用户昵称文本做一下聚类分析,找出一些违规的昵称信息.以前折腾过Hadoop,于是看了下Spark官网的文档以及 github ...
- VS Code中编写C
Visual Studio Code如何编写运行C.C++? Visual Studio Code的C/C++扩展功能 vscode配置C/C++的编译调试环境
- SQLserver 数据库高版本无法还原到低版本的数据解决方法
sql server 数据库的版本只支持从上往下兼容.即高版本可以兼容低版本 .低版本不能兼容低版本.通常我们在开发时会用比较高的版本.但是部署到客户那边可能他们的数据库版本会比较低. 我们可以通过导 ...
- What a Ridiculous Election UVALive - 7672 (BFS)
题目链接: E - What a Ridiculous Election UVALive - 7672 题目大意: 12345 可以经过若干次操作转换为其它五位数. 操作分三种,分别为: 操作1:交 ...
- 爬虫工程师JD归纳
核心能力归纳 负责:多平台信息的抓取,清洗和分析工作 要求: 熟悉常用开源爬虫框架,如 scrapy / pyspider 了解基于Cookie的登录原理,熟悉常用的信息抽取技术,如正则表达式.XP ...
- 逆元知识普及(进阶篇) ——from Judge
关于一些逆元知识的拓展 刚艹完一道 提高- 的黄题(曹冲养猪) ,于是又来混一波讲解了 ——承接上文扫盲篇 四.Lucas定理(求大组合数取模) 题外话 这里Lucas定理的证明需要用到很多关 ...
- 轮播swiper配置选项
本文主要介绍了swiper配置选项,包含了轮播的无限滚动.懒加载.监听当前位置.上下翻页.过渡动画渐变.延时加载图片.自动轮播等: swiper官方链接DEMO <!DOCTYPE html&g ...
- VMware虚拟机从一台电脑复制到另一台电脑
1.选中.vmx文件和所有的.vmdk文件,添加到压缩文件 vmx是虚拟系统配置文件,而vmdk则是虚拟磁盘文件,它们都是VMware所支持的文件格式 2.复制压缩文件到另一台电脑上,并解压 3.在另 ...