H5 single-page gesture sliding screen switching is implemented using HTML5 touch events (Touch) and CSS3 animations (Transform, Transition). The rendering is as shown below. This article briefly talks about its implementation principles and main ideas.
1. Implementation principle
Assume there are 5 pages, each page occupies 100% of the screen width, create a p container viewport, set its width (width) to 500%, then load the 5 pages into the container, and divide the 5 pages equally For the entire container, finally set the default position of the container to 0 and set the overflow to hidden, so that the screen displays the first page by default.
<p> </p><p> </p><h3 id="页面">页面-1</h3> <p> </p><h3 id="页面">页面-2</h3> <p> </p><h3 id="页面">页面-3</h3> <p> </p><h3 id="页面">页面-4</h3> <p> </p><h3 id="页面">页面-5</h3>
CSS style:
.viewport{ width: 500%; height: 100%; display: -webkit-box; overflow: hidden; //pointer-events: none; //这句话会导致整个页面上的点击事件失效,如需绑定点击事件,请注掉 -webkit-transform: translate3d(0,0,0); backface-visibility: hidden; position: relative; }
Register touchstart, touchmove and touchend events. When your finger slides on the screen, use CSS3 transform to set the position of the viewport in real time. For example, to display the second page, set the viewport's transform: translate3d(100%,0,0) That’s it, here we use translate3d instead of translateX. translate3d can actively turn on the mobile phone’s GPU to accelerate rendering, making the page slide more smoothly.
2. Main ideas
From placing your finger on the screen, sliding your finger, and then leaving the screen, it is a complete operation process. The corresponding operation will trigger the following events:
Put your finger on the screen: ontouchstart
Finger sliding on the screen: ontouchmove
Finger leaves the screen: ontouchend
We need to capture these three stages of touch events to complete the sliding of the page:
ontouchstart: Initialize variables, record the location of the finger, and record the current time
/*手指放在屏幕上*/ document.addEventListener("touchstart",function(e){ e.preventDefault(); var touch = e.touches[0]; startX = touch.pageX; startY = touch.pageY; initialPos = currentPosition; //本次滑动前的初始位置 viewport.style.webkitTransition = ""; //取消动画效果 startT = new Date().getTime(); //记录手指按下的开始时间 isMove = false; //是否产生滑动 }.bind(this),false);
ontouchmove: Get the current position, calculate the movement difference deltaX of the finger on the screen, and then make the page follow the movement
/*手指在屏幕上滑动,页面跟随手指移动*/ document.addEventListener("touchmove",function(e){ e.preventDefault(); var touch = e.touches[0]; var deltaX = touch.pageX - startX; var deltaY = touch.pageY - startY; //如果X方向上的位移大于Y方向,则认为是左右滑动 if (Math.abs(deltaX) > Math.abs(deltaY)){ moveLength = deltaX; var translate = initialPos + deltaX; //当前需要移动到的位置 //如果translate>0 或 = maxWidth){ //移动页面 this.transform.call(viewport,translate); isMove = true; } direction = deltaX>0?"right":"left"; //判断手指滑动的方向 } }.bind(this),false);
ontouchend: When the finger leaves the screen, calculate which page the screen ends up on. First, calculate the dwell time deltaT of the finger on the screen. If deltaT
(1) If it is a quick slide, let the current page stay completely in the center of the screen (you need to calculate how much of the current page needs to be slid)
(2) If it is a slow sliding, you also need to judge the distance of the finger sliding on the screen. If the sliding distance does not exceed 50% of the screen width, you need to go back to the previous page. Otherwise, you need to stay on the current page
/*手指离开屏幕时,计算最终需要停留在哪一页*/ document.addEventListener("touchend",function(e){ e.preventDefault(); var translate = 0; //计算手指在屏幕上停留的时间 var deltaT = new Date().getTime() - startT; if (isMove){ //发生了左右滑动 //使用动画过渡让页面滑动到最终的位置 viewport.style.webkitTransition = "0.3s ease -webkit-transform"; if(deltaT 0 ? 0 : translate; //左边界 translate = translate 0 ? 0 : translate; translate = translate <p> In addition, it is also necessary to calculate which page the current page is and set the current page number </p><pre class="brush:php;toolbar:false">//计算当前的页码 pageNow = Math.round(Math.abs(translate) / pageWidth) + 1; setTimeout(function(){ //设置页码,DOM操作需要放到子线程中,否则会出现卡顿 this.setPageNow(); }.bind(this),100);
These are the basic ideas. Of course, there are some details that need to be paid attention to during the actual operation. I won’t go into details here. They are all reflected in the code. The source code has been transferred to Git: https://github.com/git -onepixel/guesture, interested students are welcome to discuss together
The above is the detailed content of H5 single page gesture sliding screen switching principle. For more information, please follow other related articles on the PHP Chinese website!

HTML5introducesnewinputtypesthatenhanceuserexperience,simplifydevelopment,andimproveaccessibility.1)automaticallyvalidatesemailformat.2)optimizesformobilewithanumerickeypad.3)andsimplifydateandtimeinputs,reducingtheneedforcustomsolutions.

H5 is HTML5, the fifth version of HTML. HTML5 improves the expressiveness and interactivity of web pages, introduces new features such as semantic tags, multimedia support, offline storage and Canvas drawing, and promotes the development of Web technology.

Accessibility and compliance with network standards are essential to the website. 1) Accessibility ensures that all users have equal access to the website, 2) Network standards follow to improve accessibility and consistency of the website, 3) Accessibility requires the use of semantic HTML, keyboard navigation, color contrast and alternative text, 4) Following these principles is not only a moral and legal requirement, but also amplifying user base.

The H5 tag in HTML is a fifth-level title that is used to tag smaller titles or sub-titles. 1) The H5 tag helps refine content hierarchy and improve readability and SEO. 2) Combined with CSS, you can customize the style to enhance the visual effect. 3) Use H5 tags reasonably to avoid abuse and ensure the logical content structure.

The methods of building a website in HTML5 include: 1. Use semantic tags to define the web page structure, such as, , etc.; 2. Embed multimedia content, use and tags; 3. Apply advanced functions such as form verification and local storage. Through these steps, you can create a modern web page with clear structure and rich features.

A reasonable H5 code structure allows the page to stand out among a lot of content. 1) Use semantic labels such as, etc. to organize content to make the structure clear. 2) Control the rendering effect of pages on different devices through CSS layout such as Flexbox or Grid. 3) Implement responsive design to ensure that the page adapts to different screen sizes.

The main differences between HTML5 (H5) and older versions of HTML include: 1) H5 introduces semantic tags, 2) supports multimedia content, and 3) provides offline storage functions. H5 enhances the functionality and expressiveness of web pages through new tags and APIs, such as and tags, improving user experience and SEO effects, but need to pay attention to compatibility issues.

The difference between H5 and HTML5 is: 1) HTML5 is a web page standard that defines structure and content; 2) H5 is a mobile web application based on HTML5, suitable for rapid development and marketing.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Atom editor mac version download
The most popular open source editor

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
