Maison > interface Web > tutoriel CSS > Comment afficher une liste non ordonnée sur deux colonnes dans les navigateurs modernes et anciens ?

Comment afficher une liste non ordonnée sur deux colonnes dans les navigateurs modernes et anciens ?

Barbara Streisand
Libérer: 2024-12-22 22:58:09
original
199 Les gens l'ont consulté

How to Display an Unordered List in Two Columns Across Modern and Legacy Browsers?

Comment afficher une liste non ordonnée sur deux colonnes

Introduction

Cette question explore les méthodes permettant de présenter une liste non ordonnée sur deux colonnes, en particulier pour l'affichage dans les navigateurs existants comme Internet Explorer.

Navigateurs modernes

Dans les navigateurs modernes, le module de colonnes CSS3 prend en charge la création de colonnes. En utilisant ce module, vous pouvez obtenir la mise en page souhaitée comme suit :

ul {
  columns: 2;
  -webkit-columns: 2;
  -moz-columns: 2;
}
Copier après la connexion

Navigateurs hérités

Pour les navigateurs existants, une solution basée sur JavaScript impliquant une manipulation DOM est nécessaire lorsque le contenu change. Cette solution utilise jQuery pour brièveté :

HTML :

<div>
    <ul class="columns" data-columns="2">
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>D</li>
        <li>E</li>
        <li>F</li>
        <li>G</li>
    </ul>
</div>
Copier après la connexion

JavaScript :

(function($){
    var initialContainer = $('.columns'),
        columnItems = $('.columns li'),
        columns = null,
        column = 1; // account for initial column
    function updateColumns(){
        column = 0;
        columnItems.each(function(idx, el){
            if (idx !== 0 &amp;&amp; idx > (columnItems.length / columns.length) + (column * idx)){
                column += 1;
            }
            $(columns.get(column)).append(el);
        });
    }
    function setupColumns(){
        columnItems.detach();
        while (column++ < initialContainer.data('columns')){
            initialContainer.clone().insertBefore(initialContainer);
            column++;
        }
        columns = $('.columns');
    }

    $(function(){
        setupColumns();
        updateColumns();
    });
})(jQuery);
Copier après la connexion

CSS :

.columns{
    float: left;
    position: relative;
    margin-right: 20px;
}
Copier après la connexion

Remarque :
Initialement, cette solution ordonnera les colonnes comme suit :

A  E
B  F
C  G
D
Copier après la connexion

La question d'origine demandait plutôt un ordre comme celui-ci :

A  B
C  D
E  F
G
Copier après la connexion

Pour cette variante, ajustez le code JavaScript suivant :

function updateColumns(){
    column = 0;
    columnItems.each(function(idx, el){
        if (column > columns.length){
            column = 0;
        }
        $(columns.get(column)).append(el);
        column += 1;
    });
}
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal