Maison interface Web js tutoriel Avalonjs crée des compétences d'effets de flux de cascade réactives_javascript

Avalonjs crée des compétences d'effets de flux de cascade réactives_javascript

May 16, 2016 pm 04:00 PM
响应式 瀑布流

La mise en page n'est pas basée sur float, ni sur un positionnement absolu. Il suffit de regarder le html et le css en bas. Il n'y a pas d'insertion html gênante, le code est très rafraîchissant

function getIndex(index) {
  if (index < 10) {
    index = "00" + index;
  } else if (index < 100) {
    index = "0" + index;
  }
  return index;
}
var $ = function(id) {
  return document.getElementById(id);
};
require([ "avalon-min" ], function(avalon) {
  var waterfall = {
      load_items : null,
      loaded_items:[],
      col_num : 0,// 列数
      waterfall_model : null,
      col_width : 200,
      loaded_num : 0,
      init_num : 0,
      loading : false,
      start:0,
      resizing:false,
      find_shortest_col : function() {
      // 找出最小高度的列
        var a = avalon($('row0')).height(), min_i = 0;
        for ( var i = 1; i < this.col_num; i++) {
          var b = avalon($('row' + i)).height();
          if (b < a) {
            min_i = i;
            a = b;
          }
        }
        return min_i;
      },
      init : function(data) {
        this.load_items = data;
        this.loaded_items=this.loaded_items.concat(data);
        this.waterfall_model = waterfall_model;
        this.col_num = Math.floor(avalon(window).width()
            / this.col_width);
        this.init_num = this.col_num;
        for ( var j = 0; j < this.col_num; j++) {
          waterfall_model.img_list.push([]);
        }
        for ( var j = 0; j < this.col_num; j++) {
         // 第一行图片
          var a={};
          a.src=getIndex(data[j].src);
          a.height=data[j].height;
          a.text=data[j].text;
          waterfall_model.img_list[j].push(a);
        }
        this.start=this.col_num;
      },
      add_item : function(i) {
        var a = this.find_shortest_col();
        var b={};
        var c=this.load_items[this.init_num+i];
        if(c){
          b.src=getIndex(c.src);
          b.height=c.height;
          b.text=c.text;
          waterfall_model.img_list[a].push(b);
        }
      },
      resize_item:function(i){
        //console.log(i);
        var a = this.find_shortest_col();
        var b={};
        var c=this.loaded_items[this.init_num+i];
        if(c){
          b.src=getIndex(c.src);
          b.height=c.height;
          b.text=c.text;
          waterfall_model.img_list[a].push(b);
        }
      }
    };
    var waterfall_model = avalon.define("waterfall",function(vm) {// vm
              vm.img_list = [];
              vm.rendered = function() {// 每次图片加载渲染后执行
                 
                if(waterfall.resizing){
                  if (waterfall.loaded_num+ waterfall.init_num<waterfall.loaded_items.length){
                    waterfall.loaded_num++;
                    waterfall.resize_item(waterfall.loaded_num);
                    //waterfall.start++;
                  }
                }else{
                   
                  if (waterfall.loaded_num + waterfall.init_num <waterfall.load_items.length){
                    waterfall.loaded_num++;
                    waterfall.add_item(waterfall.loaded_num);
                    waterfall.start++;
                  }
                }
              };
    });
  avalon.config({
    debug:false
  });
  avalon.scan();
  function debouncer( func , timeout ) {
      var timeoutID , timeout = timeout || 200;
      return function () {
       var scope = this , args = arguments;
       clearTimeout( timeoutID );
       timeoutID = setTimeout( function () {
         func.apply( scope , Array.prototype.slice.call( args ) );
       } , timeout );
      }
    }
  avalon.post("http://localhost/css/test.php&#63;start=0", function(data) {
  // 加载第一次
    waterfall.init(data);
  }, "json");
  window.onscroll =debouncer( function ( e ) {
    var scrollTop = avalon(window).scrollTop(), windowHeight = avalon(
    window).height(), documentHeight = avalon(document).height();
    if (windowHeight + scrollTop==documentHeight) {
        avalon.post("http://localhost/css/test.php&#63;start="+(waterfall.start), function(data) {
        // 加载第一次
        waterfall.resizing=false;
        waterfall.load_items=data;
        waterfall.loaded_items=waterfall.loaded_items.concat(data);
        waterfall.loaded_num =waterfall.init_num=0;
        waterfall.add_item(0);
        }, "json");
    }
  });
  window.onresize = debouncer( function ( e ) {
    var windowWidth = avalon(window).width(), k = Math
    .floor(windowWidth / 200), detect_left = avalon(
    $('waterFallDetect')).offset().left;
    if (Math.abs(detect_left) >= 199) {
      waterfall.col_num = Math.floor(avalon(window).width()
      / waterfall.col_width);
      waterfall_model.img_list = [];
      for ( var j = 0; j < waterfall.col_num; j++) {
        waterfall_model.img_list.push([]);
      }
      waterfall.resizing=true;
      waterfall.loaded_num =waterfall.init_num=0;
      //waterfall.start=0;
      waterfall.resize_item(0);
    }
  },30) ;
});
Copier après la connexion

