Показать сообщение отдельно
  #4 (permalink)  
Старый 29.03.2021, 18:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Black_Star,
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            margin: 0;
        }

        .form_label {
            position: relative;
            min-height: 88px;
        }

        .form_text {
            vertical-align: top;
            display: block;
            margin-bottom: 6px;
            font-weight: 500;
            font-size: 12px;
            line-height: 16px;
            letter-spacing: .04em;
            color: #686EA1
        }

        .form_text>sup {
            position: relative;
            top: 0;
            font-size: 13px;
        }

        .field_multiselect {
            position: relative;
            width: 100%;
            display: block;
            border: 1px solid #CDD6F3;
            box-sizing: border-box;
            border-radius: 8px;
            padding: 12px 40px 10px 16px;
            outline-color: #CDD6F3;
        }

        .field_multiselect::placeholder {
            color: #A8ACC9;
        }

        .field_multiselect {
            padding-right: 60px;
        }

        .field_multiselect:after {
            content: "";
            position: absolute;
            right: 14px;
            top: 15px;
            width: 6px;
            height: 16px;
            background: url("../images/svg-icons/two-arrows.svg") 50% 50% no-repeat;
        }

        .multiselect_block {
            position: relative;
            width: 100%;
        }

        .field_select {
            position: absolute;
            top: calc(100% - 2px);
            left: 0;
            width: 100%;
            border: 2px solid #CDD6F3;
            border-bottom-right-radius: 2px;
            border-bottom-left-radius: 2px;
            box-sizing: border-box;
            outline-color: #CDD6F3;
        }

        .field_select[multiple] {
            overflow-y: auto;
        }

        .field_select option {
            display: block;
            padding: 8px 16px;
            width: calc(370px - 32px);
        }

        .field_select option:checked {
            background-color: #ECEFF3;
        }

        .field_multiselect button {
            position: relative;
            padding: 7px 34px 7px 8px;
            background: #EBE4FB;
            border-radius: 4px;
        }

        .field_multiselect button:after {
            content: '';
            position: absolute;
            top: 10px;
            right: 10px;
            width: 16px;
            height: 16px;
            background: url("../images/svg-icons/icon-close.svg") 50% 50% no-repeat;
            background-size: contain;
        }

        .multiselect_label {
            position: absolute;
            top: 1px;
            left: 2px;
            width: 100%;
            height: 44px;
            z-index: 3;
        }

        .field_select {
            display: none;
        }

        input.multiselect_checkbox {
            position: absolute;
            right: 0;
            top: 0;
            width: 40px;
            height: 40px;
            border: none;
            opacity: 0;
        }

        .multiselect_checkbox:checked~.field_select {
            display: block;
        }

        .multiselect_checkbox:checked~.multiselect_label {
            width: 40px;
            left: initial;
            right: 4px;
            background: #fff url("../images/svg-icons/icon-close.svg") 50% 50% no-repeat;
        }
    </style>
</head>

<body>
    <div class="form_label">
        <span class="form_text">Products<sup>*</sup></span>
        <div class="multiselect_block">
            <label for="select-1" class="field_multiselect">Products</label>
            <input id="checkbox-1" class="multiselect_checkbox" type="checkbox">
            <label for="checkbox-1" class="multiselect_label"></label>
            <select id="select-1" class="field_select" name="products" multiple style="height: calc(4 * 38px)">
                <option value="Applications">Applications</option>
                <option value="Parental controls">Parental controls</option>
                <option value="VPN">VPN</option>
                <option value="All">All</option>
            </select>
        </div>
    </div>
    <script>
        let multiselect_block = document.querySelectorAll(".multiselect_block");
        multiselect_block.forEach(parent => {
            let label = parent.querySelector(".field_multiselect");
            let select = parent.querySelector(".field_select");
            let text = label.innerHTML;
            select.addEventListener("change", function(element) {
                let selectedOptions = this.selectedOptions;
                label.innerHTML = "";
                for (let option of selectedOptions) {
                    let button = document.createElement("button");
                    button.type = "button";
                    button.className = "btn_multiselect";
                    button.textContent = option.value;
                    button.onclick = _ => {
                        option.selected = false;
                        button.remove();
                        if (!select.selectedOptions.length) label.innerHTML = text
                    }
                    label.append(button)
                };
            })
        })
    </script>
</body>

</html>
Ответить с цитированием