Задать вопрос
  • Стрелка на самописных часах на 60-й секунде крутится в противоположную сторону. Как исправить?

    profesor08
    @profesor08 Куратор тега CSS
    Убери transition, он тебе только мешает. setTimeout, setInterval тут не подойдут, они не гарантируют, что твои часики будут тикать соответственно времени.

    Вариантов у тебя несколько, задать движение стрелок при помощи @keyframes, чтоб они все время крутились, продолжительность 60 сек и 3600 сек соответственно. Программно при загрузке поворачивать контейнер стрелки на нужный угол, чтоб стрелки начинали идти с нужного положения.

    Другой вариант это двигать стрелки на js, анимировано и плавно, независимо от частоты кадров. Увеличиваем значение и угол поворота растет и растет до бесконечности, но можешь его уместить в рамки 0 - 359 - (seconds * 6) % 360

    const sec = document.getElementById("sec");
    const min = document.getElementById("min");
    
    let lastTime = Date.now();
    let seconds = (new Date()).getSeconds();
    let minutes = (new Date()).getMinutes() + seconds / 60;
    
    function animate() {
      const now = Date.now();
      const deltaTime = now - lastTime;
      lastTime = now; 
      
      seconds += deltaTime / 1000;
      minutes += deltaTime / 1000 / 60;
      
      sec.style.transform = `rotate(${seconds * 6}deg)`;
      min.style.transform = `rotate(${minutes * 6}deg)`;
      
      requestAnimationFrame(animate);
    }
    
    animate();


    Аналогично можно подсчитывать время на каждом кадре
    const sec = document.getElementById("sec");
    const min = document.getElementById("min");
    
    function animate() {
      const date = new Date();
      
      const seconds = date.getSeconds() + (date.getTime() % 1000) / 1000;
      const minutes = date.getMinutes() + seconds / 60;
      
      sec.style.transform = `rotate(${seconds * 6}deg)`;
      min.style.transform = `rotate(${minutes * 6}deg)`;
      
      requestAnimationFrame(animate);
    }
    
    animate();
    Ответ написан
    1 комментарий
  • Как передать POST параметры при открытии страницы?

    profesor08
    @profesor08 Куратор тега JavaScript
    При клике парси ссылку, получай параметры и делай с ними что хочешь. Примеров как распарсить ссылку - валом (js parse url).
    Ответ написан
  • Как можно создать такую анимацию? Точнее с помощью чего?

    profesor08
    @profesor08 Куратор тега JavaScript
    Создается N блоков, каждому задается один и тот-же фон, но со смещением, чтоб выглядело все это дело как единая картинка. Этим блокам задается одинаковый transform: skew, чтоб они стали под наклоном, а при анимации сдвигают их по одному с какой-то задержкой. Создавать блоки программно или руками дело твое.
    Ответ написан
    Комментировать
  • Как делать подобные "трюки"?

    profesor08
    @profesor08 Куратор тега CSS
    Расположи одну картинку поверх другой, и какую-то полоску по середине, которую будешь дергать туда-сюда. Ширину второй картинки задай 50%. Убедись чтоб изображение было выровнено по левому краю и заполняло всю высоту, а в ширину auto. Далее прилепи простейший drag'n'drop и для полоски, и задавай ширину картинки в зависимости от положения полоски. Кода требует мало, сложностей особых нет, и чему нибудь научишься.
    Ответ написан
    Комментировать
  • Как правильно воспользоваться async await?

    profesor08
    @profesor08 Куратор тега JavaScript
    const arr = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg'];
    
    const getImg = async (url) => {
      const response = await fetch(url); 
      const blob = await response.blob();
      const reader = new FileReader();
    
      return new Promise(resolve => {
        reader.addEventListener('loadend', function() {
          resolve({image: reader.result});
        });
        reader.readAsDataURL(blob);
      });
    }
    
    document.querySelector('button').addEventListener('click', async () => {
        
        const arrImg = await Promise.all(arr.map(
          url => getImg(url)
        ));
    
        console.log(arrImg);
    });
    Ответ написан
  • Отвратительный лог ошибок в nuxt?

    profesor08
    @profesor08 Куратор тега JavaScript
    https://ru.nuxtjs.org/guide/installation
    Если ты создавал свой проект так, то сурсмапы у тебя должны работать, если нет, то ищи способ их добавить, тогда ты будешь получать более подробную информацию об ошибках, и где они случились.

    А еще у тебя какой-то $options не определен, может это от него ноги растут.

    А может ты пытаешься внедрить стороннюю библиотеку или код, который работает с dom, после перерендера компонента, естественно все ссылки на элементы у него дохнут.

    Так что чтоб тебе реально помогли, скриншота ошибки недостаточно, нужен рабочий пример кода, который это все демонстрирует.
    Ответ написан
    Комментировать
  • Какой выбрать монитор для верстальщика?

    profesor08
    @profesor08
    Если ли смысл в 4k

    Да, покупать фул-хд для работы смысла нет, на нем места мало, пикселей мало, а на большом экране с большим разрешением больше возможностей тестирования, сразу будешь видить косяки растровой графики и куча удобств. Соотношение сторон 21:9 прекрасно заходит, 3440х1440 отлично, если есть возможность взять с большим разрешением - бери, ни разу не пожалеешь. Изогнутый или нет, лучше посмотреть в живую, эстетически выглядит прекрасно, вау эффект обеспечен, в работе никак не мешает, зато за монитором больше пространства и колоночки прекрасно влезают.
    Ответ написан
    Комментировать
  • Как понять, что я сверстал правильно?

    profesor08
    @profesor08
    Прочитай внимательно внимательно тут margin . Прочитав внимательно ты поймешь как они работают, и тебе станет ясна область их применения. Аналогично касается и padding. Скажешь, к чему это я, ведь ты и так знаешь чтоб это внешний и внутренние отступы. Но углубись в детали, описанные в самых нижних абзацах. Разобравшись, ты поймешь области их применения, и что ими даже можно заменить друг друга.
    Ответ написан
    5 комментариев
  • Как сделать эффект текста как на сайте vintage.com.ua?

    profesor08
    @profesor08 Куратор тега CSS
    Там все сложно, Snap + bodymovin, в /static/js/home.js можешь дернуть код, точка входа селектор "svg-wrap". От него и пляши, там дойдешь до Snap(i.$mainSVG[0]) и смотри какие там параметры и откуда они растут.
    Ответ написан
    Комментировать
  • Как закрыть модалку кликом вне окна?

    profesor08
    @profesor08
    У тебя есть два пути, в первом тебе надо искать нужный узел, во втором тебе надо расположить за элементом другой фоновый элемент, по которому кликаешь. Второй проще, но требует дополнительный элемент на странице(фон видимый/невидимый) и дополнительные стили для него, чтоб он был на весь экран, позади нужного элемента и он не должен быть родителем отображаемого элемента.
    При первом варианте ты вешаешь обработчик клика на body, в нем ты получишь текущий target по которому был произведен клик, далее тебе надо рекурсивно проверить, не является ли он потомком или самим отображаемым элементом, если нет, то клик был за пределами. Проверять надо e.target.parentNode.
    Ответ написан
    Комментировать
  • В какой момент продукт перестает нести клеймо «самописный»?

    profesor08
    @profesor08
    Самописность - понятие относительное. Вот есть некий сайт, если его использую я, то для меня он не самопис, а если его использует его разработчик, то для него это самопис.
    Ответ написан
    Комментировать
  • Как исключить перезагрузку страницы при передаче параметра POST?

    profesor08
    @profesor08 Куратор тега JavaScript
    Это все у тебя форма, а раз так, то нажатии кнопки и так отправляет данные формы. Обновление страницы происходит при отправке формы, значит тебе надо отловить событие отправки формы и прервать его.

    form.addEventListener("submit", e => {
      e.preventDefault();
      // тут делай все свои дела, собирай данные и делай с ними что хочешь.
    })
    Ответ написан
    5 комментариев
  • Можно ли использовать setTimeout рекурсивно?

    profesor08
    @profesor08 Куратор тега JavaScript
    Рекурсивно использовать можно. Но если хочется плавных анимаций, таймауты это не то, что надо использовать. Тебе нужен requestAnimationFrame, и вычисление производить там, плавность гарантируется. Меня функцию ease можно добиться разного рода поведения прокрутки, от приятных и плавных, до резиновых, прыгучих и забавных.

    Примеры распространенных функций:
    https://gist.github.com/gre/1650294

    Демо:
    https://jsfiddle.net/profesor08/h7fmcs35/

    let currentScrollY = 0;
    let targetScrollY = 0;
    let t = 0;
    
    document.body.addEventListener("click", () => {
    	targetScrollY = Math.floor(Math.random() * getScrollheight());
      currentScrollY = getScrollTop();
      t = 0;
    });
    
    function getScrollheight() {
    	return document.documentElement.scrollHeight || document.body.scrollHeight;
    }
    
    function getScrollTop() {
    	return document.documentElement.scrollTop || document.body.scrollTop;
    }
    
    function setScrollTop(to) {
      document.documentElement.scrollTop = to;
    	document.body.scrollTop = to;
    }
    
    function ease(t) { return (--t)*t*t+1 }
      
    
    function animate() { 
      if (t < 1) {
        t += 0.01;
      
      	setScrollTop(
        	currentScrollY + (targetScrollY - currentScrollY) * ease(t)
        );
      }
        
      requestAnimationFrame(animate);
    }
      
    animate();
    Ответ написан
    Комментировать
  • Как спарсить новости с любого новостного сайта?

    profesor08
    @profesor08
    Ручками парсишь хтмл любым удобным способом. Либо платишь тому, кто это сделает за тебя.
    Ответ написан
    Комментировать
  • Как использовать Gulp сборки для других проектов?

    profesor08
    @profesor08
    Берешь минимальный набор файлов, позволяющий установить все необходимое и запустить базовый шаблон. Пушишь его в гит. Потом в новой папке просто клонируешь с гита, меняешь название и делаешь npm install. Можешь пойти дальше и сделать свой собственный пакет, который будет за тебя все скачивать, устанавливать, задавать параметры, формировать каталоги и тд. Все в твоих руках, тыж программист или как?
    Ответ написан
  • Возможно ли создать приложение на WebView?

    profesor08
    @profesor08
    Ну пили обычное веб приложение и запакуй его с помощью Phonegap. Все.
    Ответ написан
    Комментировать
  • Как поднять производительность FF при работе с css blur?

    profesor08
    @profesor08 Куратор тега CSS
    Вот берешь весь свой код с идеей с двумя видео и выкидываешь на помойку. Для реализации всего задуманного тебе надо лишь 1 видео, скрытое и 2 канваса. Видео само воспроизводится, на канвасах рисуй его, один из них размывай как хочешь, хоть свойством blur, хоть средствами канваса. Результатом будет два канваса, на которых синхронно рисуются кадры из видео, и один будет заблюрен.

    А если картинку видео передавать в шейдер, и рисовать все там, то производительность будет космическая.
    Ответ написан
  • Есть ли преимущества передачи бинарных данных через websocket?

    profesor08
    @profesor08 Куратор тега JavaScript
    Данные в любом случае передаются в бинарном формате. Только в одному случае данные переводятся в текст json, потом в base64 бинарный, а потом в бинарный для передачи, а в другом текст json передается как есть, сразу его бинарные вид. Значит на сервере и клиенте отпадает необходимость в дополнительном кодировании/декодировании данных. Возможно даже не придется переводить объекты в json текст, а передавать их как есть.
    Ответ написан
    Комментировать
  • Почему говорят, что Javascript сделан на коленке?

    profesor08
    @profesor08 Куратор тега JavaScript
    Или остаются какие-то принципиальные моменты, которые не позволяют использовать его для серьезной разработки?

    Если весь интернет это не серьезно, то даже не знаю что сказать.
    Ответ написан
    9 комментариев
  • Как клонировать приложения Android?

    profesor08
    @profesor08
    10 телефонов / 10 эмуляторов
    Ответ написан
    Комментировать