La réorganisation du code HTML à un élément de tableau est une nécessité. Deux modes d'aligner proportionnellement éléments sur une page HTML: coordonnées absolues et relatives coordonnées. Par défaut, HTML utilise des coordonnées relatives, que le navigateur calcule. En coordonnée relative mode, il vous suffit de définir les éléments qui suivent les autres éléments. Utilisant des coordonnées absolues résout les problèmes d'alignement de trois éléments div enfant, mais le reste de la page HTML peut paraître étrangement alignés, car certains éléments risquent de ne pas utiliser absolue coordonnées. La façon simple d'aligner le contenu sur une page HTML en utilisant les coordonnées relatives consiste à utiliser une table. Ainsi, l'algorithme de calibrage se penche sur l'élément div parent, crée une table, et crée une cellule de tableau pour chaque élément div enfant. Certains lecteurs pourraient penser qu'il aurait été plus facile de définir les éléments plutôt div table et ont ensuite l'algorithme de travail avec les éléments du tableau directement. Il est vrai que l'utilisation d'un élément de tableau aurait été plus facile, mais cet algorithme montre comment vous pouvez remplacer les éléments HTML avec de nouveaux éléments HTML. Pour en revenir au code source de la page HTML appelant, le setCharacteristics méthode est appelée une fois FlexBox a été attribué . Vous passez une définition d'objet avec un certain nombre d'objets embarqués à setCharacteristics. Le but de setCharacteristics est de définir la largeur des colonnes proportionnelle des éléments enfants div. Ainsi, l'objet incorporé a un certain nombre de propriétés qui correspondent un-à-tête avec les identifiants des éléments enfants div. Dans l'exemple, l'objet incorporé définit les restrictions suivantes:
• col1: Chaque colonne doit être de 200 pixels de large, et il ya amaximum que d'une seule colonne.
• col2: Chaque colonne doit être de 100 pixels de large, et il ya un maximum de quatre colonnes.
• Col3: Chaque colonne doit être de 200 pixels de large, et il peut y avoir autant de colonnes qu'il ya de l'espace. Pour comprendre les restrictions, vous devez comprendre la nature de l'algorithme de calibrage. L'idée de l'algorithme de calibrage est de définir des proportions qui permettre à une application client à commander du contenu de manière appropriée. En augmentant la largeur du navigateur, vous pouvez assembler des blocs de plus de côté le contenu de l'autre. La lisibilité de la page HTML est amélioré, car il ya moins de défilement, et la page HTML ressemble à celle d'un journal. La différence avec la page HTML est que, contrairement à un journal, le nombre de colonnes affichées dépend de la taille de la fenêtre du client. L'avantage est que si vous regardez sur la page HTML à partir de l'appareil ou d'un UMPC notearticle grand écran, vous obtenez toujours un regard et sentir bon. Cet article et l'accent algorithme de calibrage sur la conscience de donner le feedback page HTML qu'un cellule de tableau a maintenant la place pour un, deux, ou trois colonnes de contenu. Comment faire que le contenu est affiché dépend de la page HTML et est au-delà du champ d'application de l'algorithme de calibrage. Pour en revenir au code source de la page HTML appelant, le setContentCallback fonction est appelée après l'appel setCharacteristics.
Le but de la setContentCallback fonction est de définir un rappel d'utilisateur qui est mis à jour avec les nouvelles informations de l'utilisateur combien de limiter les colonnes peuvent tenir dans une cellule. Dans l'exemple, le code client affiche les paramètres dans la cellule du tableau. Reproportion Pour la table, vous appelez la méthode de mise à jour. La mise à jour première fois est appelé, c'est de l'événement onload corps. L'événement onload corps est tiré qu'une seule fois et ne sera pas appelé de nouveau si le client redimensionne le navigateur du client. Pour avoir la méthode de mise à jour appelée quand le navigateur est redimensionné, l'événement window.onresize est affecté. Dans l'exemple, vous assignez window.onresize updateClientArea à la fonction, qui effectue un appel de méthode unique pour flexbox.update qui, à leur tour, les proportions des mises à jour de la table. Maintenant que la théorie de l'algorithme de calibrage a été expliqué à partir du niveau abstrait , nous allons discuter les détails de l'algorithme de calibrage. Le code suivant montre l'exécution complète de l'algorithme de calibrage. Notez que l'algorithme de calibrage est une implémentation personnalisée, et vous pourriez choisir une stratégie différente dans votre propre situation:
fonction FlexBox (parentIdentifier) (if (typeof (parentIdentifier) == "string") (this.parentIdentifier = document.getElementById (parentIdentifier);) else (= this.parentIdentifier parentIdentifier;) this.table = document.createElement ( "table"); this.table.border = 1; var = TableRow this.table.insertRow (-1); tempArray var = new Array (); for (var c1 = 0; C1 <this.parentIdentifier.childNodes.length; C1 + +) ( tempArray [c1] = this.parentIdentifier.childNodes [c1]; ) for (var c1 = 0; C1 <tempArray.length; C1 + +) ( enfant var = tempArray [c1]; if (child.nodeName.toLowerCase () == "div") ( var cellule = tablerow.insertCell (-1); cell.appendChild (enfant); if (child.id) ( cell.id = child.id; ) ) )this.parentIdentifier.appendChild (this.table);) FlexBox.prototype.setCharacteristics = function (caractéristiques) (this.characteristics caractéristiques =; FlexBox.prototype.setContentCallback = function (cbContent) (this.cbContent = cbContent; FlexBox.prototype. = update function () (var row = this.table.rows [0]; totalCells var = row.cells.length; availableLength var = document.body.clientWidth; for (var index dans this.characteristics) (this.characteristics [ index]. cols = 0;) var Increment; if (this.characteristics.updateAlgorithm) (Incrément = this.characteristics.updateAlgorithm;) else ( Incrément = function (ref) ( takenWidth var = 0; for (var index dans ref.characteristics) ( takenWidth + = ref.characteristics [index]. cols * ref.characteristics [index]. largeur; ) didIncrement var = false; for (var index dans ref.characteristics) ( var obj = ref.characteristics [index]; if ((takenWidth + obj.width) <availableLength) ( if (obj.maxCols) ( if (obj.cols <obj.maxCols) ( obj.cols + +; didIncrement = true; ) ) else ( obj.cols + +; didIncrement = true; ) ) ) if (didIncrement) ( Increment (ref); )) Increment (this); for (var c1 = 0; C1 <row.cells.length; C1 + +) (if (row.Cells [c1]. Id) (var id = row.Cells [c1]. Id; if (this.characteristics [id] & & this.characteristics [] id. largeur) (row.Cells [c1]. width = this.characteristics [] id. this.characteristics largeur * [id]. cols; if (this. cbContent & & this.cbContent.updateContent) (this.cbContent.updateContent (row.Cells [c1], row.Cells [c1]. childNodes [0], this.characteristics [] id. cols, this.characteristics [id]) ;)))))
Pour la plupart, le code ne figurent pas en gras est le support des codes pour le code de gras. La première section de code gras implémente la logique utilisée pour convertir la DIV et éléments div enfant dans une table qui contient les éléments div enfant. La deuxième section de code gras implémente la logique à la proportion des cellules du tableau. Commençons par la dissection du premier bloc de code et la manipulation de la table et des éléments div enfant. Vous pouvez manipuler le DOM dans l'une des deux façons suivantes: Vous pouvez utiliser la propriété innerHTML, ou que vous pouvez manipuler des objets en utilisant des méthodes. Cet article manipule des objets en utilisant les méthodes, parce que cette approche est plus simple. Les éléments div enfant peut contenir certains assez sophistiqué HTML code que vous ne voulez pas la sérialisation et la désérialisation. Utilisation des objets et leur déplacement dans les DOM ne corrompt pas les éléments div enfant. Notez les articles suivants du code:
• Utilisez la méthode document.createElement d'instancier un élément HTML: Le retour HTML instance d'élément est instancié, mais ne fait pas partie de la page HTML et doit être ajoutée.
• Si un élément représente un élément HTML spécifique, comme une table, puis associer le méthodes de l'élément HTML avec cette instance d'élément: Dans l'exemple, une table est instancié, et les lignes des tables de référence.
• Utiliser une variable temporaire pour stocker des éléments avant qu'ils ne soient réorganisés: Rappelez-vous plus tôt, quand j'ai dit que l'algorithme de calibrage n'est pas nécessaire de convertir les éléments div à table? Avant d'aborder l'explication de l'algorithme de calibrage, un avis dans le premier bloc de code en gras façon dont les éléments sont enregistrés dans un tableau temporaire (tempArray) avant être rajoutée au document HTML comme éléments enfants d'une table. Cette étape de sauver des références est temporairement absolument crucial lorsque vous manipulez un modèle objet de document. Si vous n'enregistrez pas temporairement, vous pourriez ressentir certains effets secondaires très funky. Cette étape supplémentaire a été ajouté à cet article pour illustrer la façon de manipuler un document correctement.
• Ajoutez une instance élément HTML à la hiérarchie des pages HTML à l'aide d'une méthode DOM telles comme appendChild: Si l'instance passée à appendChild est un élément déjà présent dans la page HTML, puis appeler une removeChild avant d'appeler appendChild. La vocation de removeChild se passe dans la transparence. Le deuxième bloc de code en gras implémente l'algorithme de partitionner la table. La logique est une technique de force brute qui distribue les largeurs entre les cellules du tableau et voit si la distribution est plus ou moins de la largeur disponible. La meilleure façon d'illustrer la logique est de passer par la page d'exemple HTML. Les restrictions de l'exemple de page HTML ont été décrites sous forme de points en quelques pages en arrière. La logique lit les restrictions et pour la première itération, les tentatives de placer une seule colonne dans chaque cellule du tableau. La largeur de chaque colonne sont additionnées et testé contre la largeur de la zone cliente. Si la largeur ajoutée est inférieure à la largeur de la zone client, puis une autre itération est exécutée. Dans l'exemple, la première cellule du tableau ne peut contenir une largeur de colonne unique. Un autre itération est effectuée, et la seconde Table Count cellule de colonne est incrémenté. Le schéma d'itérations résultats dans un schéma qui ressemble à la colonne compter le texte suivant:
1 1 1 1 2 1 1 2 2 1 3 2 1 3 3 1 4 3 ...
Vous utilisez la technique de la force brute, parce que vous voulez distribuer les colonnes à parts égales entre toutes les cellules du tableau. Si vous voulez utiliser votre propre algorithme de distribution, alors l'instance d'objet passé à la setCharacteristics méthode a besoin d'avoir un updateAlgorithm membre de données. Lors de l'implémentation de votre propre algorithme, gardez à l'esprit que vous voulez distribuer la largeur des colonnes entre les cellules du tableau. Rappelez-vous les choses suivantes:
• Avec la technologie d'aujourd'hui, une grande variété de dispositifs présentent des différences extrêmes de résolution d'écran.
• largeur fixe ou entièrement basées sur des pourcentages pages HTML aussi bonne que sur les dimensions de l'écran spécifique. Si un écran est au-delà de ces dimensions, la page HTML semble mauvais.
• Lorsque vous accueillir différentes résolutions d'écran, envisager la mise en page de manière dynamique dans les dimensions horizontales et verticales. La plupart des pages ne considérer que la page HTML comme étant dynamique dans la dimension verticale.
• Ne pas utiliser des coordonnées absolues lors de l'utilisation des proportions algorithmique, parce que cela requiert de réglage de tous les éléments sur toute la page HTML. Utilisez des coordonnées relatives, qui impliquent des éléments de tableau HTML.
• Lorsque vous déplacez le contenu d'une manière horizontale et verticale, l'utilisation d'un algorithme de distribution qui distribue le contenu de manière égale sur la page HTML.
un article présenté par Sonja Lande
Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article intitulé «Créer mise en page dynamique" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
Online: 261 users browsing the articles directory
|