Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS?

<!DOCTYPE html>

<html>

    <head>

        <style>

            h2 {

                color:green;

            }

            select {

                -webkit-appearance: none;

                -moz-appearance: none;

                -ms-appearance: none;

                appearance: none;

                outline: 0;

                background: green;

                background-image: none;

                border:1px solid black;

            }

            .select {

                position: relative;

                display: block;

                width: 20em;

                height: 3em;

                line-height: 3;

                background: #2C3E50;

                overflow: hidden;

                border-radius: .25em;

            }

            select {

                width: 100%;

                height: 100%;

                margin: 0;

                padding: 0 0 0 .5em;

                color: #fff;

                cursor: pointer;

            }

            select::-ms-expand {

                display: none;

            

            .select::after {

                content: '\25BC';

                position: absolute;

                top: 0;

                right: 0;

                bottom: 0;

                padding: 0 1em;

                background: #34495E;

                pointer-events: none;

            }

            .select:hover::after {

                color: #F39C12;

            }

              

            

            .select::after {

                -webkit-transition: .25s all ease;

                -o-transition: .25s all ease;

                transition: .25s all ease;

            }

        </style>

    </head>

    <body>

        <center>

        <h2>GeeksforGeeks</h2>

        <div class="select">

            <select name="slct" id="slct">

                <option>Computer Science Subjects</option>

                <option value="1">Operating System</option>

                <option value="2">Computer Networks</option>

                <option value="3">Data Structure</option>

                <option value="4">Algorithm</option>

                <option value="5">C programming</option>

                <option value="6">JAVA</option>

            </select>

        </div>

        </center>

    </body>

</html>                             

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… списков

ЦСлью сСгодняшнСго ΡƒΡ€ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ списки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS ΠΈ jQuery. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡΡ‚ΡŒ списков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ΄Π΅ΠΉ. Π’ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠ΄Π° Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Π΅Π½Π΄Π΅Ρ€Π½Ρ‹Ρ… прСфиксов, Π½ΠΎ ΠΈΡ… смоТСтС Π½Π°ΠΉΡ‚ΠΈ Π² исходных Ρ„Π°ΠΉΠ»Π°Ρ….  

 

 

 

  • Π’Π°ΠΊΠΆΠ΅ Π² ΡƒΡ€ΠΎΠΊΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ box-model, Π³Π΄Π΅   [width]= [element-width]+ [padding]+ [borders]. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ‚Π°:

    *,
    *:after,
    *:before {
        box-sizing: border-box;
    }

Π‘ Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ?

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ с Ρ‚Π΅Π³Π°ΠΌ span ΠΈ нСупорядочСнный список для  Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. 

 

<div>
    <span>I'm kinda the label!</span>
    <ul>
        <li>I'm hidden!</li>
        <li>Me too!</li>
        <li>So do I.</li>
    </ul>
</div>

JAVASCRIPT

Для выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JavaScript. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡ‚ΠΎ основной JS  Π΄Π»Ρ всСх ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π΅ΠΌΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΅Π³ΠΎ ΡΠ΅ΠΉΡ‡Π°Ρ. 

//...

obj.dd.on('click', function(event){
    $(this).toggleClass('active');
    return false;
});

//...

$(function() {

    var dd = new DropDown( $('#dd') );

    $(document).click(function() {
        // all dropdowns
        $('.wrapper-dropdown-1').removeClass('active');
    });
});

 

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот скрипт? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ класс .active, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° элСмСнтС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ссли ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ этот  ΠΊΠ»Π°ΡΡ, ΠΎΠ½ добавляСт Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ, Ссли Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ являСтся Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСня β€” соотвСтствСнно удаляСт Π΅Π³ΠΎ. Π’ΠΎ -Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΠ½ позволяСт Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ список ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° ΡΠΊΡ€Π°Π½Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ  ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для создания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²!

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

Нам Π½ΡƒΠΆΠ½ΠΎ нСсколько Π²Π΅Ρ‰Π΅ΠΉ: класс wrapper, (скрытый) Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список, ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ помСстим Π² Ρ‚Π΅Π³ span. Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€Ρ. 

 

<div tabindex="1">
    <span>Gender</span>
    <ul>
        <li><a href="#">Male</a></li>
        <li><a href="#">Female</a></li>
    </ul>
</div>

CSS

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° стили, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.  ΠΠ°Ρ‡Π½Π΅ΠΌ Ρ  wrapper:

 

.wrapper-dropdown {
    /* Size and position */
    position: relative; /* Enable absolute positioning for children and pseudo elements */
    width: 200px;
    padding: 10px;
    margin: 0 auto;

    /* Styles */
    background: #9bc7de;
    color: #fff;
    outline: none;
    cursor: pointer;
    /* Font settings */
    font-weight: bold;
}

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ установили ΡˆΠΈΡ€ΠΈΠ½Ρƒ нашСй Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ paddings ΠΈ margins. Π”Π°Π»Π΅Π΅, ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стили. Π˜, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ устанавливаСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΡˆΡ€ΠΈΡ„Ρ‚Π°. Π”Π°Π»ΡŒΡˆΠ΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ стили для Π½Π°Π·Π²Π°Π½ΠΈΡ. 

.wrapper-dropdown:after{

    content: "";
    width: 0;
    height: 0;
    position: absolute;
    right: 16px;
    top: 50%;
    margin-top: -6px;
    border-width: 6px 0 6px 6px;
    border-style: solid;
    border-color: transparent #fff;
}

Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π²ΡΠ΅ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ css ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСбольшой Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π£ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π½ΠΎ Π±Π΅Π· стрСлки для Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ списка, ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с нашим ΡΠΏΠΈΡΠΊΠΎΠΌ!

.wrapper-dropdown-1.dropdown{

    /* Size & position */
    position: absolute;
    top: 100%;
    left: 0; /* Size */
    right: 0; /* Size */

    /* Styles */
    background: #fff;
    font-weight: normal; /* Overwrites previous font-weight: bold; */
    /* Hiding */
    opacity: 0;
    pointer-events: none;
}

Π§Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали? ΠœΡ‹ Π·Π°Π΄Π°Π»ΠΈ для списка Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ поставили Π΅Π³ΠΎ ΠΏΠΎΠ·Π°Π΄ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ  (top: 100%;). ΠœΡ‹ Π·Π°Π΄Π°Π»ΠΈ для Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ с значСниями  left ΠΈ right β€” ΠΎ. И Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ являСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ β€” скрыли Π΅Π³ΠΎ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎ 0. Бвойство pointer-events:none, Π½ΠΎ ΡΡ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π΅Ρ‚. 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ нСсколько стилСй для списка ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ²:

.wrapper-dropdown-1 .dropdown li a {
    display: block;
    text-decoration: none;
    color: #9e9e9e;
    padding: 10px 20px;
}
/* Hover state */
.wrapper-dropdown-1 .dropdown li:hover a {
    background: #f3f8f8;
}

Π˜Ρ‚Π°ΠΊ, Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈ скрытыС элСмСнты Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ мСню. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ посмотри Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ мСню, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. 

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ класс .active ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого класса ΠΌΡ‹ смогли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ наш CSS.

 

/* Active state */
.wrapper-dropdown-1.active .dropdown {
    opacity: 1;
    pointer-events: auto;
}

.wrapper-dropdown-1.active:after {
    border-color: #9bc7de transparent;
    border-width: 6px 6px 0 6px ;
    margin-top: -3px;
}
.wrapper-dropdown-1.active {
  background: #9bc7de;
  background: linear-gradient(to right, #9bc7de 0%, #9bc7de 78%, #ffffff 78%, #ffffff 100%);
}

Π—Π΄Π΅ΡΡŒ происходит Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

  • Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список, установив opacity Π½Π° 1. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ для pointer-event установит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅  auto. 
  • Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ мСняСм Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ†Π²Π΅Ρ‚ малСнькой ΡΡ‚Ρ€Π΅Π»ΠΊΠΈ.
  • Π—Π°Ρ‚Π΅ΠΌ измСняСм Ρ„ΠΎΠ½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚. 

JavaScript

ПослСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ JavaScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅. 

function DropDown(el) {
    this.dd = el;
    this.placeholder = this.dd.children('span');
    this.opts = this.dd.find('ul.dropdown > li');
    this.val = '';
    this.index = -1;
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;

        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            return false;
        });
        obj.opts.on('click',function(){
            var opt = $(this);
            obj.val = opt.text();
            obj.index = opt.index();
            obj.placeholder.text('Gender: ' + obj.val);
        });
    },
    getValue : function() {
        return this.val;
    },
    getIndex : function() {
        return this.index;
    }
}

 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

