Задать вопрос
  • Как отследить перемещение элемента?

    szQocks
    @szQocks
    Дмитрий, вообще отслеживание одновременно, стили у контейнера, тот же gap, и всех потомков а точнее все их стили, типа margin, width и т.д ( ну тут до бесконечности можно перечислять ) - это невероятно, очень трудозатратная операция для браузера, той же оперативки, у тебя не то что сайт будет лагать, а целый браузер.

    можно это конечно через debounce или throttle обернуть, но всё равно - это идея не хорошая
  • Как отследить перемещение элемента?

    szQocks
    @szQocks
    Дмитрий, ты не верно подходишь к решению задачи, которая стоит перед тобой. Я уверен что там всё намного проще чем кажется на первый взгляд, просто ты мыслишь не в том направлении.

    На сколько я понял из всего что ты написал - ты хочешь при dropdown отследить элемент какими-то необычными способами.

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

    в 99.99999999999999999999999999999999999999999% - нет той задачи, которая бы требовала отслеживать изменение gap ( стиль )
  • Как преобразовать массив с 3 индекса?

    szQocks
    @szQocks Автор вопроса
    0xD34F,
    А если открыть документацию и посмотреть, что делает map со своим вторым параметром?
    - вызывает callback для каждого элемента, но в качестве контекста - будет второй агрумент который был передан в метод map, что-то типа этого fn.call(второй аргумент map, остальные аргументы) , в this - будет массив [ num / arr.length | 0, num % arr.length ] - но моя проблема не в этом была, а в том что num / arr.length | 0 - эта запись, а именно оператор побитового или, я например не часто его вижу, и что бы понять сходу какой будет результат num / arr.length | - здесь, то пришлось открыть документацию и вспомнить а что делает оператор побитового или, и продебажить.

    только пока значение index не превышает верхнюю границу массива.
    что значит верхняя граница массива ? длина массива ?
  • Как преобразовать массив с 3 индекса?

    szQocks
    @szQocks Автор вопроса
    0xD34F, спасибо что изменили ответ, написали различные варианты, я хоть и разобрался в них - в том как они работают, но в голове от этого не прибавилось. Так как в конечном итоге, я не понял ход ваших мыслей.

    вот кстати этот участок кода, сложноватый что бы с ходу так просто я глянул и понял что тут происходит

    const newArr = arr.map(function(n, i, a) {
      return n + this[0] + (((i - index) % a.length + a.length) % a.length < this[1]);
    }, [ num / arr.length | 0, num % arr.length ]);


    + это похоже что-то из разряда тестового задания для эксперта ...
    где есть один лишний % a.length и побитовое или в массиве, которым толком никто нигде никогда не пользуется, и в большинстве случаев человек пойдёт гуглить и вспоминать что делает этот оператор

    P.S ну и сам вариант что я тупой - я тоже не отрицаю. Повторю математику, может будет в этом толк, посмотрим.
  • Как преобразовать массив с 3 индекса?

    szQocks
    @szQocks Автор вопроса
    0xD34F мне вот интересно, вы же когда писали это решение - просто экспериментировали с делением с остатком, подгоняя те или иные числа ? главное что бы результат получился тот который был нужен ?

    потому что заранее в голове продумать такой вариант - сомневаюсь что возможно
    Если вы заранее продумали этот вариант, то что тогда такого нужно изучать что бы на столько нестандартно мыслить ?
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

    szQocks
    @szQocks
    Niksak, я тебя запомнил, шутник, что б я ещё раз ответил на твои вопросы - никогда!

    действительно там есть стиль зум, мде
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

    szQocks
    @szQocks
    Niksak, ну проанализировал я твой код и скрин, и сделал вывод что это не модалка уходит за пределы экрана а блок относительно которого она позиционируется, и вангую, что она позиционируется абсолютом - не относительно боди

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

    szQocks
    @szQocks
    Niksak, проблема в стилях наверное, вряд ли подскажу что-то, так как что бы точно ответить на твой вопрос, надо взглянуть то как она там в разметке в HTML появляется это окно + посмотреть стили, сам понимаешь - гемороя выше крыши, попроще вопросы задавай)

    да и если на то пошло, раз ты разраб на vue, с модалкой должен на легаси разобраться чё уж...вряд ли сверхъестественная она
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

    szQocks
    @szQocks
    Niksak, она не за пределами, лишь часть её, тогда в условии не нужно складывать ширину, просто проверять if(left < 0 || left > window.screen.width) { }

    а хотя в твоём случае это проверка не поможет, у тебя там вообще стоит 370+ px left, хз как ты так сверстал её
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

    szQocks
    @szQocks
    Niksak, как ты её в боди кидать будешь - это я не знаю, в реакте есть порталы, в Vue - хз
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

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

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

    szQocks
    @szQocks
    Niksak, if(left < 0 || left > window.screen.width) { }

    или мб так даж

    if(left + width < 0 || left >  window.screen.width) { }


    ?
  • Как отследить, вышел ли блок за пределы окна браузера или нет?

    szQocks
    @szQocks
    Niksak, почему бы тебе не сверить ширину и высоту ( если высота нужна тоже ) с блоком который равен 100% ширины окна просмотра ?

    а даже не блок сверить а просто получить window.screen.width
  • Как сделать поочередное заполнение блоков?

    szQocks
    @szQocks
    0xD34F, там если не ошибаюсь в вашем решении индикаторы полностью закрашиваются, а не на половину ( точнее не по процентам )
  • Почему react не показывает новый массив?

    szQocks
    @szQocks
    Suleymanov, ты можешь сказать, щас работает так как надо или нет ? и если работает так как надо - ответь сам на свой вопрос, и сделай ответ решением
  • Почему react не показывает новый массив?

    szQocks
    @szQocks
    Suleymanov, по факту эти компоненты должны пересоздаваться и перерисовываться, даже если и ключи не указаны, так как при любом изменении стейт - создаётся новый массив

    скорее ошибка была в том - как был объявлен стейт, видимо из-за кривого объявления, компонент не перерисовывался - ну это мои догадки, я на классовых не пишу поэтому уже и не помню что там да как
  • Почему react не показывает новый массив?

    szQocks
    @szQocks
    Suleymanov,

    ключи нужны что бы реакт понимал где какой компонент обновился в виртуальном доме, возможно и в ключах проблема, вот только есть ещё одна проблема, из вопроса - я не понял в чём проблема вахах)
  • Почему react не показывает новый массив?

    szQocks
    @szQocks
    Suleymanov, особо ничем не отличается отрисовка, просто в твоём случае у них нет ключей

    я просто предложил запись короче, это не решение к вопросу, так просто от скуки написал

    результат тот который нужен или нет ? или всё ещё не так работает ?
  • Почему react не показывает новый массив?

    szQocks
    @szQocks
    Suleymanov,
    import { Component } from "react";
    import getCharacters from "../getCharacters/getCharacters";
    import OneCharacter from "../oneCharacter/oneCharacter";
    import Button from "../button/button";
    import rightArrow from '../../imgs/right-arrow.png';
    import leftArrow from '../../imgs/left-arrow.png';
    import './carousel.scss';
    
    class Carousel extends Component {
    
    constructor() {
        super();
        this.state = {
            offset: 4,
        }
      }
    
        plusChars() {
                this.setState(({offset}) => ({
                    offset: offset + 1
                }))
        }
        minusChars(){
            if (this.state.offset === 0) {
                return;
            }
            this.setState( ({offset}) => ({
                offset: offset - 1
            }))
        }
        onUpdate(){
            this.setState(({ offset }) => ({
                offset: offset + 4,
            }))
            console.log(this.state.persons);
        }
        render() {
            return (
                <section className="carousel">
                    <div className="carousel__wrapper">
                        <div className="carousel__inner">
                            {Array.from({ length: this.state.offset }).map((_, i) => <OneCharacter key={i} offset={i + 1} />)}
                        </div>
                        <div className="carousel__buttons">
                            <div className="carousel__leftA" onClick={this.minusChars}><img src={leftArrow} alt="left arrow" /></div>
                            <div className="carousel__rightA" onClick={t<code lang="javascript">
    
    </code>his.plusChars}><img src={rightArrow} alt="right arrow" /></div>
                        </div>
                    </div>
                    <Button name={'Add Hero'} onClick={this.onUpdate} />
    
                </section>
            )
    
    
    
        }
    
    }
    export default Carousel;


    попробуй так