惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
I
Intezer
F
Fortinet All Blogs
S
SegmentFault 最新的问题
罗磊的独立博客
V
Visual Studio Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
J
Java Code Geeks
美团技术团队
B
Blog
U
Unit 42
F
Full Disclosure
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy International News Feed
G
Google Developers Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
GbyAI
GbyAI
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
Recorded Future
Recorded Future
D
Docker
博客园 - 聂微东
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
K
Kaspersky official blog
Martin Fowler
Martin Fowler
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
Lohrmann on Cybersecurity
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
Microsoft Security Blog
Microsoft Security Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
Hugging Face - Blog
Hugging Face - Blog
博客园_首页

一颗小树

周更的第 100 篇 改变阅读方式 宝贵的人生建议 小树的工具库 2023 读《重构》有感 仅需 10 分钟,用 GPTs 实现文章总结助手 高质量的需求交付 产品始于问题,而不是解决方案 如何更好地休息 最优解人生 与体重斗,其乐无穷 结构化 prompt = 数字员工? 持续创作的法门 如何降低知识焦虑 7 月思维碎片 N 倍生产力提升:我的 AI 助理 Indie Hacker,互联网打工人的下一个出路? 如何成就伟大事业 夏日碎片 小报编辑的自我修养 一颗小树 #49 投入真实生活 一颗小树 #48 过年杂记 一颗小树 #47 我的人生信念(2023) 一颗小树 #46 回本就卖 一颗小树 #45 规划和落地 小树的 2022 年终总结 一颗小树 #44 构建高质量信源 一颗小树 #43 我的 2022 书单 一颗小树 #42 阳了怎么办 一颗小树 #41 一人企业 一颗小树 #40 非必要别正常啦 一颗小树 #39 阅读和创造 一颗小树 #38 疫情生活碎片 一颗小树 #37 基于多维表格的可转债投资系统 一颗小树 #36 飞盘初体验 一颗小树 #35 雁栖湖半日游 一颗小树 #34 初探多维表格 一颗小树 #33 回不去的名字叫家乡 一颗小树 #32 生活需要留白 一颗小树 #31 Figma 的成功之道 一颗小树 #30 拓宽自己 拥抱善意 一颗小树 #29 有关下雨的记忆 一颗小树 #28 隐入尘烟 一颗小树 #27 找到并坚持自己的热爱 一颗小树 #26 好产品的“差”改版 一颗小树 #25 吹吹南澳岛的海风 一颗小树 #24 代码重构的一点心得 一颗小树 #23 和团队新同学的对话 一颗小树 #22 从《干法》中学到的 一颗小树 #21 阿里四年我的收获和感想 一颗小树 #20 周更半年我学到的事 一颗小树 #19 慢慢来比较快 一颗小树 #18 只规划每天最重要的三件事 一颗小树 #17 裁员潮下的反思 一颗小树 #16 纪录片的力量在于真实 一颗小树 #15 世界很小但很好 一颗小树 #14 让自己成为问题的终结者 一颗小树 #13 别忘记你的热爱 一颗小树 #12 聊聊写作这件事 一颗小树 #11 开始投资前更重要的事 一颗小树 #10 疫情囤货指南 一颗小树 #9 疫情之下 重建内心的秩序 一颗小树 #8 不要倒在黎明前 一颗小树 #7 从小孩子身上学到的事 一颗小树 #6 和自己的产品一起成长 一颗小树 #5 技术对生产力的的变革是不可阻挡的 一颗小树 #4 暴风雨的意义 一颗小树 #3 投资成功,是我们变成一个更好的人之后自然的结果 一颗小树 #2 持续学习来应对这个复杂多变的世界 一颗小树 #1 任天堂和上岭村 一颗小树 #0 这是写给你们的第一封信 游戏改变世界 把自己给开源了 构建自己的不为清单 有爱和被爱 做了一点微小的工作 小树的 2021 年终总结 小树的 2020 年终总结 与其感慨路难行,不如马上出发 阿里前端也切图?不,人工智能帮你做 如何写好简历,拿到大厂 offer 的敲门砖 任时光匆匆流去 | 2019 年终总结 聊聊在阿里远程办公那点事儿 在 D2 做主持人是怎样一种体验? 提高工作效率的几个方法 有限状态机在 CSS 动画中的应用 「译」React 项目结构和组件命名之道 编写小而美函数的艺术 使用纯粹的JS构建 Web Component 翻译计划-状态管理请三思 利用Dawn工程化工具实践MobX数据流管理方案 高性能 MobX 模式(part 3)- 用例教程 高性能 MobX 模式(part 2)- 响应变化 技术文章写法浅谈 翻译计划-用node.js开发一个可交互的命令行应用 无他,唯手熟尔-前端实习面试题篇 工欲善其事必先利其器-前端实习简历篇 手把手带你用原生js实现css属性的set和get 我们来翻翻元素样式的族谱-getComputedStyle 翻译计划-从sass到PostCSS
css3模拟原生页面滚动
也树 · 2016-06-18 · via 一颗小树

