Кастомный Select на CSS и JS. Custom HTML Select.

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 พ.ย. 2024

ความคิดเห็น • 87

  • @kirillbaryba746
    @kirillbaryba746 5 ปีที่แล้ว +5

    Спасибо за видео, неплохо сюда добавить закрытие селекта при аут клике

    • @Frontcoder
      @Frontcoder  5 ปีที่แล้ว

      Добрый день. Спасибо за ваш комментарий. Рад, что вам понравилось!

    • @vitalb7907
      @vitalb7907 4 ปีที่แล้ว

      @@Frontcoder Да, пожалуйста сделайте еще урок что бы закрыть селект вне клика самого селекта. 4 часа потратил - так и не нашел способ

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว +2

      посмотри по ссылке, если еще актуально

  • @marinakoltsova6919
    @marinakoltsova6919 ปีที่แล้ว

    Відео супер! Одне задоволення вчитись по таким відео. Все просто та зрозуміло!

    • @Frontcoder
      @Frontcoder  8 หลายเดือนก่อน

      Рад, что вам понравилось!

  • @ssr.1989
    @ssr.1989 ปีที่แล้ว

    Спасибо большое! Всё чётко и понятно, без воды!!!

    • @Frontcoder
      @Frontcoder  8 หลายเดือนก่อน

      Рад, что вам понравилось

  • @kv3453
    @kv3453 ปีที่แล้ว

    Классно только потом ариа-роли и атрибуты пол дня прописывать придеться 🙂

  • @SuperWolchara
    @SuperWolchara 26 วันที่ผ่านมา

    Это замечательно, но если контейнер с айтемсами по высоте будет больше чем основной родительский блок селекта то он спровоцирует скрол и будет убога. Базовый селект не ломает разметку если он не помещается он как будто поверх всех узлов, ограничен только окном. Можно конечно привязаться к ресайзу через js и оперировать положением контейнера айтемсов

  • @oleg_andrianov
    @oleg_andrianov 2 ปีที่แล้ว

    Ты крут, спасибо за подробный гайд.

  • @РусланРусалкин-х7ш
    @РусланРусалкин-х7ш 3 ปีที่แล้ว +1

    Супер. Подписка!

    • @Frontcoder
      @Frontcoder  3 ปีที่แล้ว

      Спасибо за ваш комментарий. Рад, что вам понравилось!

  • @cryptohands
    @cryptohands 4 ปีที่แล้ว +1

    ТОП! искал решение много часов)

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว +1

      Добрый день. Спасибо за ваш комментарий. Рад, что вам нравится

  • @TheSkiveee
    @TheSkiveee 5 ปีที่แล้ว +5

    Хороший урок, но было бы интересно увидеть как его объединить с обычным select'om. То есть чтобы создавая обычный select генерировался кастомный и взаимодействовал с ним. Знаю есть куча библиотек, которые это делают, но было бы интересно узнать как написать свой скрипт)

    • @Frontcoder
      @Frontcoder  5 ปีที่แล้ว +1

      Добрый день. Спасибо за ваш комментарий. Рад, что вам понравилось!

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว +6

      codepen.io/leon9208/pen/VwYpJwW
      codepen.io/leon9208/pen/jOEBJgW
      По первой ссылке генерация кастомного селекта, а функционал уже по видео можете сделать, или по второй ссылке, там функционал (работает с клавиатурой + закрывается при клике вне селекта)

    • @MrLutor
      @MrLutor 4 ปีที่แล้ว

      Шахром Мукумов а есть готовый?) совмещённый из двух

    • @MrLutor
      @MrLutor 4 ปีที่แล้ว

      Шахром Мукумов ты красава. Сколько искал норм варианты, но пока твой самый четкий)

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว

      Runar Shakirov нет, но позже сделаю, времени не так много.

  • @egoist2956
    @egoist2956 4 ปีที่แล้ว

    Однозначно лайк!

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว

      Добрый день. Спасибо за ваш комментарий. Рад, что вам понравилось!

  • @keba.01
    @keba.01 ปีที่แล้ว

    Анатолий ваши уроки крутые. Но есть одно но, вы пишите на WebStorm. Было бы круто если, бы вы перешли на VSCode. Потому что большинство пишут именно на нем. Этот редактор понятнее и удобнее по моему личному мнению. Но если вам так нравиться WebStorm то тоже норм!

  • @lotos3529
    @lotos3529 ปีที่แล้ว

    Лучший

    • @Frontcoder
      @Frontcoder  8 หลายเดือนก่อน

      Рад, что вам понравилось!

  • @MrGalyano
    @MrGalyano 4 ปีที่แล้ว

    Огонь! Мне надо сделать выделение первой буквы в селекте, что в стандартном селекте невозможно.

  • @veli4kodima
    @veli4kodima 4 ปีที่แล้ว

    Спасибо за помощь, все оплучилось

  • @evgeniyprowork
    @evgeniyprowork 4 ปีที่แล้ว

    результат выбора айтема можно сохранить в local storage чтобы после обновления страницы сохранялся результат, ну и заодно кнопку дописать чтобы был сброс

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว

      Всегда есть как улучшить)

  • @bapydev
    @bapydev 2 หลายเดือนก่อน

    Еще тут не решена проблема направления раскрытия меню select что бы он не выходил за пределы экрана
    например во вьюпорте если он находится снизу экрана в условной модалке начнет прыгать верстка

  • @andromella_me
    @andromella_me ปีที่แล้ว +1

    Почему то у меня функция selectChoose не работает ??? Можете помочь...

    • @andromella_me
      @andromella_me ปีที่แล้ว

      Есть ли другой вариант?

  • @dariaatom1442
    @dariaatom1442 3 ปีที่แล้ว +2

    Добрый день! Подскажите, как сделать, чтобы список закрывался при нажатии вне селекта?

  • @pavelpavlov4321
    @pavelpavlov4321 2 ปีที่แล้ว

    Здравствуйте. Подскажите, почему у меня в дефолтном состоянии селект всегда раскрыт?

  • @oleg_kishinskii
    @oleg_kishinskii 4 ปีที่แล้ว

    поему let select, а не const select? ведь внутри select лежит функция, которая меняться не будет?

  • @denissaleksejenko9928
    @denissaleksejenko9928 3 ปีที่แล้ว +8

    Ну это не кастомный селект, это пародия на селект. tabindex не будет отрабатывать, в form собираться данные оттуда тоже не будут как в нормальном селекте. Было бы правильнее привязаться к невидимому селекту, но увы. А так же в обычном селекте работает навигация, как то очень халтурно вы сделали это

  • @artemsdobnikov259
    @artemsdobnikov259 5 ปีที่แล้ว +3

    Сделайте вторую часть, где кастомный селект будет доступен с клавиатуры
    Цены не было бы Вам)

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว

      меняй элементы с div на button и будет работать с клавиатурой

    • @artemsdobnikov259
      @artemsdobnikov259 4 ปีที่แล้ว +1

      @@Shakhrom-b7d если бы всё так было просто)

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว

      codepen.io/leon9208/pen/jOEBJgW?editors=1010
      я сделал так

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว

      ​@@artemsdobnikov259 так я дал ссылку, не подходит?

  • @KrZn104
    @KrZn104 4 ปีที่แล้ว

    Спасибо за ролик! А подскажи пожалуйста, как сделать так, чтобы ты кликнул на элемент - это элемент выбрался по умолчанию и при следующем клике он как-то выделялся, например текст выбранного элемента по умолчанию был полужирный или с каким-нибудь hover эффектом?

    • @Vadim-pp6hg
      @Vadim-pp6hg 3 ปีที่แล้ว

      Тогда при выборе пункта нужно его подсветить (а остальные сбросить до вида по-умолчанию, чтобы не было десятка подсвеченных пунктов)

  • @MrLutor
    @MrLutor 4 ปีที่แล้ว +3

    как потом данные отправить по submit? получится создать невидимый инпут и его value присвоить innerText для current?

    • @AndPol0783
      @AndPol0783 3 ปีที่แล้ว +1

      Да, так и делать. Невидимый инпут и скрипт, который будет записывать выбранный пункт в этот инпут. В jQuery для этого потребуется одна коротенькая строчка.)

    • @MrLutor
      @MrLutor 3 ปีที่แล้ว +1

      Так и реализовал) правда без jQuery, на его смену пришли другие) я его уважаю за вклад в развитие языка, но в 2020 его юзать не очень рационально, на мой взгляд. Современные фичи языка позволяют вполне просто писать, останется только через бейбл прогнать (если прям так сильно нужно нативным js реализовать). Но сейчас много библиотек классных и фреймворков, которые классно упрощают жизнь. Тот же вью подключил как jQuery через cdn и печали не знаешь)

    • @dariaatom1442
      @dariaatom1442 3 ปีที่แล้ว

      @@AndPol0783 можете подсказать какая строчка?

  • @Мирослав-л5ш
    @Мирослав-л5ш 4 ปีที่แล้ว

    Я так понимаю в IE этот селекст работать не будет, да? И можно ли так обходить уже IE(забивать). И если нужна поддержка IE то jQuery или делать кастомный функционал (addClass, и тд)? Спасибо. Видео супер!

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว

      Есть babel для этого

  • @Artem-bt1cx
    @Artem-bt1cx 3 ปีที่แล้ว

    Картинки выводить не будет?(

  • @Андрей-й9ц6я
    @Андрей-й9ц6я 5 ปีที่แล้ว +9

    А как у этого селектора с доступностью? ;)

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว

      О какой доступности идет речь?
      Будет ли работать в мобильных устройствах селект по умолчанию, т.е. не кастомный?

    • @Андрей-й9ц6я
      @Андрей-й9ц6я 4 ปีที่แล้ว

      @@Shakhrom-b7d Доступность в этом контексте подразумевает использование интерфейса людьми с ограниченными возможностями, например, селектор должен быть доступен для управления с клавиатуры, но этим дело не ограничивается. Послушать больше о ней, можно загуглив Вадима Макеева, у него множество докладов о доступности в вебе.

    • @Shakhrom-b7d
      @Shakhrom-b7d 4 ปีที่แล้ว +2

      @@Андрей-й9ц6я Про доступность в курсе, Вадим Макеев в этом вопросе "собаку съел", тоже смотрел/смотрю его доклады и видео на канале. Я тут скидывал вариант того что сделал я: codepen.io/leon9208/pen/VwYpJwW
      1) Возможность управления с Tab + Пробел
      2) Сворачивание по клику вне области
      3) Генерация кастомного select на основе обычного тега select
      - Доступность можно дополнить атрибутами aria.
      - Еще хорошо бы добавить возможность в мобильных приложения использовать встроенный селект, он удобнее.

    • @peachok3564
      @peachok3564 4 ปีที่แล้ว +1

      @@Shakhrom-b7d с телефона этот селект вообще не работает

    • @miraigrafit7865
      @miraigrafit7865 3 ปีที่แล้ว +1

      @@peachok3564 Там css'ом решить можно, просто реальный селект поверх поставить и скрыть вот codepen.io/grafit_0ff/pen/xxgXjpR

  • @alleniverson4736
    @alleniverson4736 4 ปีที่แล้ว

    Удобен ли этот селекта в дальнейшем для бек разработчиков? или при натяжке на WP?

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว

      я не бэк, не могу сказать, но проблем у меня с ним не было при передаче разрабам

  • @Maratreason
    @Maratreason 3 ปีที่แล้ว

    Спасибо!

    • @Frontcoder
      @Frontcoder  3 ปีที่แล้ว

      Спасибо за ваш комментарий. Рад, что вам понравилось!

  • @s8ss8sgamerschannel14
    @s8ss8sgamerschannel14 4 ปีที่แล้ว

    Спасибо за видео то что искал. Вопрос только один возможно ли как то размеры .select за место фиксированного max-width: 200px; сделать резиновым под размеры самого большого текста?

    • @redhook777
      @redhook777 4 ปีที่แล้ว

      min-width: 30px;

  • @MrGalyano
    @MrGalyano 4 ปีที่แล้ว

    еще бы неплохо сделать выделение в выпадающем списке пункта, который выбран на данный момент. Так реализовано в обычном селекте.

  • @MrColins710
    @MrColins710 5 ปีที่แล้ว

    корисний урок, дякую, виявляється можна не викорисовувати сторонні бібліотеки для стилізації select

    • @Frontcoder
      @Frontcoder  5 ปีที่แล้ว

      Добрый день. Спасибо за ваш комментарий. Рад, что вам понравилось!

  • @olegsaltuk1917
    @olegsaltuk1917 ปีที่แล้ว

    и нет закрытия по клику вне селекта

  • @danilabramov9686
    @danilabramov9686 5 ปีที่แล้ว +3

    Не рационально вешать обработчик на каждый элемент внутри селекта. почитай про делегирование событий

    • @stasdre
      @stasdre 5 ปีที่แล้ว

      А если ещё список будет динамическим, то прийдется снова цеплять все обработчики

    • @danilabramov9686
      @danilabramov9686 4 ปีที่แล้ว

      Согласен, но урок, изложенный с задействованием принципа делегирования, затратил бы не намного больше времени и сил на объяснение, а новичкам принес в разы больше пользы, тк этот принцип имеет применение много где в коде, а не только при создании кастомного селекта

    • @peachok3564
      @peachok3564 4 ปีที่แล้ว

      @Валентин Инкогнито таких гайдов и так полно. А показывать плохие практики это в некотором смысле даже вредительство. Человек запомнит один раз и дальше будеть использовать такой способ

  • @aleksandrstaetskiy5687
    @aleksandrstaetskiy5687 4 ปีที่แล้ว

    Интересно, как обработать подобный селект на php, чтоб отправить на сервак эти данные. Спасибо за видео :)

    • @romangrushko6070
      @romangrushko6070 4 ปีที่แล้ว +2

      Делаешь инпут, скрываешь его, когда кликаешь по нужному значение через js даешь значение инпуту

    • @aleksandrstaetskiy5687
      @aleksandrstaetskiy5687 4 ปีที่แล้ว

      Roman Grushko спасибо )

    • @mit7871
      @mit7871 2 ปีที่แล้ว +1

      @@romangrushko6070 бред)

  • @kennyberkoff
    @kennyberkoff 4 ปีที่แล้ว

    Что делать, если текст в рамке не стоит по центре?

    • @Frontcoder
      @Frontcoder  4 ปีที่แล้ว

      Выровнять текст по центру

  • @WEBSTART-LIVE
    @WEBSTART-LIVE 3 ปีที่แล้ว +3

    Такой селект не годится для продакшена. Слишком сырой + никакой доступности. Кто делает тестовые - не копипасьте. Завалят

  • @faizulla5838
    @faizulla5838 3 ปีที่แล้ว

    блин пример вааще на сотке не виден....
    если ты прогаммист, то мобайл ферст....
    надо свои ролики потом смотреть.

  • @максим-м9ж5э
    @максим-м9ж5э 2 ปีที่แล้ว

    ничерта не опнял но селкт застилил

  • @asgard1428
    @asgard1428 3 ปีที่แล้ว +1

    Ничего не понятно в js. Хоть бы показывал и объяснял. Ролик же не для себя делал, а для новичков.