<div>Sign in with
    <ul>
        <li><a href="#"><i></i>Twitter</a></li>
        <li><a href="#"><i></i>Github</a></li>
        <li><a href="#"><i></i>Facebook</a></li>
    </ul>
</div>

 

<i> ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ FontAwesome. 

CSS

Как ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ со стилСй. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°  left border β€”  5px.

 

.wrapper-dropdown-2 {
    /* Size and position */
    position: relative; /* Enable absolute positioning for children and pseudo elements */
    width: 200px;
    margin: 0 auto;
    padding: 10px 15px;
    /* Styles */
    background: #fff;
    border-left: 5px solid grey;
    cursor: pointer;
    outline: none;
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ малСнькая стрСлка. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅:

.wrapper-dropdown-2:after {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    right: 16px;
    top: 50%;
    margin-top: -3px;
    border-width: 6px 6px 0 6px;
    border-style: solid;
    border-color: grey transparent;
}

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ ΡΠΏΠΈΡΠΊΡƒ. 

.wrapper-dropdown-2 .dropdown {
  /* Size & position */
    position: absolute;
    top: 100%;
    left: -5px;
    right: 0px;

    /* Styles */
    background: white;
    transition: all 0.3s ease-out;
    list-style: none;
    /* Hiding */
    opacity: 0;
    pointer-events: none;
}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π° transition, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ постСпСнно Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список, Π° Π½Π΅ просто Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.  

.wrapper-dropdown-2 .dropdown li a {
    display: block;
    text-decoration: none;
    color: #333;
    border-left: 5px solid;
    padding: 10px;
    transition: all 0.3s ease-out;
}

.wrapper-dropdown-2 .dropdown li:nth-child(1) a {
    border-left-color: #00ACED;
}

.wrapper-dropdown-2 .dropdown li:nth-child(2) a {
    border-left-color: #4183C4;
}

.wrapper-dropdown-2 .dropdown li:nth-child(3) a {
    border-left-color: #3B5998;
}

.wrapper-dropdown-2 .dropdown li i {
    margin-right: 5px;
    color: inherit;
    vertical-align: middle;
}

/* Hover state */
.wrapper-dropdown-2 .dropdown li:hover a {
    color: grey;
}

Π’ ΠΎΡ‚Ρ€Ρ‹Ρ‚ΠΎΠΌ состоянии стрСлка измСняСт свою ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π° Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ. 

.wrapper-dropdown-2.active:after {
    border-width: 0 6px 6px 6px;
}
.wrapper-dropdown-2.active .dropdown {
    opacity: 1;
    pointer-events: auto;
}

JavaScript

function DropDown(el) {
    this.dd = el;
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;
        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            event.stopPropagation();
        });
    }
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3

