• Не срабатывает прокрутка если добавить дополнительный блок таблицу в диаграмме Гантта Apache Echarts?

    gtomilin
    @gtomilin Автор вопроса
    JavaScript HTML CSS
    import { ECharts } from 'echarts';
    import { useEffect } from 'react';
    
    import { getDataZoom } from '@opm/shared/echarts';
    
    export const useScrollEChart = (
      echarts: ECharts | undefined,
      dataZoomId: string,
    ) => {
      useEffect(() => {
        // код ниже для реализации вне React
        if (!echarts) return;
        let startPercent: number;
        let endPercent: number;
    
        const mouseWheelHandler = (e: WheelEvent) => {
          // тут нужно получить id той оси которую нужно скроллить - тут это реализовано через кастомный хук - но вы можете это сделать как вас будет удобно
          const dataZoom = getDataZoom(echarts, [dataZoomId]);
    
          startPercent = dataZoom[0].start;
          endPercent = dataZoom[0].end;
    
          if (e.deltaY > 0 && endPercent < 100) {
            const increment = Math.min(4, 100 - endPercent);
            startPercent += increment;
            endPercent += increment;
          }
          if (e.deltaY < 0 && startPercent > 0) {
            const decrement = Math.min(4, startPercent);
            startPercent -= decrement;
            endPercent -= decrement;
          }
    
          // передаём параметры для echart dataZoom потому что это единственный способ проскроллить
    
          echarts.dispatchAction({
            type: 'dataZoom',
            batch: [
              {
                dataZoomId,
                start: startPercent,
                end: endPercent,
              },
            ],
          });
        };
    
        echarts.getDom()?.addEventListener('wheel', mouseWheelHandler);
    
        return () => {
          echarts.getDom()?.removeEventListener('wheel', mouseWheelHandler);
        };
      }, [echarts, dataZoomId]);
    };
    Ответ написан
    Комментировать
  • Как исправить "ReferenceError: Client is not defined"?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Нужно подключить модуль Client
    Ошибка пока только в этом
    ReferenceError: Client is not defined
    А дальше смотреть
    Ответ написан
    Комментировать
  • Почему дочерние элементы странно удаляются?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    1. Неверно делать const output = form.nextElementSibling; - в будущем могут появиться новые элементы и nextElementSibling будут недействительным, надо получить ссылку на конкретный элемент document.querySelector('.output')
    2. Children сохраняет предыдущее значение и результате получается такой эффект. Подробнее тут
    3. Два варианта как решить

    //Удаление дочерних элементов перед заполнением
      let childrens = [...output.children]; 
      childrens.forEach(item => item.remove())


    //Удаление дочерних элементов перед заполнением
      output.innerHtml = ''
    Ответ написан
    Комментировать
  • Как убрать ссылку с элемента, если он внутри тега а?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    1 - Нужно семантически верно сверстать блоки и не будет таких проблем - внутри ссылки не должно быть каких-то интерактивных элементов
    2 - Проверил preventDeafault всё отработало

    63c9bbf8156a9939995020.jpeg
    Ответ написан
    Комментировать
  • Как в document.querySelector вставить html?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Напишите, что получаете в posts
    console.log(posts)
    Ответ написан
    Комментировать
  • Как прочитать данные json по ссылке?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    fetch('https://jsonplaceholder.typicode.com/posts.json')
    // получили Джейсон с сервера
    .then( anyName => anyName.json() )
    // Преобразовали Джейсон в объект джаваскрипи
    .then ( againAnyName => {
     console.log(againAnyName)
    let jsonFile = againAnyName;
    }
    // выводим полученный объект в консоль, и/или присваиваем объект новой переменной


    Как-то так, полагаю
    Ответ написан
    Комментировать
  • Как избавиться от этих белых линий по краям?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Нужно всегда использовать сброс стилей
    Конкретно для данной ситуации
    *{
      padding: 0;
      margin: 0;
    }


    А в целом reset.css
    /* reset.css */
    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed,
    figure, figcaption, footer, header, hgroup,
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
        margin: 0;
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        vertical-align: baseline;
        box-sizing: border-box;
        font: 18px 'Golos', Helvetica, Roboto, Arial, sans-serif;
        line-height: normal;
    }
    * {
        scrollbar-width: thin;
    }
    *:hover, *:active{
        -webkit-tap-highlight-color: transparent
    }
    a {
        text-decoration: none;
        color: inherit;
    }
    
    article, aside, details, figcaption, figure,
    footer, header, hgroup, menu, nav, section {
        display: block;
    }
    
    html {
        min-height: 100%;
        scrollbar-width: thin;
    }
    Ответ написан
  • Как сделать пропорциональное уменьшение сайта без media?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Писал класс для определения размеров окна
    class Sizer {
        constructor(){
            document.addEventListener('DOMContentLoaded', ()=>{
    
                // windowHeght/Width - размер с учётом ширины скролл полосы
                // documentHeght/Width - размер с учётом ширины скролл полосы
                this.windowWidth = window.innerWidth;
                this.windowHeight = window.innerHeight;
                this.documentWidth = document.body.clientWidth;
                this.documentHeight = document.body.clientHeight;
            })
    
            window.addEventListener('resize', ()=>{
                this.windowWidth = window.innerWidth;
                this.windowHeight = window.innerHeight;
                this.documentWidth = document.body.clientWidth;
                this.documentHeight = document.body.clientHeight;
            })
    
        }
    
    }
    
    let sizer = new Sizer;
    
    
    window.addEventListener('resize', ()=>{
        if(sizer.windowWidth < 1199){
            console.log('размер окна меньше 1199px');
            // тут можно писать что будет происходить с сайтом/разметкой/класса CSS если ширина окна меньше 1199px
        }
    })


    И решение самое простое

    window.addEventListener('resize', ()=>{
        if(document.body.clientWidth < 1199){
            console.log('размер окна без учёта прокрутки меньше 1199px');
            // тут можно писать что будет происходить с сайтом/разметкой/класса CSS если ширина окна меньше 1199px
        }
    })
    Ответ написан
    Комментировать
  • Почему ВКонтакте не подцепляет мой OpenGraph image?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Сброс кэша open graph image
    1. для vk.com - vk.com/dev/pages.clearCache
    2. для facebook.com - developers.facebook.com/tools/debug/
    Ответ написан
    Комментировать
  • Почему при нажатии на Enter беспроводной клавиатуры - выходит буква Й?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    нажимается буква й потому что в этот момент открыта экранная клавиатура а там по умолчанию сразу выбрана буква й. дело в том что есть нюансы клавиши ентер на этой клавиатуре, она не работает так это предполагается))
    Ответ написан
    Комментировать
  • Актуально ли щас учиться вёрстке в 2020?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Конструктор никогда не убьет вёрстку, ввиду своей ограниченности, чистый код всегда актуален. В макеты всегда нужно вносить правки, а без знания верстки тут не обойтись.
    Ответ написан
    Комментировать
  • Нормальный макет для портфолио верстальщика?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Верстальщика макетов или HTML верстальщика?
    Для HTML вообще не важно, главное красивый и качественный код
    А если как дизайнера, то слишком просто и однообразно, повторяющиеся по дизайну блоки, простые формы. Нужно что-нибудь поинтереснее)
    Ответ написан
    1 комментарий
  • Почему массив определяется как строка?

    gtomilin
    @gtomilin Автор вопроса
    JavaScript HTML CSS
    Нашёл ответ - favorites определяется как строка, а не как массив потому что в localStorage была внесена строка. Удалив её всё заработало
    Видимо на каком-то этапе случайно внёс item как строку, поэтому не создавался новый массив JSON и не возможно было извлечь массив из JSON item.
    Ответ написан
    Комментировать
  • Проблема в вёрстке лендинга. Как это понять?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Это связано с размером монитора.
    Если размеры задавались в соответствии с макетом, то без mediaqueries на разных мониторах будет выглядеть по-разному.
    Лечится адаптацией под разные размеры мониторов.
    Но для этого нужны разные макеты под разные разрешения мониторов.
    Ответ написан
    Комментировать
  • Что учить зная базу HTML, CSS?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    JavaScript
    Для начало можно посмотреть плейлист Александр Лущенко там просто и понятно.
    Потом скачать какой-нибудь курс например webformyself там больше теории.
    Потом сами почувствуете что дальше:)
    Ответ написан
    Комментировать
  • Как запретить масштабирование на веб-сайте?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    В ВК в мобильной версии на телефоне нет возможности свайпом увеличить масштаб.
    Значит какой-то способ есть
    Ответ написан
    1 комментарий