J'ai rencontré des dizaines de scripts dans lesquels html est echo
au lieu d'être stocké. Je me demande si c'est généralement une bonne pratique de toujours de stocker le code HTML dans une chaîne en raison de la nature flexible?Dois-je toujours stocker une chaîne de HTML au lieu d'en imprimer des parties à la fois?
Un exemple aléatoire serait que j'ai une fonction qui retourne le html pour une sous-navigation dynamique. Je l'impression de la balise div d'ouverture, l'impression du contenu de celui-ci, et l'impression puis la balise div fin séparément:
<div id="nav">
<?php echo $nav->getHTML();?>
</div>
Cependant, je dois maintenant attribuer une classe spéciale aux #nav
div, selon que le montant des éléments de la liste et la somme des caractères à l'intérieur de $nav->getHTML()
dépasse un certain montant, afin d'attribuer séparément un différent line-height
et height
. Pour cela, je dois le charger dans un DOMDocument
et utiliser DOMXpath
et faire quelques évaluations. Je pense, ne devrait-il pas être préférable de toujours stocker quelque chose comme ça pour rendre les choses plus flexibles pour les futures demandes qui nécessitent une manipulation de chaîne? Ou suis-je tout simplement inutile? Ou peut-être que je vais à ce sujet dans le mauvais sens, et besoin de refactoriser ma classe pour faire le DOM interroger à l'intérieur plutôt qu'à l'extérieur?
EDIT: Après déterminer si les ul
s'étendront sur plusieurs lignes (ce qui est une liste horizontale) basée sur une limite de caractères (disons 200) Je vais ajouter une classe spéciale à l'élément et de #nav
puis faire le style en CSS.
Clause de non-responsabilité: Je ne veux pas du tout compter sur JS. Je suis conscient que je peux le résoudre, mais je veux qu'il soit immédiatement rendu correctement.
La résolution de cette purement CSS est impossible. Je manipulais dynamiquement une position absolue "ul" qui doit coller au bas d'un autre élément S'il y a plusieurs rangées de 'li's alors j'ai besoin de changer la hauteur et la hauteur de ligne de' ul' Ceci doit aussi être compatible avec tous les navigateurs Je ne peux pas "savoir" de manière dynamique si le "ul" couvre plusieurs lignes ou pas avec du code purement CSS –
Pourquoi pas? bs. positionné en bas nécessite un fond: 0; il ne nécessite pas de hauteur. Si vous définissez un style intelligent (affichage: inline-block, overflow: auto, à l'UL, et float: à gauche, aux LI), alors les li devraient s'enrouler sur une nouvelle ligne comme s'ils étaient des mots dans un paragraphe, et votre ul maintiendrait une hauteur de fluide. Vous pouvez également utiliser jQuery pour faciliter les calculs visuels, en ajoutant chaque li à l'UL tant que sa largeur totale calculée est inférieure à la largeur de l'ul, et en multipliant la hauteur de l'ul en conséquence. – dmrnj