This one is probably the one which comes the closest to a regular select element. Indeed, when you pick something, the label’s default value is replaced by the picked value. On a side note: it looks great doesn’t it?

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

<div tabindex="1">
    <span>Transport</span>
    <ul>
        <li><a href="#"><i></i>Classic mail</a></li>
        <li><a href="#"><i></i>UPS Delivery</a></li>
        <li><a href="#"><i></i>Private jet</a></li>
    </ul>
</div>

 

CSS

.wrapper-dropdown-3 {
    /* Size and position */
    position: relative;
    width: 200px;
    margin: 0 auto;
    padding: 10px;

    /* Styles */
    background: #fff;
    border-radius: 7px;
    border: 1px solid rgba(0,0,0,0.15);
    box-shadow: 0 1px 1px rgba(50,50,50,0.1);
    cursor: pointer;
    outline: none;
    /* Font settings */
    font-weight: bold;
    color: #8AA8BD;
}

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ border, Ρ‚Π΅Π½ΠΈ ΠΈ Π·Π°ΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹Π΅ ΡƒΠ³Π»Ρ‹. 

.wrapper-dropdown-3:after {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    right: 15px;
    top: 50%;
    margin-top: -3px;
    border-width: 6px 6px 0 6px;
    border-style: solid;
    border-color: #8aa8bd transparent;
}

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Π½ΡŽ:

.wrapper-dropdown-3 .dropdown {
  /* Size & position */
    position: absolute;
    top: 140%;
    left: 0;
    right: 0;

    /* Styles */
    background: white;
    border-radius: inherit;
    border: 1px solid rgba(0,0,0,0.17);
    box-shadow: 0 0 5px rgba(0,0,0,0.1);
    font-weight: normal;
    transition: all 0.5s ease-in;
    list-style: none;

    /* Hiding */
    opacity: 0;
    pointer-events: none;
}