html

<div id='wrap' ms-controller="waterfall">
  <ul ms-each-els="img_list" id='wrap_row'>
    <li ms-each-el="els" ms-attr-id='row{{$index}}'
      data-each-rendered='rendered'>
      <p>
        <img
          ms-src="http://cued.xunlei.com/demos/publ/img/P_{{el.src}}.jpg"
          width='192' ms-attr-height='{{el.height}}'> <span>{{el.src}}</span>
      </p>
    </li>
    <li id='waterFallDetect' ms-if='$last'></li>
  </ul>
</div>
Copier après la connexion

css

#wrap ul li {
display: inline-block;
*display: inline;
zoom: 1;
vertical-align: top;
font-size: 16px;
}
#wrap ul li p {
margin: 5px 2.5px;
border: 1px solid red;
min-width: 192px;
min-height: 100px;
}
#wrap span {
display: block;
}
#waterFallDetect {
width: 192px;
height: 100px;
border: 1px solid red;
}
Copier après la connexion

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel sur l'utilisation de CSS pour implémenter l'effet carrousel automatique d'images réactives Tutoriel sur l'utilisation de CSS pour implémenter l'effet carrousel automatique d'images réactives Nov 21, 2023 am 08:37 AM

Avec la popularité des appareils mobiles, la conception Web doit prendre en compte des facteurs tels que la résolution de l'appareil et la taille de l'écran des différents terminaux pour offrir une bonne expérience utilisateur. Lors de la mise en œuvre d'un design réactif d'un site Web, il est souvent nécessaire d'utiliser l'effet carrousel d'images pour afficher le contenu de plusieurs images dans une fenêtre visuelle limitée, et en même temps, cela peut également améliorer l'effet visuel du site Web. Cet article expliquera comment utiliser CSS pour obtenir un effet de carrousel automatique d'image réactif, et fournira des exemples de code et une analyse. Idées d'implémentation L'implémentation d'un carrousel d'images réactif peut être réalisée grâce à la mise en page flexible CSS. exister

Comment créer un nuage de tags réactif en utilisant HTML, CSS et jQuery Comment créer un nuage de tags réactif en utilisant HTML, CSS et jQuery Oct 27, 2023 am 10:46 AM

Comment utiliser HTML, CSS et jQuery pour créer un nuage de tags réactif. Un nuage de tags est un élément Web courant utilisé pour afficher divers mots-clés ou balises. Il affiche généralement l’importance des mots-clés dans différentes tailles ou couleurs de police. Dans cet article, nous présenterons comment utiliser HTML, CSS et jQuery pour créer un nuage de tags réactif et donnerons des exemples de code spécifiques. Création de la structure HTML Tout d'abord, nous devons créer la structure de base du nuage de tags en HTML. Vous pouvez utiliser une liste non ordonnée pour représenter les balises

Tutoriel sur la mise en œuvre d'un menu coulissant réactif à l'aide de CSS Tutoriel sur la mise en œuvre d'un menu coulissant réactif à l'aide de CSS Nov 21, 2023 am 08:08 AM

