Maison >interface Web >tutoriel CSS >Comment puis-je afficher une liste non ordonnée sur deux colonnes à l'aide de CSS et JavaScript ?

Comment puis-je afficher une liste non ordonnée sur deux colonnes à l'aide de CSS et JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 14:34:10970parcourir

How Can I Display an Unordered List in Two Columns Using CSS and JavaScript?

Affichage d'une liste non ordonnée sur deux colonnes

Introduction

Pour les navigateurs modernes, la principale approche pour afficher une liste non ordonnée sur deux colonnes consiste à utiliser l'option Module de colonnes CSS3. Cependant, pour les navigateurs existants tels qu'Internet Explorer, une solution basée sur JavaScript est nécessaire.

Navigateurs modernes

À l'aide du module de colonnes CSS3, vous pouvez simplement ajouter les règles CSS suivantes pour obtenir l'objectif souhaité. effet :

ul {
  columns: 2;
  -webkit-columns: 2;
  -moz-columns: 2;
}

Navigateurs hérités

Pour les navigateurs existants, vous pouvez utiliser une solution JavaScript qui implique DOM manipulations. Voici un exemple de code JavaScript utilisant jQuery :

$(function(){
    var initialContainer = $('.columns'),
        columnItems = $('.columns li'),
        columns = null,
        column = 1;

    function updateColumns(){
        column = 0;
        columnItems.each(function(idx, el){
            if (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');
    }

    setupColumns();
    updateColumns();
});

Et voici le CSS correspondant :

.columns{
    float: left;
    position: relative;
    margin-right: 20px;
}

Option d'affichage des variantes

Le code fourni ci-dessus donne la colonne suivante disposition :

A  E
B  F
C  G
D

Pour réaliser la variante d'aménagement demandée par le OP :

A  B
C  D
E  F
G

Modifiez la fonction updateColumns() comme suit :

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

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