.wrapper-dropdown-3 .dropdown li a {
    display: block;
    padding: 10px;
    text-decoration: none;
    color: #8aa8bd;
    border-bottom: 1px solid #e6e8ea;
    box-shadow: inset 0 1px 0 rgba(255,255,255,1);
    transition: all 0.3s ease-out;
}

.wrapper-dropdown-3 .dropdown li i {
    float: right;
    color: inherit;
}

.wrapper-dropdown-3 .dropdown li:first-of-type a {
    border-radius: 7px 7px 0 0;
}

.wrapper-dropdown-3 .dropdown li:last-of-type a {
    border-radius: 0 0 7px 7px;
    border: none;
}

/* Hover state */
.wrapper-dropdown-3 .dropdown li:hover a {
    background: #f3f8f8;
}

.wrapper-dropdown-3.dropdown:after{

    content: "";
    width: 0;
    height: 0;
    position: absolute;
    bottom: 100%;
    right: 15px;
    border-width: 0 6px 6px 6px;
    border-style: solid;
    border-color: #fff transparent;
}
.wrapper-dropdown-3 .dropdown:before {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    bottom: 100%;
    right: 13px;
    border-width: 0 8px 8px 8px;
    border-style: solid;
    border-color: rgba(0,0,0,0.1) transparent;
}

ΠœΡ‹ создали Π±Π΅Π»Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΡΠΏΠΈΡΠΊΠ°.

Π’ ΠΎΡ‚Ρ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅.  ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ установили ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ</code><code>.dropdown.НСмного большС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ  (0.5s вмСсто 0.3s).  Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,  ΠΌΠ΅Π½ΡŽ открываСтся  ΠΎΡ‡Π΅Π½ΡŒ Π³Π»Π°Π΄ΠΊΠΎ.

.wrapper-dropdown-3.active .dropdown {
    opacity: 1;
    pointer-events: auto;
}

JavaScript

 

function DropDown(el) {
    this.dd = el;
    this.placeholder = this.dd.children('span');
    this.opts = this.dd.find('ul.dropdown > li');
    this.val = '';
    this.index = -1;
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;

        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            return false;
        });
        obj.opts.on('click',function(){
            var opt = $(this);
            obj.val = opt.text();
            obj.index = opt.index();
            obj.placeholder.text(obj.val);
        });
    },
    getValue : function() {
        return this.val;
    },
    getIndex : function() {
        return this.index;
    }
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ список с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. НичСго особСнного, Π½ΠΎ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄Π΅ΠΌΠΎ.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

<div>To do
    <ul>
        <li><input type="checkbox" name="el-1" value="donut"><label for="el-1">Eat a donut</label></li>
        <li><input type="checkbox" name="el-2" value="neighbour"><label for="el-2">Spy on my neighbours</label></li>
        <li><input type="checkbox" name="el-3" value="T-rex"><label for="el-3">Feed my T-Rex</label></li>
    </ul>
</div>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±Π΅Π· ссылок ΠΈ ΠΈΠΊΠΎΠ½ΠΎΠΊ. Π£ наст просто Π΅ΡΡ‚ΡŒ checkbox. 

 

CSS

.wrapper-dropdown-4 {
    /* Size and position */
    position: relative;
    width: 270px;
    margin: 0 auto;
    padding: 10px 10px 10px 30px;
    /* Styles */
    background: #fff;
    border: 1px solid silver;
    cursor: pointer;
    outline: none;
}

НСчСго ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ left padding, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мСсто для красных Π»ΠΈΠ½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, малСнькая стрСлка Π½Π° ΠΏΡ€Π°Π²ΠΎ:

.wrapper-dropdown-4:after {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    right: 10px;
    top: 50%;
    margin-top: -3px;
    border-width: 6px 6px 0 6px;
    border-style: solid;
    border-color: #ffaa9f transparent;
}

Π’Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΌΠ΅Π½ΡŽ:

.wrapper-dropdown-4 .dropdown {
    /* Size & position */
    position: absolute;
    top: 100%;
    margin-top: 1px; /* border of wrapper */
    left: -1px;
    right: -1px;

    /* Styles */
    background: white;
    border: 1px solid silver;
    border-top: none;
    list-style: none;
    transition: all 0.3s ease-out;
    /* Hiding */
    opacity: 0;
    pointer-events: none;
}

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒmargin-top Π² 1px.

