Maison  >  Article  >  interface Web  >  À propos de la méthode d'implémentation du défilement d'une seule page/plein écran similaire à la page complète dans js natif

À propos de la méthode d'implémentation du défilement d'une seule page/plein écran similaire à la page complète dans js natif

不言
不言original
2018-06-26 15:37:591706parcourir

Cet article présente principalement la méthode d'implémentation consistant à utiliser js natif pour obtenir un défilement plein écran similaire à celui d'une page entière. L'exemple de code complet est donné dans l'article. Je pense qu'il a une certaine valeur de référence pour la compréhension et l'apprentissage de tous les amis qui en ont besoin. il peut y faire référence. Pour référence, jetons un œil ci-dessous.

Avant-propos

Les pages défilantes d'une seule page/plein écran sont de plus en plus courantes. Elles sont principalement utilisées pour des pages simples avec moins de contenu, telles que les introductions de produits et. recrutement. De nombreux plug-ins jQuery sont apparus pour cet effet. L'effet obtenu dans cet article est similaire au défilement d'une page entière sur un seul écran. Il est implémenté à l'aide de JS natif et ne repose sur aucune bibliothèque js ; 🎜>code css :

html,body {height:100%;}
body {margin:0px;}
p {height:100%;}

code html :

<p style="background:#FEE;"></p>
<p style="background:#EFE;"></p>
<p style="background:#EEF;"></p>
<p style="background:red;"></p>

code js :

document.addEventListener("DOMContentLoaded", function() {
 var body = document.body,
 html = document.documentElement;
 var itv, height = document.body.offsetHeight;
 var page = scrollTop() / height | 0;
 //窗口大小改变事件
 addEventListener("resize", onresize, false);
 onresize();
 //滚轮事件
 document.body.addEventListener(
 "onwheel" in document ? "wheel" : "mousewheel",
 function(e) {
  clearTimeout(itv);
  itv = setTimeout(function() {
  var delta = e.wheelDelta / 120 || -e.deltaY / 3;
  page -= delta;
  var max = (document.body.scrollHeight / height | 0) - 1;
  if (page < 0) return page = 0;
  if (page > max) return page = max;
  move();
  }, 100);
  e.preventDefault();
 }
 );
 //平滑滚动
 function move() {
 var value = height * page;
 var diff = scrollTop() - value;
 (function callee() {
  diff = diff / 1.2 | 0;
  scrollTop(value + diff);
  if (diff) itv = setTimeout(callee, 16);
 })();
 };
 //resize事件
 function onresize() {
 height = body.offsetHeight;
 move();
 };
 //获取或设置scrollTop
 function scrollTop(v) {
 if (v == null) return Math.max(body.scrollTop, html.scrollTop);
 else body.scrollTop = html.scrollTop = v;
 };
});
Ce qui précède est l'intégralité du contenu de cet article. j'espère que cela sera utile à l'étude de tout le monde. Plus connexes Veuillez faire attention au site Web PHP chinois pour le contenu !

Recommandations associées :

Comment utiliser JS pour déterminer si l'iframe est chargé


Comment utiliser JS pour implémenter une fenêtre pop-up de paiement WeChat Fonction


À propos de JavaScript pour créer un diagramme en boîte simple


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn