Ответы пользователя по тегу JavaScript
  • Как дать возможность вводить в input mui "-" с клавиатуры?

    @strelok011
    Выбросить type number, написать свою валидацию на скажем yup или его аналоге.
    И не тратить время.
    Ответ написан
    Комментировать
  • Как записать ответ с сервера в определенный инпут?

    @strelok011
    если разговор про реализацию в React - то вопрос, какие именно инпуты используются в вашем проекте - контролируемые или нет?
    Неконтролируемый uncontrolled
    const { useRef } from 'react';
    
    function Example () {
      const inputRef = useRef(null);
      return <input type="text" defaultValue="bar" ref={inputRef} />
    }


    Контролируемый (а еще их называют тупыми) сontrolled
    const { useState } from 'react';
    
    function Controlled () {
      const [email, setEmail] = useState();
    
      const handleInput = (e) => setEmail(e.target.value);
    
    
      return <input type="text" value={email} onChange={handleInput} />;
    }
    Ответ написан
    Комментировать
  • Как сделать форму из 4-х этапов и передавать данные в каждый из них?

    @strelok011
    Любая динамика с данными в окне браузера - нужен js. Работа в асинхронном режиме - таки да, это AJAX. Только сам термин ничего не объясняет.

    Писать можно хоть на нативном js, можно подключать фреймворки типа jQuery, Vue, React и проч.
    Вам придется хранить состояние формы (значения полей, ответы от бэкенда, служебные данные типа шага формы и др.), писать / использовать готовые модули для работы с календарем, отправлять запросы на эндпойнты бэкенда в асинхронном режиме, вешать крутилки (спиннеры) пока ожидается завершение запроса, перестраивать структуру документа чтоб отображать / скрывать шаги формы, писать валидацию заполнения данных, чтобы пользователь вводил только ожидаемые значения.
    Готового "воткнул - работает" не найти, такие решения исключительно под конкретные требования пишутся.
    Ответ написан
    Комментировать
  • Как сделать чтоб выпадающий дропдаун не обрезался в блоке с overlfow: auto и максимальной высотой?

    @strelok011
    Чтобы не кропало - релативный блок должен находиться за пределами оверфлоу.

    Решение - дропдаун класть в тело документа за пределами родительского блока, писать муторную обвязку на js с вычислением координат порождающего элемента на экране, по ид вычислять что класть в этот пустой дропдаун, либо искать такой дропдаун в готовых библиотеках, лет 5 назад натыкался на такое готовое.
    Либо примерно ту же муть с вычислением позиционирования но с оберткой вокруг вашего блока с оверфлоу и без выноса дропдауна.

    <div style="position:relative">
        <div style="width:280px; height: 100px; border:1px solid red; overflow:hidden; ">
            <ul>
                <li style="/* removed position:relative; */ width:200px; height:50px; list-style-type:none; background:yellow;z-index: 3;">
                    <div style="position: absolute; top: 30px; left: 52px; width:180px; height:150px; background:Pink; z-index: 99;">
                        <br>
                    </div>
                </li>
            </ul>
        </div>
    </div>


    Ну, еще вариант конечно, если вы точно знаете смещение порождающего элемента - писать позиционирование в стилях жестко прибитое, но это уже моветон и вообще не гибко.
    Ответ написан
    Комментировать
  • Как запретить скрытие адресной строки браузера на мобильном устройстве при скролле?

    @strelok011
    попробуйте это
    html {
      background-color: red;
      overflow: hidden;
      width: 100%;
    }
    
    body {
      height: 100%;
      position: fixed;
      /* prevent overscroll bounce*/
      background-color: lightgreen;
      overflow-y: scroll;
      -webkit-overflow-scrolling: touch;
      /* iOS velocity scrolling */
    }
    Ответ написан
  • Как корректно запустить скрипт heatmap.js?

    @strelok011
    .heatmap-wrapper - добавь в стиль атрибут pointer-events: none;
    Ответ написан
  • Когда я хочу сменить значение в инпуте, то курсор после удаления первого элемента прыгает в конец, как отменить такое поведение после смены значения?

    @strelok011
    Основная проблема - ререндер компонента с промежуточной обработкой значения реактом.
    Это не ошибка а ожидаемое поведение реакта, он теряет позицию курсора.
    Можно посмотреть к примеру здесь как разработчики борются с таким поведением.
    Общая идея - обрабатывать в onChange еще и положение курсора, сохранять его в стейте и использовать при ререндере.
    Ответ написан
    Комментировать
  • Как написать Js функцию, размещающая блоки с абзацами как газетные колонки?

    @strelok011
    Не нужно ничего вычислять. Ее нужно просто запросить. Это свойство clientHeight

    Создаете массив колонок, пробегаете по нему, собираете высоту, ищете первую минимальную, втыкаете туда блок статьи, повторяете пока не кончатся блоки для вставки.
    Ответ написан
  • Как сделать правильное dropdown меню?

    @strelok011
    Дополню немного куратора - ваше меню должно решать ВАШУ проблему.
    Всякие образцы в интернете - могут решать а могут и не полностью. Работает ли адаптив для разных разрешений, поддерживается ли тач, сколько уровней вложенности, нужно ли скрывать скролл для длинных списков (и всё же меню - это именно список), нужно ли скрывать подменять десктопное меню на мобильное...
    Когда составите список требований - тогда и только тогда нужно будет подбирать конкретную реализацию, либо опираясь на примеры пилить своё.
    Халтура - она не универсальная :)
    Ответ написан
    Комментировать
  • Перемещать строки таблицы по клику на соответствующую кнопку выше или ниже. Как это сделать на javascript?

    @strelok011
    это вопрос 10-летия на js )
    Я надеюсь, что клики по элементу массива и прочую мелочь вы написать сможете.

    Берем массив, хотим изменить последовательность двух элементов
    вариант со старым js
    var b = list[y];
    list[y] = list[x];
    list[x] = b;

    b - временная переменная

    вариант на es6
    к примеру массив arr = [1,2,3,4]
    [arr[0], arr[1]] = [arr[1], arr[0]];
    будет массив [2,1,3,4]
    это destructuring assignment.

    А так-то да, заказывайте на фрилансе :)
    Ответ написан
    Комментировать
  • Почему тормозят css анимации на iOS?

    @strelok011
    При создании анимаций необходимо избегать изменений цсс свойств, ведущих к перерисовке лейаута. Вот тут есть перечень всех свойств, вас должны интересовать помеченные фиолетовым.
    Анимация без тормозов для смещения блока будет если вместо изменения положения на экране вида bottom: 0, bottom: 200 использовать transition: transform
    Так же рекомендуется добавлять
    transform: translate3d(0, 0, 0);
    - заставляет некоторые устройства запускать аппаратное ускорение.
    Ответ написан
    Комментировать
  • Как правильно располагать ресурсы для ускорения загрузки и рендеринга страницы?

    @strelok011
    Аналитику в конец. Она не должна влиять на скорость подгрузки значимых элементов и блокировать страницу для пользователя.
    SVG как раз лучше в начало, при этом можно поварьировать подход - ссылку на svg-спрайт, либо прямо инлайном запилить в html и вызывать в нужное место просто по id. Если у вас 10 ссылок на декоративные элементы - это плохой подход. На старых http серверах каждый запрос является высоконагруженной операцией для сервера.
    Основной js - тоже в конец документа, в самый низ либо подключать асинхронно. Инициализация на документ онлоад.
    Суть такого подхода - чем раньше пользователь увидит контент, тем спокойнее он будет и какой-нить гугл спидрейнч вам покажет влияние на первое отображение контента пользователю.
    На истину не претендую, рекомендую всё же такой подход и проверку внесенных изменений у гугла.
    Ответ написан
  • Почему nth-child() не видит изменения в DOM?

    @strelok011
    Лучше переделать всё это на grid, с указанием gap. Один класс на обертке без всяких nth
    Ответ написан
    Комментировать
  • Возможно ли анимировать форму таким образом?

    @strelok011
    1. Есть вариант анимировать используя фильтр блюр. Поизвращаться придется конечно, но вполне себе будет рабочий вариант

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

    2. Как предложили выше - svg path
    3. Canvas - трудоемкость большая

    Вот подборка примеров "жидких" эффектов
    Ответ написан
    1 комментарий
  • Почему блокируется отправка формы авторизации и редирект в Iframe?

    @strelok011
    Вы не сможете обойти блокировку из-за настроек параметров CORS (Cross-Origin Resource Sharing). Настраивается это на стороне серверов.
    Есть сайты, специально настроенные для обеспечения такого доступа, обычно это какие-либо виджеты для сайтов.
    Мечты "открыть на любом сайте форму любого другого сайта" запрещены (к счастью) во всех современных браузерах, иначе воровство денег и персональных данных ничем бы не сдерживалось.
    https://developer.mozilla.org/ru/docs/Web/HTTP/CORS
    Ответ написан
    Комментировать
  • Как отключить загрузку изображения браузером при определенном размере экрана?

    @strelok011
    1. Для картинок есть такой тег как picture
    Позволяет подгружать нужное изображение в зависимости от размера окна, подгружать различные форматы изображений, на случай если какой-то не поддерживается.
    2. Что запрещает завернуть в медиа-запрос оба условия?

    @media screen and (max-width: 767px) {   
        .img{
        	background-image: url(http://...);
        } 
    }
    
    @media screen and (min-width: 768px) {      
        .img{      
        	background-image: url(http://...);
        } 
    }
    Ответ написан
    Комментировать
  • Почему transition работает только в одну сторону?

    @strelok011
    Пишете небольшой js для получения высоты своей страницы (ну или элемента, на котором должен проявляться эффект) после загрузки, добавляете инициализацию этого же кода на resize (мало ли как контент себя поведет), используете это значение для анимации.
    Если высота не известна - никакие транзишны и анимашки корректно работать не будут. Всякие аккордеоны, прокрутки и т.п. требуют заранее известной высоты для корректной работы. Браузер ее, к сожалению "на автомате" не подсовывает.
    Решение не привожу, в интернете можно найти. Но общий смысл действий описал.
    Ответ написан
    Комментировать
  • Как изменить содержимое iframe видео с утуба через апи?

    @strelok011
    А кто вам разрешение выдал на изменение содержимого с чужого сайта?
    https://developer.mozilla.org/ru/docs/Web/HTTP/CORS
    "В целях безопасности браузеры ограничивают cross-origin запросы, инициируемые скриптами."
    Ответ написан
    Комментировать
  • Как размыть(заблюрить) выделнную область на странице?

    @strelok011
    Когда вопрос задаете - лучше рассказывать и сопутствующие моменты. А еще - таблицу браузеров, под что совместимость пилить. И будет вам щасте )
    Есть атрибуты стилей типа filter: blur, есть всевозможные эффекты через svg на том же механизме (примеров в инете навалом), а есть реализация супер дубовая и очень тяжеловесная, но совсем кроссбраузерная (фильтры в старых браузерах не везде работают) - создается канва, перехватывает битмап отрисованной страницы, библиотечкой на js успешно блюрится именно как растр.
    Вот только если прячете текст - его надо блюрить на бэке. А на фронте - это просто не шибко полезные свистоперделки, которые еще и на производительности сказываются.
    Ответ написан