.wrapper-dropdown-4 .dropdown li {
    position: relative; /* Enable absolute positioning for checkboxes */
}

.wrapper-dropdown-4 .dropdown li label {
    display: block;
    padding: 10px 10px 10px 30px; /* Same padding as the button */
    border-bottom: 1px dotted #1ccfcf;
    transition: all 0.3s ease-out;
}

.wrapper-dropdown-4 .dropdown li:last-of-type label {
    border: none;
}

.wrapper-dropdown-4 .dropdown li input /* Checkboxes */ {
    position: absolute;
    display: block;
    right: 10px;
    top: 50%;
    margin-top: -8px;
}

/* Hover state */

.wrapper-dropdown-4 .dropdown li:hover label {
    background: #f0f0f0;
}

/* Checked state */
.wrapper-dropdown-4 .dropdown li input:checked ~ label {
    color: grey;
    text-decoration: line-through;
}

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Ρ„Π»Π°ΠΆΠΎΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ этикСтка становится сСрой ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΠΎΠΉ. ΠŸΡ€ΠΎΡΡ‚ΠΎ, Π½ΠΎ ΡΡ„фСктивная.

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с двумя Ρ‚ΠΎΠ½ΠΊΠΈΠΌΠΈ красными линиями слСва ΠΎΡ‚ нашСй записи. Π•ΡΡ‚ΡŒ Π΄Π²Π° способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это: с псСвдо-элСмСнтами ΠΈ с Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½ΠΈΡ…:

/* Red lines: the pseudo-elements way */
.wrapper-dropdown-4 .dropdown:before,
.wrapper-dropdown-4:before {
    content: "";
    width: 4px;
    height: 100%;
    position: absolute;
    top: 0;
    left: 15px;
    border: 1px solid #ffaa9f;
    border-top: none;
    border-bottom: none;
    z-index: 2;
}

/* OR: */
/* Red lines: the gradients way */

.wrapper-dropdown-4 .dropdown,
.wrapper-dropdown-4 {
  background: linear-gradient(left, white 5%, #ffaa9f 5%, #ffaa9f 5.3%, white 5.3%, white 6.5%, #ffaa9f 6.5%, #ffaa9f 6.8%, white 6.8%);
}
.wrapper-dropdown-4 .dropdown li:hover label {
  background: linear-gradient(left, #f0F0F0 5%, #ffaa9f 5%, #ffaa9f 5.3%, #f0F0F0 5.3%, #f0F0F0 6.5%, #ffaa9f 6.5%, #ffaa9f 6.8%, #f0F0F0 6.8%);
}

 

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСт псСвдо-элСмСнти  (Π΄Π²Π°: ΠΎΠ΄ΠΈΠ½ для ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ для Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню) с Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†. 
Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°. Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅? Π’Сроятно, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эффСкт ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° элСмСнты списка, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, псСвдо-элСмСнты Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ, Ρ‡Π΅ΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹.

 

/* Active state */

.wrapper-dropdown-4.active:after {
    border-width: 0 6px 6px 6px;
}
.wrapper-dropdown-4.active .dropdown {
    opacity: 1;
    pointer-events: auto;
}
JavaScript
function DropDown(el) {
    this.dd = el;
    this.opts = this.dd.find('ul.dropdown > li');
    this.val = [];
    this.index = [];
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;

        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            event.stopPropagation();
        });

        obj.opts.children('label').on('click',function(event){
            var opt = $(this).parent(),
                chbox = opt.children('input'),
                val = chbox.val(),
                idx = opt.index();
            ($.inArray(val, obj.val) !== -1) ? obj.val.splice( $.inArray(val, obj.val), 1 ) : obj.val.push( val );
            ($.inArray(idx, obj.index) !== -1) ? obj.index.splice( $.inArray(idx, obj.index), 1 ) : obj.index.push( idx );
        });
    },
    getValue : function() {
        return this.val;
    },
    getIndex : function() {
        return this.index;
    }
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5

Наш послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€.  

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°
<div tabindex="1">John Doe
    <ul>
        <li><a href="#"><i></i>Profile</a></li>
        <li><a href="#"><i></i>Settings</a></li>
        <li><a href="#"><i></i>Log out</a></li>
    </ul>