移动端 css3 的应用。

做一个移动端小项目接到了两栏布局分别滚动的需求,原生的页面滚动是无法实现的。这个时候本想求助于插件,但是多方考察发现插件体积相对较大而需求也比较简单,故用 iscroll 插件的思路和 jquery 实现了更简单的页面滚动。

功能

1.模拟原生滚动,并有上拉和下拉回弹的效果。 2.两栏分别滚动。 3.暂时无法实现根据加速度来控制滚动。

总体思路

1.通过原生的 touchstart/touchmove/touchend 事件控制手指移动事件。 2.通过以上事件获取始末位置差值进行 translate 变换,并设置过渡以模拟滚动

代码

var scrollUpdown = function($outer,$innerUl){
	// translate模拟滚动
	var scroll = function(block,diff,t){
		block.css('transform','translateY(' + diff + 'px)');
		block.css('transition-duration',t + 'ms');
	};
	// 起始位置相对页面Y轴位置$startY 移动后$moveY 结束时$endY
	var $startY = $moveY = $endY = 0;
	// 外层元素高度和内层ul高度差
	var $heightDiff = $outer.height() - $innerUl.height();
	// 获取每一个li包括padding和border的高度
	var $liHeight = $innerUl.find('li:first-child').outerHeight();
	$innerUl.on('touchstart',function(e){
		// 第一个手指的相对页面Y轴位置
		$startY = e.originalEvent.touches[0].pageY;
	}).on('touchmove',function(e){
		// 移动中第一个手指相对页面Y轴位置
		$moveY = e.originalEvent.touches[0].pageY;
		// 移动中和起始位置的差值
		$diff = $moveY - $startY;
		// $endY+$diff即当前结束位置加上新的位置差值进行移动
		scroll($(this),$endY + $diff,0);
	}).on('touchend',function(e){
		// 前一个末尾值和新的移动位置差相加
		$endY += $diff;
		// 重置移动位置差
		$diff = 0;
		// 如果$endY>0即从最上方向下滑动,则将位置返回最上方
		// 如果$endY<$heightDiff即滑动位置已到最后一屏,则将位置返回最下方
		// 如果$heightDiff<$endY<0即滑动位置在列表中间,按照每块的间距来移动实现左右对齐
		if($endY > 0){
			$endY = 0;
		}
		else if($endY < $heightDiff){
			$endY = $heightDiff;
		}
		else{
			$endY = Math.round($endY/$liHeight)*$liHeight;
		}
		scroll($(this),$endY,600);
	});
};

示例 html 结构: 注意 ul 的高度要设置 min-height 为 100%

<div class="brands">
	<ul class="brands-list">
		<li>111</li>
		<li>111</li>
		<li>111</li>
		<li>111</li>
		<li>111</li>
	</ul>
</div>

调用方式:

scrollUpdown($('.brands'),$('.brands-list'));