Задать вопрос
  • Как строку превратить в число, если в строке содержится математическое выражение?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    eval('6 * (5 - 4) / 3'); // = 2
    Ответ написан
    Комментировать
  • Почему v-bind перестает работать со строками?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    потому что с ":" - это вычисляемый аттрибут

    для примера, строку можно взять в одинарные кавычки, чтобы это было валидное выражение:
    :title="'Неработающий заголовок'"

    можно рассматривать как:
    var title = 'Неработающий заголовок';
    без одинарных кавычек, получается так:
    var title = Неработающий заголовок; - ошибочная конструкция
    Ответ написан
    Комментировать
  • Как можно с помощью js css, сделать линии на сайте, которые будут следовать за курсором?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    на указанном сайте в отдельном js файле подключается функция "initOciliator" она и создаёт анимацию
    https://codepen.io/jrkdv/full/qBYYPyw
    изменил оригинальную функцию на 200 строке, добавил смену цвета
    Ответ написан
    7 комментариев
  • Как не позволить пользователю вставить html тег в div использую js?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    можете попробовать что-нибудь такое:
    https://codepen.io/jrkdv/pen/KKQQdEq

    но как подметили
    нужно на стороне сервера обрабатывать и чистить от не нужного
    Ответ написан
    Комментировать
  • Как работает данный код?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    предположение такое:

    цитата из доки
    Метод Window.getComputedStyle() возвращает объект, содержащий значения всех CSS-свойств элемента, полученных после применения всех активных таблиц стилей, и завершения базовых вычислений значений, которые они могут содержать. Некоторые CSS-свойства доступны через API, предоставляемые объектом, или индексацию по именам CSS-свойств.

    Предполагаю автор, вашего скрипта, при добавлении "getComputedStyle()" ориентировался на выделенную фразу из цитаты

    function closeAccordion (accordion) {
      // ... <= до вызова функции высота "auto"
      accordion.style.height = `${accordion.scrollHeight}px` // Устанавливаем высоту
      window.getComputedStyle(accordion, null).getPropertyValue('height') // Провоцируем вычисление новых изменений
      accordion.style.height = '0' // Устанавливаем высоту
      // ... => после выхода из функции рендер видит, что высота была Npx, стала 0px => запускает анимацию
    }


    Без вызова "getComputedStyle()", соответственно:
    до выполнения функции закрытия аккордиона высота была "auto"
    после завершения функции высота стала "0"
    для рендера высота изменяется из "auto" в "0" => анимация не выполняется


    1) Работает ли это во всех браузерах?
    2) Всегда ли он будет срабатывать?

    нужно всегда проверять, во всех браузерах, неизвестные вам решения.
    в данном случае, как по мне, безобидного ничего нет
    Ответ написан
    1 комментарий
  • VUE, как решить вопрос по странному поведению свзяывания двух свойств?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    После этой манипуляции начинается проблема:

    полной реализации не видно, - но если предположить, что в массивы запихивается объект, то тогда делайте отдельную копию объекта для каждого массива, через тот же "JSON.stringify \ parse"

    потому что в массив попадает не сам объект, а только ссылка на этот объект.
    Из-за этого - изменение объекта по ссылке в одном из массиве, приводит к изменению объекта в другом массиве.
    по факту один и тот же объект находится в двух массивах

    upd
    и геттер isChanged у вас получился слабо устойчивый к изменениям. Если в объекте поменяется порядок полей, то может быть неожиданный результат:
    // два объекта с одинаковыми данными
    let a = { a: 1, b: 1 }
    let b = { b: 1, a: 1 }
    let isChange = JSON.stringify(a) !== JSON.stringify(b);
    // isChange будет равно true
    // потому что строка будет отличаться из-за разной позиции свойств объекта
    Ответ написан
    Комментировать
  • Почему выдаёт ошибку [vuex] unknown mutation type:?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    думаю что, вот это:
    this.commit('setUser', response.data);
    ищет мутацию из корневого хранилища.

    пробуйте что-нибудь такое:
    getUser({ commit }){
            axios.get("/api/v1/user/current")
                .then(response=>{
                    commit('setUser', response.data);
                })
        },


    или указывайте полный путь (вместе с именем модуля)
    Ответ написан
    3 комментария
  • Как закрыть по клику на его ::backdrop?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    похоже что нельзя

    но можно контент поместить в слой
    <dialog class="popup">
      <div class="layer">
        ...
      </div>
    <dialog>


    а у слоя останавливать всплывающие события => тогда можно отловить клики вне модалки, примерно так:
    document.querySelector('.layer').addEventListener('click', (e) => e.stopPropagation());
    document.querySelector('.popup').addEventListener('click', (e) => e.target.close());
    Ответ написан
    1 комментарий
  • Градиент справа налево под углом?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    calc(100% - 50px)
    Ответ написан
    Комментировать
  • Почему не работает код?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    из-за особенности значения
    можете тут прочитать про особенность и как можно проверять такие значения
    isNaN
    Ответ написан
    Комментировать
  • Как рисовать круги на пунктирной линии через равный промежуток?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    как пример, ещё можно так
    https://jsfiddle.net/5mfcw84j/
    Ответ написан
    Комментировать
  • Почему при ресайзе border меняется?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    потому что у rect не заданы размеры, поэтому он "плавает" внутри svg контейнера, попробуйте что-нибудь такое:
    <svg><rect x="0" y="0" width="100%"></rect></svg>
    Ответ написан
    2 комментария
  • Как вернуть значения из вложенной функции?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    // что-нибудь такое
    const getImgDimensions = (file) => {
      return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.onload = () => {
          const img = new Image();
          img.onerror = reject;
          img.onload = () => {
            const height = img.height;
            const width = img.width;
            resolve({ height, width });
          };
          img.src = reader.result;
        };
        reader.readAsDataURL(file);
      })
    };
    
    // =>>
    getImgDimensions('https://.../image.jpg')
      .then(response => console.log(response)); // { height, width }
      .catch(err => console.log(err)); // error
    Ответ написан
  • Почему не заполняется стейт после ввода?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    window.state = store.getState() <-- содержит результат функции
    замените на:
    window.state = store.getState <-- содержит ссылку на функцию

    сейчас у вас в window.state попадает Объект и нигде больше не изменяется
    Ответ написан
    2 комментария
  • Mobile first простым языком?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    берёшь два макета мобильник\десктоп (по хорошему)
    делаешь разметку всех элементов с двух макетов
    переключаешься на мобильный вид и начинаешь рутину со стилями до десктоп варианта
    элементы, которые только на десктопе - прячешь, остальные элементы по мере доступной области растягиваешь. По итогу на мобильники приходиться меньше стилевых правил и меньше пользователей, которые не могут открыть по 100500 вкладок, потому что всё тормозит
    Ответ написан
    Комментировать
  • Что надо прописать в jquery, чтобы выделялась активная ссылка?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    а если поменять местами строки?
    $('a').removeClass('active');
    $(this).addClass('active');
    Ответ написан
    Комментировать
  • Генераторы и Promise. Зачем использвовать вместе?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Зачем это :

    для последовательного выполнения промисов

    Если можно так :

    неправильно переписали логику, у вас по веткам .then() передаются не асинхронные промисы, а просто строки.
    Для наглядности представьте, что makeProm выполняет http запрос на сервер, где параметр msg - это url адрес

    чтобы повторить одинаковую логику придётся промисы выполнять в промисах,
    тем самым запутывая ветвление then\catch и усложняя логику обработку ошибок
    это будет примерно так:
    makeProm("first")
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('second')})
    // .then(/* тут Успех для промиса 'second' ... и запускаем промис 'first2.0' */)
    // .catch(/* тут Ошибка для промиса 'second' */)
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('first2.0')})
    // .then(/* тут Успех для промиса 'first2.0' ... и запускаем промис 'second2.0' */)
    // .catch(/* тут Ошибка для промиса 'first2.0' */)
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('second2.0')})
    // .then(/* тут Успех для промиса 'second2.0' */)
    // .catch(/* тут Ошибка для промиса 'second2.0' */)
    //
    // В следующем блоке .then() мы уже потеряли данные из предыдущих промисов (тут будет последний промис)
    // Тоже самое и с ".catch" блоками, если у каждого промиса не обработать ошибку,
    // то ошибка может произойти в первом промисе, а перехватим её уже в последнем блоке,
    // без идентификации из какого промиса мы словили ошибку
    .then(msg => { console.log(msg) })
    .catch(err => { console.log(err) })

    ну как то так...
    Ответ написан
  • Не отображается картинка?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    потому что браузер не может загрузить картинку по указанному url адресу
    • разметка картинки не валидная (в адрес попал alt)
    • открываете в браузере файл страницы , а не ссылку на сайт
      из-за этого надо править относительный адрес картинки:
      или начинать адрес с точки "./img/", или без начального слеша, или использовать абсолютный url адрес на картинку

    Ответ написан
    Комментировать
  • Почему могут отличаться стиля на проде и локально?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Версия пакета одинаковая что на сервере что на локалке

    версия пакета отличается, посмотрите сами историю пакета
    https://unpkg.com/simplebar@5.0.0/dist/simplebar.css
    https://unpkg.com/simplebar@5.1.0/dist/simplebar.css
    поиск по строке ".simplebar-scrollbar:before"

    upd обновите локальный пакет, чтобы сравнять с сервером минорный номер версии
    Ответ написан
  • Из за чего возникает ошибка при создании пользователя?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    попробуйте в постмане Text переключить на json
    это там где выбираете метод отправки параметров (body -> raw -> по правой стороне у вас на скрине "text")
    и смотрите какой Content-Type отправляется, должно быть что-нибудь похожее на "application/json"
    Ответ написан
    Комментировать