Кастомный выпадающий список Choices

Поделиться
HTML-код
  • Опубликовано: 28 ноя 2022
  • Делаем кастомный select - выпадающий c помощью библиотеки Choices.js без знаний javascript. HTML+CSS+JS
    Choices: github.com/Choices-js/Choices
    👁‍🗨 Телеграм: t.me/frontend_du2
    👁‍🗨 Discord сервер: / discord
    👁‍🗨 VK: frontend_du2
    👁‍🗨 Дзен: dzen.ru/frontend_it

Комментарии • 80

  • @user-fd1um8ku9v
    @user-fd1um8ku9v Год назад

    Александр,спасибо большое,вы очень круто объясняете,я три часа возился с кастомизацией selecta,а посмотрев ваш ролик сделал за 15 минут.Класс.

  • @El_Batono
    @El_Batono Год назад +1

    Пятый раз обращаюсь к твоему видео. Нереально выручаешь, спасибо большое!

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Это самое приятное в моей деятельности )) то, что видео правда помогают. спасибо, что пишите об этом.

  • @alanpuch2243
    @alanpuch2243 Год назад +1

    Александр, благодарю. Очень помогло Ваше видео, всё понятно и доходчиво, хорошая подача материала.

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

      Спасибо за ваш комментарий. Очень приятно, но подачу буду улучшать )) Стремлюсь делать видео лучше :)

  • @user-ub8jf6ok9b
    @user-ub8jf6ok9b Год назад +1

    Александр, спасибо! Проделала сейчас вместе Вами и вспомнила хорошо забытую работу), скучаю по верстке )))

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Спасибо за просмотр и комментарий. Да, я наконец решил записать это видео. Чувствовал, что по этой теме есть много вопросов )

  • @user-lm9ee1gn5p
    @user-lm9ee1gn5p Год назад +5

    Спасибо, Александр, вы как всегда неподражаем 👍

    • @alex_dudukalo
      @alex_dudukalo  Год назад +2

      :) Очень приятный комментарий и поддержку ) Буду стараться в том же духе и лучше

    • @user-lm9ee1gn5p
      @user-lm9ee1gn5p Год назад

      @@alex_dudukalo ждем новых видео

  • @horikeisukke_7949
    @horikeisukke_7949 8 месяцев назад +1

    Спасибо за подробное и понятное видео)) интересно Вы схитрили со стрелочкой

    • @alex_dudukalo
      @alex_dudukalo  8 месяцев назад

      Спасибо вам. Да, работа с библиотеками вынуждает прибегать к хитростям ))

  • @Denik-is6gi
    @Denik-is6gi Год назад

    Спасибо!! Много раз пользовался этим плагин, но как всегда узнаю у вас что-то новое. 👍

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Спасибо за ваш комментарий. Рад, что нашлась новая и интересная информация для вас. Буду продолжать :)

  • @typhoonx04
    @typhoonx04 Год назад +2

    Кстатомная механическая клавиатура, у программистов бывают приколы в этом😅
    Спасибо, Александр за новый ролик!

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

      ))) Да да. Спасибо вам за ваш комментарий и поддержку ) Буду работать над роликами дальше :)

  • @user-uu4qr1xk8d
    @user-uu4qr1xk8d Год назад +1

    Спасибо большое за видео и понятное объяснение!

  • @user-hc7wq9om9i
    @user-hc7wq9om9i 10 месяцев назад +1

    Спасибо за полезную информацию))) очень информативное видео))))

    • @alex_dudukalo
      @alex_dudukalo  10 месяцев назад +1

      Благодарен вам за ваш комментарий :)

  • @asgard1428
    @asgard1428 Год назад +6

    Александр как всегда все понятно и круто. Я бы еще знаете что добавил. Чтобы при выборе города он исчезал из списка(дропдауна), а при выборе другого появлялся опять, а тот который выбрали исчезал и так далее. Считаю это важным, потому что при использовании в проектах это точно понадобится🤝🤝🤝

    • @alex_dudukalo
      @alex_dudukalo  Год назад +5

      Спасибо за ваш комментарий :) Да, сейчас он остается в списке, и имеет класс is-selected. Пожалуй, если буду записывать ролики с Choices, упомяну об этом. А пока это можно сделать, добавив в css такие строчки:
      .choices__item.is-selected {
      display: none;
      }

    • @asgard1428
      @asgard1428 Год назад +1

      @@alex_dudukalo я знаю) сталкивался на курсе! Это для тех кто совсем сначала все👍🤝

    • @alex_dudukalo
      @alex_dudukalo  Год назад +2

      @@asgard1428 да, может кому то будет полезно, если прочитает комментарий

  • @andreypavlukov1192
    @andreypavlukov1192 Год назад +1

    вчера 6 часов мучался :) спасибо за контент!!! теперь справлюсь

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

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

  • @user-gg8ke5ul3u
    @user-gg8ke5ul3u Год назад +1

    Александр спасибо!

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Спасибо за ваш отклик :)

  • @andreypavlukov1192
    @andreypavlukov1192 Год назад +1

    видео супер, скину в группы по теме, спасибо!

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Большое спасибо. Это мне поможет продвигать канал )) Репосты - это круто

  • @makeuppolina
    @makeuppolina Год назад

    Александр, спасибо за видео. А как можно сделать 2 selecta с разными стилями с помощью choices? Я задал им разные классы, соответственно стили choices для второго select не работают(классы я переназвала в настройках). Эти стили нужно будет руками добавлять в новые классы для второго select? Или есть способ более удобной реализации?

  • @user-ys2et3kc8c
    @user-ys2et3kc8c Год назад +1

    Всё круто! Спасибо!!!

  • @harryfloe
    @harryfloe Год назад

    Спасибо за видео. Такой вопрос: при открытии селекта в девтулс открываются доп классы, но не могу их исследовать, так как они исчезают, когда нажимаю за пределы списка. Как посмотреть все имеющиеся скрытые классы? Как сделать, чтобы они не исчезали?

  • @GELIC
    @GELIC 9 месяцев назад

    Контент достойный, недавно нашел, посмотрел, заценил, подписался)

    • @alex_dudukalo
      @alex_dudukalo  9 месяцев назад +1

      Спасибо за такой комментарий😊 Рад, что мой курс Вам полезен

  • @megabulk
    @megabulk Год назад +3

    Да уж, я помню, сколько я в свое время потратил сил на работу с этим плагином)))))

    • @alex_dudukalo
      @alex_dudukalo  Год назад

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

  • @ormtosteson9553
    @ormtosteson9553 3 месяца назад +1

    Топ. Спасибо, Александр

    • @alex_dudukalo
      @alex_dudukalo  3 месяца назад

      Спасибо вам. Я рад, что видео вам понравилось :)

  • @user-lf1di3fd3x
    @user-lf1di3fd3x Год назад +1

    Просто спас. Спасибо!

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Всегда приятно получать комментарии о полезности ролика :)

  • @user-qb6oo4eq9w
    @user-qb6oo4eq9w Год назад +1

    Видео крутое спасибо 😍)) не подскажешь как тоже самое провернуть на несколько селектов сразу, стилизовать их по разному, в частности мне нужно добавить разный фоновый рисунок на каждый селект выбора

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Кажется вы имеете ввиду итоговую работу сайта художников. То место, где верхнее меню ? :) Там не будет селекторов. Там блоки, которые появляются при клике. Я прикрепляю видео с разбором. А прокрутка делается с помощью Simplebar ruclips.net/video/154WXCMr9g4/видео.html

    • @user-qb6oo4eq9w
      @user-qb6oo4eq9w Год назад

      Спасибо, большое за ответ )) благодарен , я к такому варианту и пришел в итоге )) но за видио большое , огромное спасибо

  • @romanr5843
    @romanr5843 Год назад +1

    спасибо!
    Подскажи, если вложенные списки 3й вложенности можно стилизовать этой библиотекой? Мне нужно стилизовать li вложенные в несколько разных ul.

    • @alex_dudukalo
      @alex_dudukalo  Год назад

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

  • @user-qn4yk5sd7s
    @user-qn4yk5sd7s Год назад +1

    Круто как всегда)
    Если вдруг кому-то понадобится сделать несколько костомных select то делайте через цикл, по другому не работает.
    Вот пример, может кому поможет:
    const element = document.querySelectorAll('select');
    element.forEach(el() => {
    const choices = new Choices(el);
    })

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

      Спасибо за ваш комментарий ) И полезную подсказку. Дума, многим будет полезно. Только замечу, что .select - это класс. Если вы нужно все select сделать по тегу, то пишем без точки. (Пометка для зрителей) :)

    • @user-qn4yk5sd7s
      @user-qn4yk5sd7s Год назад

      @@alex_dudukalo благодарю) косяк поправил)

  • @pischaskin2654
    @pischaskin2654 Год назад

    Здравствуйте, а есть информация как стилизовать каждый option по оттдельности? Стилизовал через data-value, но при выборе в селекторе данного элемента, его бэкграунд остается! помогите!!!

  • @tigrext20
    @tigrext20 Год назад +1

    В видео ещё бы добавить настройку анимации, так как оказалось, что некоторые моменты совсем нетравиальные в данной библиотеке. И я так пока что не разобрался, как сделать так, чтобы скрытие списка происходил плавно, когда закрываешь список (то есть список у меня открывается плавно, а вот закрытие происходит не плавно🤷)

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Я думаю можно было бы сделать более расширенный ролик по выдающему списку. В этом видео я скорее показал основу подключения. Думаю много еще чего можно показать :)

  • @relaxdeepsleepmusic3608
    @relaxdeepsleepmusic3608 3 месяца назад

    Спасибо)

  • @andreyfedyukin8360
    @andreyfedyukin8360 Год назад +1

    Спасибо 👍

  • @user-hw9iu6fe8x
    @user-hw9iu6fe8x Год назад +1

    Спасибо два дня бился) 👍

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Надеюсь ролик вам помог :)

  • @calikatana
    @calikatana Год назад +2

    Александр, спасибо за видео, оно очень меня выручило.
    Вопрос: а как сделать так, чтобы пункты в селекте были расположены не по алфавиту, а как написано в разметке?

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

      Спасибо вам . Вот так:
      const choices = new Choices(element, {
      searchEnabled : false,
      itemSelectText: "",
      shouldSort:false
      })
      shouldSort -свойство для сортировки

    • @calikatana
      @calikatana Год назад

      @@alex_dudukalo спасибо, сейчас буду пробовать! Пожалуйста, продолжайте вести этот канал 💖
      А с чего начать просмотр на вашем канале, если хочется понять работу js (я тотальный новичок)? С классов?

  • @andreyputsillo255
    @andreyputsillo255 Год назад +1

    .is-open .choices__list .choices__item:hover { background-color: red; }
    Вот так меняю фон элемента списка, который в данный момент под курсором мыши. Как так же менять бэкграунд выбранного элемента списка, только если перемещаться по списку с клавиатуры. Простая замена hover на focus не работает...

  • @gasanaliomarov4747
    @gasanaliomarov4747 Год назад +1

    Александр, одного спасибо будет мало, но серавно спасибо, есть ли у вас свои курсы по js? С радостью у вас приобрёл бы)

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Спасибо вам :) Очень очень приятно. Думаю, что скоро что то такое сделаю. Только нужно составить план. Но я думаю от этом уже давно :)

  • @user-ur4vv3ev2x
    @user-ur4vv3ev2x Год назад +1

    Здравствуйте Александр , такой вопрос как сделать фокус и актив для элементов селекта , у меня получается так что фокус вообще не работает , так как селект с таба не открывается, а если его открыть с мыши и нажать таб то он закрывается , ну и актив совсем не видно , потому что селект сразу закрывается при нажатии на любой элемент выподающиго списка , объяснил как мог ) надеюсь получится разобраться с вашей помощью

    • @alex_dudukalo
      @alex_dudukalo  Год назад +1

      Здравствуйте, надеюсь вопрос актуален , и надеюсь его понял. Если вы хотите управлять select c клавиатуры и выбирать нужный элемент, то вам нужно нажимать стрелку вверх и вниз на клавиатуре, таб работать для выбора пунктов выпадающего списка не будет ) Просто стрелки нажимаются и все :) Если вы хотите задавать стилизацию выделенного элемента, то используйте класс .is-highlighted

    • @user-ur4vv3ev2x
      @user-ur4vv3ev2x Год назад

      @@alex_dudukalo получается я не к тому классу обращался ) спасибо вам за ответ

  • @tigrext20
    @tigrext20 Год назад +1

    Придумал продолжение ролика по choice. Можно сделать форму, в которой в зависимости от текста или "типа" choice менялся бы тип инпута и тем самым например не давал вписывать в инпут цифры и ТД.

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Довольно типовая задача :) Думаю можно будет сделать подобный контент :) Спасибо, за предложение. Сделаем))

  • @VItaliy-beldiy
    @VItaliy-beldiy Год назад +3

    да делай дальше у тебя дар простой подачи информацыи)

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Благодарю вас за такой комментарий :) Буду продолжать и улучшать подачу ))

  • @andreyputsillo255
    @andreyputsillo255 Год назад +1

    Напишите пожалуйста как сделать, чтобы кастомный список подключался в каждой карточке, а не только в первой. Понятно, что надо использовать querySelectorALL вместо querySelector, ну а дальше? С JS я пока не дружу(

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Можно попробовать так
      document.querySelectorAll('select').forEach(select=>{
      new Choices(select);
      })

    • @andreyputsillo255
      @andreyputsillo255 Год назад

      Спасибо! Вот в таком виде у меня получилось:
      const element = document.querySelectorAll(".js-choice").forEach(element => {
      const choices = new Choices(element, {
      searchEnabled: false,
      itemSelectText: ""
      })
      })
      Работает)

  • @andreypavlukov1192
    @andreypavlukov1192 Год назад +1

    Материал почему нужно пустое value=" " , когда скрываем choices__placeholder ?

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Да, именно :) Это указывает на то, что этот option будет плейсхолдером селекта :)

  • @andreyputsillo255
    @andreyputsillo255 Год назад +1

    Выпадене списка вверх вы к сожалению не осветили. Сам додумался до такого:
    Стилизация выпадания вниз: .is-open .choices__list[aria-expanded] { ... }
    Стилизация выпадания вверх: .is-flipped.is-open .choices__list[aria-expanded] { ... }
    Правильно я делаю?

    • @alex_dudukalo
      @alex_dudukalo  Год назад

      Здравствуйте, да забыл показать этот момент. Когда селект находится ниже центра экрана (окна браузера) селект выпадает вверх. Это происходит за счет добавление класса элементу ) Вы все верно поняли

  • @ormtosteson9553
    @ormtosteson9553 3 месяца назад +1

    А если у меня несколько селектов на страницы, то как сделать? Пишу const element = document.querySelectorAll('.js-choice'); , но не работает

    • @JEFF-eb6ce
      @JEFF-eb6ce 3 месяца назад

      const element = document.querySelectorAll('.js-choice');
      element.forEach((el) => {
      сюда вставляете код
      })