Задать вопрос
  • Как тут происходит сложение a и b?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Это "сложение" (не сложение) работает только для целых чисел >= 0.

    Если передать в Array одно число, будет создан (будет попытка создания - отрицательные и нецелые числа приведут к ошибке) массив указанной длины. Метод push может принимать несколько значений, а возвращает - новую длину массива, после добавления элементов. Т.е., в массив из трёх элементов добавили ещё четыре, и получили длину.
    Ответ написан
    Комментировать
  • Как такое сверстать?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот здесь, например, делал когда-то такую вещь (блок "Этапы создания корпоративного сайта").

    605df09f637c9864487824.jpeg

    Идея, вкратце:
    1. Элементы размещаете просто в сетку с помощью inline-block/float/flex/grid - как привычнее.
    2. Родителю задаёте относительное позиционирование, в него помещаете абсолютный элемент на всю ширину/высоту с небольшим запасом, на котором будете рисовать SVG.
    3. Как нарисуется - на js считаете ключевые точки (координаты), через которые нужно провести линии.
    4. Динамически рисуете SVG по вашим ключевым точкам.
      О том, какие варианты вообще есть, можно почитать на MDN, например.
      Выглядеть это будет примерно так:

      605df0b0256ca826129561.jpeg

      В вашем случае рекомендую использовать кривые Безье. Здесь мне нужно было сделать полукруг, поэтому я использовал дуги, у вас же просто статичная величина закругления.
    5. На ресайз окна считаете ключевые точки заново и перерисовываете SVG.
    6. Опционально заморачиваетесь и добавляете сверху ещё один путь, который по скроллу будет "заполняться"


    Это в целом чёрная магия, можно полдня убить, но красиво :)
    Если это всё очень сложно, то просто картинкой вставьте, высоту элементов фиксируйте, и меняйте картинку для адаптивных вариантов.

    Готовых вариантов тут в общем-то вы вряд ли найдёте, нужно взять и разработать.
    У меня была идея оформить это в какую-то библиотеку, но как и все остальные идеи - и ныне лежит в туду-листе на 60+ пунктов. :)
    Ответ написан
    12 комментариев
  • Как такое сверстать?

    RAX7
    @RAX7
    Держи, немного поправил один из своих старых набросков.

    Принцип работы примерно, как описал Максим Морев в своем ответе.
    Ответ написан
    2 комментария
  • Как при выводе строки ограничить количество отображаемых символов?

    0xD34F
    @0xD34F Куратор тега Vue.js
    methods: {
      short: str => str.replace(/(?<=^.{3}).{4,}(?=.{8}$)/, '...'),
      ...

    <span>{{ file ? short(file.name) : 'Прикрепить' }}</span>
    Ответ написан
    Комментировать
  • Как тестировать оптимизацию frontend?

    bingo347
    @bingo347
    Crazy on performance...
    796stwepspdbny_xqrwrrtvoor4.png
    Ответ написан
    Комментировать
  • Как сделать из массива PHP объект JS?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    foreach ($videos as $video) {
        $list[] = [
            'sources' => [
                [
                    'src' => $video->getFirstMediaUrl('videos'),
                    'type' =>'video/mp4',
                ]
            ]
        ];
    }
    Ответ написан
    Комментировать
  • Как вывести элементы массива, которые начинаются на цифры 1, 2, 6?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    Да, ваше решение правильное, но не идеальное
    Что касается решения по ссылке, то:
    arr.filter(num => ['1','2','5'].includes(num.toString()[0])

    Фильтруется изначальный массив, каждое число преобразуется в строку, далее проверяется первый символ строки, если он входит в массив ['1', '2,' '5'], то проходит фильтр, если нет, то не проходит, по итоге получаем отфильтрованный массив с указанным условием
    Ответ написан
    Комментировать
  • Как вставить созданный элемент в строку?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Строка с HTML — это просто строка текста. Без слушателей событий и свойств DOM элементов.

    Вариант: держать в строке плейсхолдер, скажем пустой div с определённым id или классом, и после вставки HTML в документ, заменять тот пустой див на супер-пупер элемент-с-событиями:
    const datePicker = document.createElement("div");
    datePicker.className = 'datePickerInline';
    // тут накладываем на элемент всякие события
    
    const str = '<div><span>Вставляем</span><div> <div class="replace_me"></div> </div><div><p>в уже готовые html элементы в виде строки</p></div></div>';
    
    let el = document.getElementById('element');
    el.innerHTML = str;
    
    el.querySelector('div.replace_me').replaceWith(datePicker);


    План-Б: не вешать слушателей событий прямо на элементы datePicker'а, а слушать его события выше, на общем родителе: скажем, на том el, в который всё это вставляется.
    Ответ написан
    Комментировать
  • Какую из технологий выбрать для фронта маркетплейса?

    DevMan
    @DevMan
    пофигу на чем, хоть всё на нативе.
    тормоза - в реализации, а не технологии.
    Ответ написан
    Комментировать
  • Как защитить исходники своего проекта от воровства?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    1. Разделить репозитории. Дать доступ только к той части проекта, которая минимально необходима разработчику.
    2. Не давать доступ на сервер
    3. Не давать полные инструкции по развёртыванию
    4. Не давать всю БД
    5. NDA

    А вообще в реальной жизни крайне редко кому-то нужны чужие исходники. И это всё лишняя морока и усложнение для всех.
    Ответ написан
    Комментировать
  • Как поставить проверка на высоту блока?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    height() возвращает тип number
    вот и сравнивай if(textHeight > 90) {
    Ответ написан
    Комментировать
  • Кастомная страница при краше реакт приложения?

    @abberati
    frontend-разработчик
    Для этого существуют Error boundaries
    Ответ написан
    Комментировать
  • Алгоритм Регистрации?

    Полазайте по какой-нибудь соц. сети, обращая внимание на адресную строку браузера.

    Аккаунт «для себя» и «для всех» – разные по содержанию страницы.

    Например, ссылка example.com/profile покажет кажому залогиненному пользователю именно его инфу, которую он, к тому же, сможет редактировать.

    А ссылка example.com/user/12345 доступная всем, покажет только публичную информацию о юзере с id = 12345.
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    Seasle
    @Seasle Куратор тега JavaScript
    const handle = el => {
    	setItems(items => items.map(item => item === el
    		? {
    			...item,
    			show: !item.show
    		}
    		: item
    	));
    };
    Ответ написан
    6 комментариев
  • Не видит файл JS который существует, почему так происходит?

    @rPman
    Посмотри очень внимательно на пути, вполне возможно что nginx указан не тот каталог, к примеру старая копия где то лежит, забыл конфиг перенастроить

    Вон на скрине видно что в терминале каталог _nuxt/dist/... а в логах nginx _nuxt/
    Ответ написан
    Комментировать
  • Как проверить чётность суммы элементов массива?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Как проверить чётность суммы элементов массива:

    const isSumEven = arr => arr.reduce((p, c) => p ^ c, 1) & 1;
    // или
    const isSumEven = arr => !(arr.filter(n => n % 2).length % 2);
    // или
    const isSumEven = arr => Number.isInteger(arr.reduce((acc, n) => acc + n, 0) / 2);
    // или
    const isSumEven = arr => /[02468]$/.test(eval(arr.join('+')) ?? 0);

    Получаем вложенные массивы: const result = arr.filter(isSumEven);.
    Ответ написан
    Комментировать
  • Что должен знать backend-разработчик из frontend части?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Ровно столько сколько требуется для выполнения своих рабочих обязанностей. Все что выше - не требуется)
    Ответ написан
    Комментировать
  • Сode review, как улучшить функионал?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Добавление класса перевёртыша выполняется мгновенно, но отображается анимацией в течение 1 секунды (см. стиль .active:
    console.log(`Card ${key + 1} start!`);
    el.classList.add('active');
    console.log(`Card ${key + 1} end!`); // выполнится почти одновременно с предыдущими строками

    Поймать конец CSS-анимации можно примерно: установив setTimeout на то же время, что длится анимация:
    console.log(`Card ${key + 1} start!`);
    el.classList.add('active');
    setTimeout(() => console.log(`Card ${key + 1} end!`), 1000);

    Более грамотный вариант слушать событие окончания анимации. См. transitionend и animationend
    el.addEventListener('transitionend', () => {
      console.log(`Card ${key + 1} end!`);
    });


    spoiler
    setTimeout(() => {
            console.log(`Card ${key + 1} start!`);
            const onTransitionEnd = () => {
              console.log(`Card ${key + 1} end!`);
              el.removeEventListener('transitionend', onTransitionEnd);
            }
            el.addEventListener('transitionend', onTransitionEnd); 
            el.classList.add('active');
          }, ms);
    Ответ написан
    4 комментария
  • Сode review, как улучшить функионал?

    P.s. В промисах, async/await и другой магии адептов - пока что не разбираюсь...

    Разбирайся
    Ответ написан
    Комментировать
  • Можно ли вкладывать тег a в a?

    @Steppp
    Когда что то сверсткал, копируй сюда Валидатор и чекай код на ошибки
    Ответ написан
    1 комментарий