</div>
The CSS
.wrapper-dropdown-5 {
    /* Size & position */
    position: relative;
    width: 200px;
    margin: 0 auto;
    padding: 12px 15px;

    /* Styles */
    background: #fff;
    border-radius: 5px;
    box-shadow: 0 1px 0 rgba(0,0,0,0.2);
    cursor: pointer;
    outline: none;
    transition: all 0.3s ease-out;
}
.wrapper-dropdown-5:after { /* Little arrow */
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    top: 50%;
    right: 15px;
    margin-top: -3px;
    border-width: 6px 6px 0 6px;
    border-style: solid;
    border-color: #4cbeff transparent;
}

Π Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ.

.wrapper-dropdown-5 .dropdown {
    /* Size & position */
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;

    /* Styles */
    background: #fff;
    border-radius: 0 0 5px 5px;
    border: 1px solid rgba(0,0,0,0.2);
    border-top: none;
    border-bottom: none;
    list-style: none;
    transition: all 0.3s ease-out;
    /* Hiding */
    max-height: 0;
    overflow: hidden;
}

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ стили для элСмСнтов ΡΠΏΠΈΡΠΊΠ°.

.wrapper-dropdown-5 .dropdown li {
    padding: 0 10px ;
}

.wrapper-dropdown-5 .dropdown li a {
    display: block;
    text-decoration: none;
    color: #333;
    padding: 10px 0;
    transition: all 0.3s ease-out;
    border-bottom: 1px solid #e6e8ea;
}

.wrapper-dropdown-5 .dropdown li:last-of-type a {
    border: none;
}

.wrapper-dropdown-5 .dropdown li i {
    margin-right: 5px;
    color: inherit;
    vertical-align: middle;
}

/* Hover state */
.wrapper-dropdown-5 .dropdown li:hover a {
    color: #57a9d9;
}

Π’ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΡΠΎΡΡ‚оянии:

/* Active state */

.wrapper-dropdown-5.active {
    border-radius: 5px 5px 0 0;
    background: #4cbeff;
    box-shadow: none;
    border-bottom: none;
    color: white;
}

.wrapper-dropdown-5.active:after {
    border-color: #82d1ff transparent;
}
.wrapper-dropdown-5.active .dropdown {
    border-bottom: 1px solid rgba(0,0,0,0.2);
    max-height: 400px;
}

Когда Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, ΠΌΡ‹ мСняСм Π½ΠΈΠΆΠ½ΠΈΠ΅ ΡƒΠ³Π»Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ†Π²Π΅Ρ‚, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ†Π²Π΅Ρ‚ ΡΡ‚Ρ€Π΅Π»ΠΊΠΈ. 

И, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ мСню, ΠΌΡ‹ устанавливаСм макс-высота Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ Π½Π° 400px. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° 500px, 1000px β€” это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

The JavaScript

function DropDown(el) {
    this.dd = el;
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;
        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            event.stopPropagation();
        });
    }
}

ΠžΡ‚ΠΊΠ°Ρ‚Ρ‹

Π£ нас Π΅ΡΡ‚ΡŒ 5 Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… мСню. Но ΠΊΠ°ΠΊ насчСт старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ²?

Π’ ΠΈΠ³Ρ€Ρƒ вступаСт наш Π΄Ρ€ΡƒΠ³  Modernizr. Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Modernizr  β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, которая ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ HTML5 ΠΈ CSS3-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля. 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π°ΠΌΠΈ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… свойства CSS:

/* No CSS3 support */

.no-opacity       .wrapper-dropdown-1 .dropdown,
.no-pointerevents .wrapper-dropdown-1 .dropdown {
    display: none;
    opacity: 1; /* If opacity support but no pointer-events support */
    pointer-events: auto; /* If pointer-events support but no pointer-events support */
}
.no-opacity       .wrapper-dropdown-1.active .dropdown,
.no-pointerevents .wrapper-dropdown-1.active .dropdown {
    display: block;
}

 

Если Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ событий, ΠΌΡ‹ скрываСм Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню простым display: none.

Если Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ событий, ΠΌΡ‹ устанавливаСм pointer-events: auto.

 

Если Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ событий, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ поставили opacity: 1. 

 

