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

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

DDD
DDDoriginal
2024-12-20 07:35:09507parcourir

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

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

Navigateurs modernes

Pour afficher une liste non ordonnée sur deux colonnes dans les navigateurs modernes , utilisez les colonnes CSS3 module :

CSS :

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

[Démo JSFiddle](http://jsfiddle.net/HP85j/8/)

Navigateurs hérités

Pour la prise en charge d'Internet Explorer, les manipulations JavaScript et DOM sont nécessaire :

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>

JavaScript (jQuery) :

(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 && 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);

CSS :

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

Remarque : La fonction JavaScript initiale classe les colonnes comme suit :

A  E
B  F
C  G
D

Pour ordonner les colonnes comme demandé par l'OP :

A  B
C  D
E  F
G

Modifiez la fonction updateColumns en :

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