• Как растянуть высоту дочернего. до высоты родительского??

    @limpch
    Без flex только на таблицах

    <style>
    body {background:#aaa; margin:0;
    }
    #d_all {background:white;width:90%;margin-left:auto; margin-right:auto;margin-top:3px;margin-bottom:3px;}
    #d_left {width:195px;float:left;background:white;text-align:left}
    #d_right {margin-left:195px;background:white; width: 100%; text-align: left}
    </style>
    
    <table id="d_all">
      <tr>
        <th id="d_left">
         1<br> 1<br> 1<br> 1<br> 1<br>
        </th>
        <th id="d_right">
           12<br>
        </th>
      </tr>
    </table>


    Больше нужно стилилизовать, но по другому никак не сделать)
    Ответ написан
  • Как сделать такую анимацию, параллакс?

    @limpch
    Точно никто не расскажет как это делать, тут большой скрипт. Длинный блок со sticky контентом внутри. Отслеживает точки скролла и на этих точках запускает замену изображения и меняет контент. При нажатии на кнопки, происходит скролл до точки и по достижению срабатывает скрипт изменения контента и блока. Я бы сделал с помощью Intersection Observer отслеживание скролла до точек и обычную замену по индексу точки. Дошли до третьей, вызываем скрипт смены на третьей точке. Высоту главного блока задаем где-то 200-300vh, в зависимости сколько скролить нужно будет, и создаем три блока нужной высоты, при которых будет происходить смена)

    Надеюсь ты что то поймешь, из того что я написал, если ты начинающий программист, то пока не лезь в это :)
    Ответ написан
    Комментировать
  • Как добавить класс при клике?

    @limpch
    ты не правильно используешь querySelector. Селектор класса нужно указывать с точкой в начале, вот так:
    const contact_btn = document.querySelector('#cms_contacts'); // id
    const block = document.querySelector('.block'); // class
    const sub_contacts = document.querySelector('.header_sub_cms_contacts'); //class


    У тебя из за этого не находит элемент, из за того что он ищет по тегу, и ты типа пытаешься найти
    <block></block>
    а не
    <div class="block"></div>
    Ответ написан
    3 комментария
  • Как создать один компонент из другого и управлять им?

    @limpch
    Сложный вопрос, отвечу как понял))
    У тебя где-то хранится состояние когда пользователь залогинен, а когда нет? Через что ты контролируешь это?

    Если как ты указал выше, mobX, то в стейте создай еще одно поле по типу logoutConfirm и меняй еще состояние. При нажатии на выход, меняй состояние logoutConfirm на pending например, и выводи этот блок с подтверждением. При нажатии меняй logoutConfirm на false например, если нажали нет и ее нужно держать в скрытом состоянии, и на true, если согласились и делай выход.

    Я думаю это можно сделать только с помощью mobX, redux или useContext
    Ответ написан
    Комментировать
  • Как правильно задать Types для объектов где есть несколько типиов "контента"?

    @limpch
    Ты пытаешься тип контент присвоить к типу iTextContent. В ITextContent у тебя только value, а ты пытаешься туда поместить type и value. Сделай так:

    Поменяй тип у post.content с Content на ITextContent
    export interface Content {
      type: "text" | "video" | "header" | "code" | "images" | "remark" | "materials";
    }
    export interface ITextContent extends Content {
      value: string;
    }
    export interface Post {
      title: string;
      content: ITextContent[]
    }
    // ...
    
    
    const items:Post = {
      title: "foo bar",
      content: [
        {type: "text", value: "lorem 1"},
        {type: "video", url: "lorem 2"},
        {type: "text", value: "lorem 3"}
        // ...
      ]
    };
    
    const onlyTextType:ITextContent[] = items.content.filter(({type}) => type === "text");
    Ответ написан
  • Как по клику вывести третий инпут?

    @limpch
    Напиши вместо
    document.getElementById('div1').innerHTML =
        '<input type="text" name="text1" class="form-control w-50"/>';


    document.getElementById('div1').innerHTML +=
        '<input type="text" name="text1" class="form-control w-50"/>';


    Ты сможешь добавлять их много, но не сможешь удалять, будет больше как костыль. Но если тебе не принципиально, то это поможет.
    Ответ написан
    3 комментария