Автор ΡƒΡ€ΠΎΠΊΠ°: HUGO GIRAUDEL

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ β€” Π”Π΅ΠΆΡƒΡ€ΠΊΠ°

БSS Бписки



  1. ΠšΠΎΡ„Π΅
  2. Π§Π°ΠΉ
  3. Кока Кола
  • ΠšΠΎΡ„Π΅
  • Π§Π°ΠΉ
  • Кока Кола

Бписок HTML ΠΈ свойства CSS

Π’ HTML ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° основных Π²ΠΈΠ΄Π° списков:

  • Π½Π΅Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ списки <ul>
  • β€” элСмСнты списка ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠΆΠΊΠ°ΠΌΠΈ
  • упорядочСнныС списки <ol>
  • β€” элСмСнты списка ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ

Бвойства списка CSS ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π’Π°ΠΌ:

  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² списка для упорядочСнных списков
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ мноТСство элСмСнтов списка ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² для ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… списков
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² качСствС элСмСнта списка ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° для списков ΠΈ элСмСнта списка

Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² списка

Бвойство list-style-type ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ элСмСнта ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° списка.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· доступных ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² списка:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ul.a {
   list-style-type: circle;
}

ul.b {
   list-style-type: square;
}

ol.c {
   list-style-type: upper-roman;
}

ol.d {
   list-style-type: lower-alpha;
}

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Β»

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: НСсколько ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для нСупорядочСнных списков, ΠΈ нСсколько для упорядочСнных списков.


Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ списка

Бвойство list-style-image опрСдСляСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ элСмСнт ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, списка:


РасполоТСниС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° списка

Бвойство list-style-position опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ элСмСнт списка ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ снаруТи содСрТимого:


Π£Π΄Π°Π»ΠΈΡ‚ΡŒ настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Бвойство list-style-type:none Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для удалСния ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ²/ΠΊΡ€ΡƒΠΆΠΊΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² спискС Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ поля ΠΈ отступы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ margin:0 ΠΈΠ»ΠΈ padding:0 Π² <ul> ΠΈΠ»ΠΈ <ol>:


Бписок β€” сокращСниС свойств

Бвойство list-style свойство сокращСний. Бвойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, для установки всСх свойств списка Π² ΠΎΠ΄Π½ΠΎΠΌ объявлСнии

ΠŸΡ€ΠΈ использовании сокращСния свойства, порядок значСния свойств:

  • list-style-type ( Ссли Π·Π°Π΄Π°Π½ΠΎ свойство list-style-image, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ, Ссли ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ )
  • list-style-position (опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ элСмСнт списока Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ снаруТи содСрТимого)
  • list-style-image (опрСдСляСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² качСствС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° элСмСнта списка)

Если ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств отсутствуСт, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.


Π‘Ρ‚ΠΈΠ»ΡŒ Ρ†Π²Π΅Ρ‚Π° списка

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ списков Ρ†Π²Π΅Ρ‚Π½Ρ‹ΠΌΠΈ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ интСрСсными.

ВсС, Ρ‡Ρ‚ΠΎ добавляСтся ΠΊ Ρ‚Π΅Π³Π°ΠΌ <ol> ΠΈΠ»ΠΈ <ul>, влияСт Π½Π° вСсь список, Π° Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ свойства Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ Π² Ρ‚Π΅Π³ <li> Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты списка:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ol {
   background: #ff9999;
   padding: 20px;
}

ul {
   background: #3399ff;
   padding: 20px;
}

ol li {
   background: #ffe5e5;
   padding: 5px;
   margin-left: 35px;
}