Un didacticiel sur l'utilisation de CSS pour implémenter un menu coulissant réactif nécessite des exemples de code spécifiques. Dans la conception Web moderne, la conception réactive est devenue une compétence essentielle. Pour s'adapter à différents appareils et tailles d'écran, nous devons ajouter un menu réactif au site Web. Aujourd'hui, nous utiliserons CSS pour implémenter un menu coulissant réactif et vous fournirons des exemples de code spécifiques. Jetons d’abord un coup d’œil à la mise en œuvre. Nous allons créer une barre de navigation qui se réduit automatiquement lorsque la largeur de l'écran est inférieure à un certain seuil et s'agrandit en cliquant sur le bouton de menu.

Comment créer une barre de notification à défilement réactive en utilisant HTML, CSS et jQuery Comment créer une barre de notification à défilement réactive en utilisant HTML, CSS et jQuery Oct 26, 2023 pm 12:12 PM

Comment utiliser HTML, CSS et jQuery pour créer une barre de notification à défilement réactive Avec la popularité des appareils mobiles et l'augmentation des exigences des utilisateurs en matière d'expérience d'accès aux sites Web, la conception d'une barre de notification à défilement réactive est devenue de plus en plus importante. La conception réactive garantit que le site Web s'affiche correctement sur différents appareils et que les utilisateurs peuvent facilement visualiser le contenu des notifications. Cet article expliquera comment utiliser HTML, CSS et jQuery pour créer une barre de notification à défilement réactive et fournira des exemples de code spécifiques. Nous devons d’abord créer le HTM

Comment créer une mise en page carrousel réactive en utilisant HTML et CSS Comment créer une mise en page carrousel réactive en utilisant HTML et CSS Oct 20, 2023 pm 04:24 PM

Comment créer une mise en page de carrousel réactif à l'aide de HTML et CSS Les carrousels sont un élément courant dans la conception Web moderne. Il peut attirer l'attention de l'utilisateur, afficher plusieurs contenus ou images et basculer automatiquement. Dans cet article, nous expliquerons comment créer une mise en page carrousel réactive en utilisant HTML et CSS. Tout d’abord, nous devons créer une structure HTML de base et ajouter les styles CSS requis. Ce qui suit est une structure HTML simple : &lt;!DOCTYPEhtml&g

Comment utiliser JavaFX pour créer des interfaces utilisateur réactives dans Java 9 Comment utiliser JavaFX pour créer des interfaces utilisateur réactives dans Java 9 Jul 30, 2023 pm 06:36 PM

Comment utiliser JavaFX pour créer une interface utilisateur réactive dans Java9 Introduction : Dans le processus de développement d'applications informatiques, l'interface utilisateur (UI) est un élément très important. Une bonne interface utilisateur peut améliorer l’expérience utilisateur et rendre l’application plus attrayante. JavaFX est un framework d'interface utilisateur graphique (GUI) sur la plate-forme Java. Il fournit un riche ensemble d'outils et d'API pour créer rapidement des interfaces d'interface utilisateur interactives. En Java 9, JavaFX est devenu un JavaSE

Comment utiliser React pour développer un système de gestion backend réactif Comment utiliser React pour développer un système de gestion backend réactif Sep 28, 2023 pm 04:55 PM

Comment utiliser React pour développer un système de gestion back-end réactif Avec le développement rapide d'Internet, de plus en plus d'entreprises et d'organisations ont besoin d'un système de gestion back-end efficace, flexible et facile à gérer pour gérer leurs opérations quotidiennes. En tant que l'une des bibliothèques JavaScript les plus populaires actuellement, React fournit un moyen concis, efficace et maintenable de créer des interfaces utilisateur. Cet article expliquera comment utiliser React pour développer un système de gestion backend réactif et donnera des exemples de code spécifiques. Créez d'abord un projet React

Conseils pour le développement de sites Web réactifs avec Webman Conseils pour le développement de sites Web réactifs avec Webman Aug 14, 2023 pm 12:27 PM

Conseils pour le développement de sites Web réactifs avec Webman À l'ère numérique d'aujourd'hui, les gens comptent de plus en plus sur les appareils mobiles pour accéder à Internet. Afin d’offrir une meilleure expérience utilisateur et de s’adapter aux différentes tailles d’écran, le développement de sites Web réactifs est devenu une tendance importante. En tant que framework puissant, Webman nous fournit de nombreux outils et technologies pour réaliser le développement de sites Web réactifs. Dans cet article, nous partagerons quelques conseils sur l'utilisation de Webman pour le développement de sites Web réactifs, notamment sur la façon de configurer des requêtes multimédias,

See all articles