Задать вопрос
  • Как сделать такой loader?

    Aetae
    @Aetae
    Тлен
    Видел тут: https://ant.design/components/progress/
    Но это часть системы, придётся расковырять сырцы, если нужно отдельно.

    "Чистую" версию тоже когда-то вроде встречал, но тут, увы, ссылок не дам.
    Ответ написан
    1 комментарий
  • Как сверстать такое меню?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Если Вам нужно чтобы заливка обрезалась по дуге с картинки, то бы сделал как-то так:
    header, внутри которого nav.
    Задал бы хедеру логотип(с вот этой дугой вметсе) фоновой картинкой, а на основную высоту логотипа задал бы padding сверху. Соответственно, спозиционировал бы правильным образом фоновую картинку с помощью background-position: center top XXpx; (где XX это вот тот зазор сверху между логотипом и самым верхом страницы, пикселей 20 на глаз)
    Ну а теперь самое интересное.
    Обрезал бы nav с помощью clip-path, в соотвествии с розовой линией, указав клюевые координаты, чтобы было плюс минус-дуга. При этом крайние координаты указывал бы в процентах, что позволит nav расти вниз, при добавлении ссылок.
    60b7da23d545a607927710.jpeg

    UPD: мне стало интересно и я решил набросать простенькую демку по описанному выше. Правда картинку выбрал по сложнее :-)
    Откройте в новой вкладке и сделайте ширину в 768пикселей, чтобы более менее адекватно выглядело(хотя тут в фрэйме тоже пойдёт).
    Более плавной дуги можно достичь увеличением количества точек в полигоне. В этом может помочь иллюстратор.
    Можно нарисовать этот полигон прямыми линиями в нём, экспортировать в свг, а потом посмотреть оттуда координаты точек.
    Ну а для более лёгкого адаптива точки нужно рисовать в процентах, а не пиксилях.
    Ответ написан
    Комментировать
  • Замена фотошоп есть?

    @ProstoChel92
    Начинающий фронтендер(очень начинающий)
    Marsy - отличный вариант.
    Ответ написан
    Комментировать
  • Как лучше реализовать appendchild в реакте?

    Simkav
    @Simkav
    Грузите свои таски в массив, и мапом проходитесь по нему
    псевдокод
    tasks.map((task) => <div>{task....}<div/>)
    p.s
    Ну и не забываем про key
    p.s
    doc
    Ответ написан
    2 комментария
  • Зачем нужен Gulp?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Комментировать
  • Как сделать задный фон как на этом сайте?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    60ae10747a3f2832587700.png

    Повторение двух цветов, наклон и транслейт с помощью - transform: skew, translate
    https://webref.ru/css/value/skew
    Ответ написан
    Комментировать
  • Как написать одну функцию для 4 разных компонентов?

    0xD34F
    @0xD34F Куратор тега React
    Вместо нескольких стейтов пусть будет один - объект. Общий обработчик onChange достаёт из целевого объекта помимо значения ещё и имя инпута, одновременно являющегося именем обновляемого свойства (его придётся передавать в экземпляры CustomTextField, а внутри самого CustomTextField прокидывать внутрь TextField). Вот так (как добавить два других свойства - думаю, сами догадаетесь):

    interface IFormData {
      firstName: string;
      lastName: string;
    }

    const [ formData, setFormData ] = React.useState<IFormData>({
      firstName: '',
      lastName: '',
    });
    
    const onChange = (e: React.ChangeEvent<HTMLInputElement>) => setFormData({
      ...formData,
      [e.target.name]: e.target.value,
    });

    <CustomTextField name="firstName" value={formData.firstName} onChange={onChange} />
    <CustomTextField name="lastName" value={formData.lastName} onChange={onChange} />
    
    <!-- или -->
    
    {Object.entries(formData).map(([ k, v ]) => (
      <CustomTextField key={k} name={k} value={v} onChange={onChange} />
    ))}
    Ответ написан
    Комментировать
  • Примеры приложений MERN стека?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Вообще удобно смотреть по realworld app - там стандартизован интерфейс, есть разные имплементации фронтов и бэка
    https://codebase.show/projects/realworld
    Бэк по nodejs+mongo там сейчас не поддерживается.
    Но ознакомиться можно тут: https://github.com/gothinkster/node-express-realwo...
    Впрочем есть свежий пример на базе SQL БД: https://github.com/Varun-Hegde/Conduit_NodeJS
    С реактом там 3 варианта на выбор
    Ответ написан
    1 комментарий
  • Как использовать setInterval для простейшего таймера?

    @tehfreak
    Все дело в замыкании. Переданная в setInterval функция замыкает в себе переменную seconds в значении ноль. Интервал работает, но при каждом следующем вызове функции переменная seconds имеет прежнее значение.

    В setSeconds нужно передать функцию, которая будет вызвана с актуальным значением seconds.

    Вот так:
    function App() {
        
        const [ seconds, setSeconds ] = React.useState(0)
    
        // старый вариант, не работает
        const startTimer = () => {
            setInterval(() => {
                setSeconds(seconds + 1)
            }, 1000)
        }
    
        // новый вариант, работает
        const startTimer = () => {
            setInterval(() => {
                setSeconds((seconds) => {
                    return seconds + 1
                })
            }, 1000)
        }
    
        return (
            <div>
                <button onClick={startTimer}>start</button>
                <h1>{seconds}</h1>
            </div>
        )
    }
    Ответ написан
    Комментировать