ul li {
   background: #cce5ff;
   margin: 5px;
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

  1. ΠšΠΎΡ„Π΅
  2. Π§Π°ΠΉ
  3. Кока Кола
  • ΠšΠΎΡ„Π΅
  • Π§Π°ΠΉ
  • Кока Кола
Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Β»

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ список с красной Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список с красной Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ списка
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ списка Π±Π΅Π· ΠΊΡ€ΡƒΠΆΠΊΠΎΠ².

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² списка
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты списка ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² Π² CSS.


ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ сСбя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ!


ВсС CSS свойства списка

Π‘Π²ΠΎΠΉΡΡ‚Π²ΠΎΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
list-styleУстанавливаСт всС свойства списка Π² ΠΎΠ΄Π½ΠΎΠΌ объявлСнии
list-style-imageУстанавливаСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² качСствС элСмСнта списка, ΠΌΠ°Ρ€ΠΊΠ΅Ρ€
list-style-positionΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ элСмСнта списка ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ снаруТи содСрТимого
list-style-typeΠ£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ элСмСнта списка, ΠΌΠ°Ρ€ΠΊΠ΅Ρ€

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡ‚ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ списки

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ красивыС Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ списки Π±Π΅Π· использования ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CSS. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° jQuery, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ:

  • Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ прСфиксы Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² для CSS-свойств, Π½ΠΎ Π²Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Π² исходных Ρ„Π°ΠΉΠ»Π°Ρ….
  • Π›ΠΈΡ‡Π½ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ бокс-модСль, Π³Π΄Π΅ [width] = [element-width] + [padding] + [borders]. Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‘ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°:

*,
*:after,
*:before {
    box-sizing: border-box;
}

Π˜Ρ‚Π°ΠΊ, с Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ вопрос: Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для создания Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню? Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ DIV с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ span ΠΈ нСупорядочСнный список для Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню:

<div>
    <span>I’m kinda the label!</span>
    <ul>
        <li>I’m hidden!</li>
        <li>Me too!</li>
        <li>So do I.</li>
    </ul>
</div>

JavaScript

Нам Π½ΡƒΠΆΠ½Π΅Π½ нСбольшой JavaScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наш Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ. Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ JS ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

//…
 
obj.dd.on(β€˜click’, function(event){
    $(this).toggleClass(β€˜active’);
    return false;
});
 
//…
 
$(function() {
 
    var dd = new DropDown( $(β€˜#dd’) );
 
    $(document).click(function() {
        // all dropdowns
        $(β€˜.wrapper-dropdown-1’).removeClass(β€˜active’);
    });
 
});

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это скрипт Π΄Π΅Π»Π°Π΅Ρ‚? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ класс .active, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚Π΅ Π½Π° Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ класс .active, Ρ‚ΠΎ ΠΎΠ½ добавляСтся, Π° Ссли этот класс ΡƒΠΆΠ΅ присвоСн, Ρ‚ΠΎ ΠΎΠ½ удаляСтся.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, скрипт создаСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка, закрывая Π΅Π³ΠΎ, Ссли Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° экранС.

Π§Ρ‚ΠΎ ΠΆ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для создания ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²!

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ простого: простой Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список для указания ΠΏΠΎΠ»Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ:

HTML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

Нам Π½ΡƒΠΆΠ½ΠΎ нСсколько Π²Π΅Ρ‰Π΅ΠΉ: ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° (div с id#dd), (скрытый) Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список ΠΈ Β«Π»Π΅ΠΉΠ±Π»Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ Ρ‚Π΅Π³ΠΎΠΌ span. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ссылки-якоря, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ каТСтся Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ сСмантичСски ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π΅Π³.

<div tabindex=Β»1β€³>
    <span>Пол</span>
    <ul>
        <li><a href=Β»#Β»>ΠœΡƒΠΆΡΠΊΠΎΠΉ</a></li>
        <li><a href=Β»#Β»>ЖСнский</a></li>
    </ul>
</div>

CSS

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ CSS. НачнСм с ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ (Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€Π°):

.wrapper-dropdown {
    /* Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ */
    position: relative; /* Enable absolute positioning for children and pseudo elements */
    width: 200px;
    padding: 10px;
    margin: 0 auto;
 
    /* Ρ†Π²Π΅Ρ‚ ΠΈ Ρ„ΠΎΠ½ */
    background: #9bc7de;
    color: #fff;
    outline: none;
    cursor: pointer;
 
    /* ΡˆΡ€ΠΈΡ„Ρ‚ */
    font-weight: bold;
}

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ сдСлали нСсколько Π²Π΅Ρ‰Π΅ΠΉ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ установили ΡˆΠΈΡ€ΠΈΠ½Ρƒ списка ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отступы. Π”Π°Π»Π΅Π΅, ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ Ρ†Π²Π΅Ρ‚ ΠΈ Ρ„ΠΎΠ½. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ установили ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΡˆΡ€ΠΈΡ„Ρ‚Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ с Β«Π»Π΅ΠΉΠ±Π»ΠΎΠΌΒ», Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ стрСлку справа ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ псСвдо-элСмСнта.

.wrapper-dropdown:after {
    content: «»;
    width: 0;
    height: 0;
    position

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ списка

Π›ΠΎΠ³ΠΎ SiteHere.ru