JavaScript. Число над слайдером

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024
  • Курс JS: js.itgid.info
    Плейлист: goo.gl/63osiv
    Мои курсы: itgid.info
    Телеграм: t.me/jsrules

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

  • @-it7046
    @-it7046 5 лет назад +7

    Александр, у Вас хороший опыт. Видно как Вы умеете раскрывать суть

    • @itgid
      @itgid  5 лет назад

      Спасибо!

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

    Дякую більше. Як мені це було необхідно в даний момент. Дуже дякую, ще раз.

  • @Matvey.809
    @Matvey.809 5 лет назад +12

    Мегадоступное объяснение как всегда)

    • @itgid
      @itgid  5 лет назад

      Спасибо!

    • @aldenraymond1781
      @aldenraymond1781 3 года назад

      You prolly dont give a shit but if you guys are bored like me during the covid times you can stream all the latest movies on instaflixxer. Been watching with my gf these days =)

    • @morgankamari9985
      @morgankamari9985 3 года назад

      @Alden Raymond yea, been watching on InstaFlixxer for months myself :D

    • @abramharry721
      @abramharry721 3 года назад

      @Alden Raymond Yup, I have been watching on InstaFlixxer for years myself =)

  • @rokoss
    @rokoss 5 лет назад +1

    Очень нравится как объясняешь

  • @ПростоЕвгений-е3б
    @ПростоЕвгений-е3б 5 лет назад +4

    Может кому будет полезно - формула вычисления позиции: показатель.style.left = текущее_значение*(ширина_родителя-50)+"px", при условии, что текущее_значение в диапазоне от 0 до 1, а 50 зависит от размера ползунка и range (50, при ширине ползунка 16px, 25 при 8 px). (ширину можно получить через getComputedStyle)

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

      Очень полезная информация. Можно Вас попросить, написать формулу на JS, как она будет выглядеть. А то так не понятно.

  • @scificatcher
    @scificatcher 5 лет назад +1

    У меня тоже в VSC style заменяется на getElementsByClassName;
    console.log('Выходит, что я тоже криворукий!');
    Автору видео большое почтение и респект за понятное разъяснение. Таких уроков очень и очень мало. Продолжай в том же духе! Молодец!!!

  • @АнастасияШелухина-з7е

    отличное объяснение, спасибо, в последнее время смотрю практически только ваш контент - а насчет замены style на другие слова - это боль, я каждый раз ругаюсь, приходится применять ctrl+z

  • @AndreySheff
    @AndreySheff 4 года назад

    Великий гуру JS. Спасибо

  • @Black1991Star
    @Black1991Star 5 лет назад +3

    Спасибо, Александр. Решил повторить, и разобраться, почему не выравнивалось codepen.io/BlackStar1991/pen/ywxVyG Вообщем, если задавать в оббертке, с text-align: center; то всё становиться хорошо. (Для WebKit браузеров, в других оно выглядит иначе)

  • @truedivan
    @truedivan 5 лет назад

    Так забавно вздохнул когда style поменялся на абрукадабру =)))

  • @developer-miracle
    @developer-miracle 3 года назад

    У меня был небольшой опыт написания подобного элемента. Я поймал сам элемент ползунка и скриптом добавил ему потомка див-элемент. Этому диву задал абсолютное позиционирование.
    Остаётся отследить изменение значения и вписать в этот элемент.

  • @СергейЛуняк-д5е
    @СергейЛуняк-д5е 3 года назад

    добрый день. очень нравятся ваши видео! скажите, как я могу полностью заменить бегунок своим дивом, что бы стилизовать его уже без префиксов при это покаатели счетчика будут меняться по шагам step.

  • @zabor14
    @zabor14 5 лет назад

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

  • @alexkardone3809
    @alexkardone3809 5 лет назад +1

    Александр, если функцию именовать (я назвал ее go ) и вызвать вначале, то отдает undefined. Я решил это привязкой вызова к контексту : go.call(range); правильно ли, или есть более изящный способ?
    UPD: функция отдает undefined потому что при вызове вне объекта range она теряет контекст (this). Более элегантный способ нашел - использовать bind. Вот что получилось в итоге (понимаю, что все очевидно, но, может, кому-то будет полезно):
    let range = document.querySelector('.number'); // получили input range
    let rangeNum = document.querySelector('.range-num'); // получили квадратик сверху для цифр
    function go() { // объявил функцию go (она имеет в себе this, значит, без контекста ее нельзя использовать)
    rangeNum.style.left = this.value - 15 + 'px';
    rangeNum.innerHTML = this.value;
    }.bind(range); // здесь мы жестко привязали функцию go к контексту объекта range. Теперь this = range при любом вызове.
    go(); // вызвал функцию go (чтобы при загрузке страницы отображался нолик)
    range.oninput = function() { go() } // Теперь при каждом изменении range будет срабатывать функция go с привязкой к контексту range.
    Спасибо!

    • @itgid
      @itgid  5 лет назад +1

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

    • @extr40rdinary
      @extr40rdinary 5 лет назад

      Просто замени this на range и без контекста все будет работать.

  • @digitalturkistan1857
    @digitalturkistan1857 5 лет назад +3

    Супер

  • @АлексейБолбат-д4ы
    @АлексейБолбат-д4ы 4 года назад

    Так все-таки, как можно избавиться от эффекта "обгона" слайдера? Пытаюсь изменить длину блока в зависимости от положения слайдера. Длинна увеличивается по экспоненте. Хотя в коде числовое значение this.Value совпадает со значением длинны. А визуально длинна больше.

  • @АлександрМарченко-ы4к

    Александр, очень интересно было бы посмотреть на вашу реализацию сортировки. Например, в портфолио или в товарной номенклатуре. Интересно как бы это можно было максимально просто реализовать на нативном js.

    • @itgid
      @itgid  5 лет назад

      да обычно это делают на бекенде.

    • @АлександрМарченко-ы4к
      @АлександрМарченко-ы4к 5 лет назад +2

      @@itgid но было бы очень интересно! Например, есть ведь в сетке css flex и grid свойство order. Можно ведь присваивать через js различные значения order flex-элементам в зависимости от нажатой кнопки фильтра. Я бы даже посмотрел такую реализацию в продолжении вашего урока по интернет-витрине на гугл таблицах. Обычно ведь и каталог делается не с помощью онлайн таблиц. Мне кажется, опыт такого прикладного js был бы очень интересен на канале для аудитории. Я не настаиваю на order, но я, например, другого решения не вижу, может быть ваш опыт подсказал бы изящное решение))

    • @itgid
      @itgid  5 лет назад

      @@АлександрМарченко-ы4к увы, даже элементарное упорядочивание массива по двум параметрам при выборке из базы делается намного проще чем эмулировать это в JS. И быстрее. Подумаю над вопросом, но это в любом случае будут "велосипеды"

  • @movlamquliyev5606
    @movlamquliyev5606 5 лет назад

    Здравствуйте тов.Лущенко.Вы онлайн уроки проводите или же консультацию дадите по конкретному вопросу js?

    • @itgid
      @itgid  5 лет назад

      Напишите в телеграмм

  • @-it7046
    @-it7046 5 лет назад

    Посмотрел, отлично все)👍

  • @-it7046
    @-it7046 5 лет назад +2

    Кстати о таком ползунке думал недавно, хотел реализовать) углубился в jquery, а его оказывается можно сделать видимо на чистом js) посмотрю ролик, опишу как понравилось

    • @itgid
      @itgid  5 лет назад

      гуд. В jQuery гляньте на jQueryUI

    • @-it7046
      @-it7046 5 лет назад

      @@itgid Спасибо за совет!

    • @-it7046
      @-it7046 5 лет назад +1

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

    • @itgid
      @itgid  5 лет назад

      @@-it7046 да, а самое интересное, что переписывать их на es6 никто не спешит. В результате целый пласт наработок можем потерять.

    • @-it7046
      @-it7046 5 лет назад +1

      @@itgid т.е там плагины могут быть рабочими раз они остаются на сайтах в неизменном старом виде?
      Там же огонь плагины, причем очень мало строк кода, достаточно скачать 3 библиотеки и можно создавать интерфейсы для разных приложений на уровне гугла или яндекса

  • @Fshagiev
    @Fshagiev 5 лет назад

    Однозначно годно!

  • @-it7046
    @-it7046 5 лет назад

    А Вы пользуетесь библиотеками что бы проверять возможности браузеров? modernizr.js
    Это вообще нужная библиотека сейчас?

    • @Алексей-с3я8е
      @Алексей-с3я8е 5 лет назад

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

  • @ОлегБыков-р3с
    @ОлегБыков-р3с 5 лет назад +1

    Крутяг, спасибо!

    • @itgid
      @itgid  5 лет назад

      Супер!

  • @asala8823
    @asala8823 5 лет назад +6

    Настоящий мужчина должен сделать 3 вещи в своей жизни .
    1. Посадить дерево
    2. Построить дом
    3. Подписаться на Александра

    • @itgid
      @itgid  5 лет назад +1

      Согласен.

  • @A-tri
    @A-tri 2 года назад

    не вникнуть в тему - ошибка;
    не привести значения ползунка к доле от максимума и минимума - фатальная ошибка, и соответственно, смещение квадратика

  • @andriidou8023
    @andriidou8023 5 лет назад

    Можна уроки в CodePen записувати там і зручно і код можна після уроку демонструвати. у мене по ходу виконання виникло питання можливо трохи не по темі заняття але всеж: я в прикладі замість звичайної функції використав стрілочну range.oninput = () => { console.log(this.value );} ось так і в мене замість значення з повзунка range відобразилось underfined, з звичайною функцією проблем не було. Так от в чому проблема і чи це якось повязано з тим що стрілочні функції беруть this з зовнішнього лексичного середовища???

    • @rmnkot
      @rmnkot 5 лет назад

      Жодної проблеми, ви відповіли самі на своє питання в останньому реченні. Не варто використовувати стрілочні функції всюди як заміну оголошенню, вони мають своє призначення.

    • @ПростоЕвгений-е3б
      @ПростоЕвгений-е3б 5 лет назад

      this не використовується в стрілочних функціях.

    • @andriidou8023
      @andriidou8023 5 лет назад

      @@ПростоЕвгений-е3б this використовується в стрілочних функціях в цьому якраз їхня фішка, при використанні стрілочної функції відсутня втрата контексту в callback функціях

    • @ПростоЕвгений-е3б
      @ПростоЕвгений-е3б 5 лет назад

      @@andriidou8023 я мав наувазі не так, я к в звичайних функціях, дякую, що виправили мене.

  • @АлексейТорий
    @АлексейТорий 5 лет назад

    Сколько трактористов?

    • @itgid
      @itgid  5 лет назад

      Ничего себе какой тонкий юмор!

  • @angrybeaver3425
    @angrybeaver3425 5 лет назад

    Давайте обзор на vs code

  • @РоманТамазян-е2ж
    @РоманТамазян-е2ж 5 лет назад

    Классно все равно бы коэффициент найти бы! Хорошо было бы!

  • @simplewebdev1098
    @simplewebdev1098 5 лет назад +1

    14:15 а так интересно получается потому, что JS понимает это выражение как строку. А значит, например 20 + 10 + рх = 2010рх. Динамическая типизация это же неоспоримое преимущество! (минутка хейта JS)

    • @странствие
      @странствие 4 года назад

      Так это ж удобно) Чтобы исправить это нужно добавить один символ, зато в похожей ситуации можно не приводить числовое значение к строке, чтобы добавить 'px'

    • @simplewebdev1098
      @simplewebdev1098 4 года назад

      @@странствие тут дело не в одном символе. Динамическая типизация выглядит удобной, но, в последствии, приносит кучу проблем. Настолько кучу, что целый язык выдумали, Type Script, чтобы бороться с "удобствами" динамической типизации в JS.

    • @странствие
      @странствие 4 года назад

      @@simplewebdev1098 какие же проблемы она приносит?

    • @simplewebdev1098
      @simplewebdev1098 4 года назад

      @@странствие основных две:
      1) неявное приведение типов иногда подкидывает головную боль, особенно если мало опыта. Но с этим жить можно.
      2) необходимость проверки параметров функций, если предполагается, что ей будут пользоваться другие люди. И вот это в крупных проектах становится серьёзной проблемой. Ведь я вынужден проконтролировать, что пользователь моей функции правильно передаст параметры нужного типа. В языках со строгой типизацией за меня это сделает компилятор. Это, собственно, одна из основных причин появления Type Script.
      Ну и так, по мелочи: указание типа переменной, параметра функции и т.п. помогает документировать код, ведь уже при объявлении я понимаю, какого типа данные тут должны быть.

    • @странствие
      @странствие 4 года назад

      @@simplewebdev1098 1) ну о какой головной боли ты говоришь-то? Обычно ошибку сразу заметно, так что она решается за пару секунд.
      2) а смысл их проверять? используй toString() или унарный плюс, вот и все. Или можно пример кода, а то я не совсем понимаю

  • @norde_5741
    @norde_5741 5 лет назад +1

    у меня с onchange не работает только с oninput.
    у когото роботает с onchange?

    • @itgid
      @itgid  5 лет назад

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

    • @norde_5741
      @norde_5741 5 лет назад

      @@itgid в таком случае не было бы такой "анимации" а просто "прыжок" блока с значением:))

    • @itgid
      @itgid  5 лет назад

      @@norde_5741 согласен. Тогда код на codepen - и сюда ссылку.

  • @FamilyB-u4s
    @FamilyB-u4s 5 лет назад +2

    что гадать то? transform: translateX(-50%) width бегунка убрать. и всегда по центру будет

  • @dobrynia777
    @dobrynia777 5 лет назад +4

    transform: translateX(-50%)

  • @prostoez3513
    @prostoez3513 3 года назад

    Коэф 1,9

  • @ПятыйЭлемент-й1ф
    @ПятыйЭлемент-й1ф 5 лет назад

    rangeNum.style.left = this.value - 5 * this.value * 0.01 +'px'; вот так более-менее

  • @truedivan
    @truedivan 5 лет назад

    Число над слайдером? =)
    Над ползунком, или над range инпутом
    ...блин реально слайдером зовётся...

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

    if (value < 3) {
    upperRangeLogger.style.left = 6 +'px';
    } else if (value < 10 && value > 2) {
    upperRangeLogger.style.left = value*2.5 + 'px';
    } else {
    upperRangeLogger.style.left = value*1.42 + 'px';
    }