• Как сделать эти стрелки?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Svg Path Q(или C). +можно будет анимировать их отрисвку без проблем.
    Ответ написан
    1 комментарий
  • Кто нибудь пробовал работать во фрилансе после работы?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Программисту надо работать меньше, да лучше, а не пахать по 10-12 часов в сутки (тут речь идет именно рабочем программировании, для саморазвития можно хоть целые сутки кодить, но там и подход другой).
    Ответ написан
    Комментировать
  • Гугл хром дичайше тормозит, что может быть причиной?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Словил нечто подобное месяца 3 назад, через неделю после установки какого-то не особо опасного с виду расширения (что-то типа колопикера), удаление расширений и всякие CureIt не спасли. Поначалу казалось что все лечилось, но через пару часов снова начиналась фигня. Хром с адблоком еще как то сопротивлялся открытию рекламных страниц, а вот в фф(с адблоком)/ие постоянно что-то открывалось и тупило. Закончилось все тем, что я наконец то снес гребанную восьмерку, поставил 7 и теперь из расширений ставлю только те, в которых уверен больше чем в своем психическом здоровье :)
    Ответ написан
    2 комментария
  • Как добиться плавности высоконагруженной анимации?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Так как я уже убитый после рабочего дня и войны с кастомными скроллбарами, то полного ревью по веб-перфу дать не смогу. Но по мелочам пробежаться могу.
    1) Вот так выглядит таймлайн сайта, после полного скролла вниз, а затем вверх (смотреть на верхний график).
    YjaRo9S.png
    Если в кратце, то все печально :) На всех переходах фпс стабильно падает до 30 (и иногда ниже). Ваша цель - 60 фпс в среднем, и не ниже 40 на паре-тройке фреймов при переходах.
    Если вы чайник в замерах веб-перформанса с помощью таймлайна (и дев тулс вообще), то вам сюда:
    а) https://developers.google.com/web/fundamentals/per... - святой грааль.
    б) https://www.udacity.com/course/browser-rendering-o... - по сути дела дополнение к текстовому варианту, но только в виде отличных видео и мини-тестами. Там же на udacity есть похожил курс от Григорика.
    в) Искать другие годные статьи в дайджестах и блогах, пилить/изучать демки и все такое.
    2) Очень беглый осмотр показал, что у некоторых элементов анимация происходит с помощью изменения таких свойств как left например (вылезающий и жутко тормозящий блок справа на 3 странице). В 90% случаев для анимации движения/перемещения/отображения прилично использовать только transform/opacity, особенно когда речь идет о больших элементах. С анимацией всяких left/top/width и подобных вещей для больших элементов можете вообще забыть о 60фпс.
    3) Основную ставку вам надо будет делать на создание отдельных слоев для элементов, проще говоря юзать translateZ/backface-visibility. Но только юзать это надо с умом, и каждый раз все профилировать через таймлайн. В веб-перфе есть одна крылая фраза "Tools, not rules".
    Ответ написан
  • Использование jQuery и AngularJS вместе. Это плохо?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Это не плохо. Ибо в самом ангуларе столько всего сделано через жопу, что использование jQuery в некоторых местах будет вашей наименьшей проблемой. Но тут очень важно понимать, где и как этот jQuery юзать, ибо простое подключение глобального файлика с jq-кодом особых результатов не даст из-за асинхронности angular'а, по этому вам все равно придется запихивать jq-код во всякие link функции и прочие места, так что код в итоге получится вполне нормальным.
    Ответ написан
    Комментировать
  • Для фриланса обязательно ли изучать frontend + backend, или хватит одного frontend'а?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Совершенно не обязательно. Занимаюсь только фронтом, к бэкенду последний раз притрагивался на самом старте (если не брать в расчет скаффолдинг на ноде), когда делал сайты на битриксе за еду. Полет нормальный. Нормальные люди ценят специалистов, хорошо разбирающихся в своей области.
    Ответ написан
    1 комментарий
  • Как сделать очистку формы на JS?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Прямой ресет формы:
    $("#searchform")[0].reset();
    Ресет формы по клику на кнопку внутри самой формы:
    $('.reset').on('click', function() {
        $(this).closest('form')[0].reset();
    });

    [0] обращается к оригинальному элементу формы чтобы запустить метод ресета, которого нету в jQuery.
    Ответ написан
    Комментировать
  • Какой принцып работы якорьного progress bar-a?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Примерное описание логики без реального кода:
    1) Получаете размеры секций, на которое будут ориентироваться эти навигационные якоря (height/offsetTop).
    2) Навешиваете на глобальный скролл обработчик, который на основе текущего scrollTop и сравнения с размерами и пункта 1 будет понимать, в какой же секции вы сейчас находитесь и навешивать к нужному кружочку класс active.
    3) Полируете все это дело. Нужно будет навесить обработчик на window resize, чтобы пересчитывать размеры из пункта 1. Можно будет даже сделать, чтобы из одного кружка шла линия прогресса в другому (при разных размерах секций), но это уже из разряда извращений :)
    Ответ написан
    Комментировать
  • Как сделать углы на css?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Итак, решения которые приходят в голову:
    1) CSS clip-path: polygon(%цифры или проценты%) - по идее самое идеальное решение, но поддержка браузерами вас вряд ли порадует.
    2) SVG. То есть берете прозрачный див, внутрь кладете SVG polygon/path с position: absolute и примененным к нему svg фильтром для box-shadow. Адаптивности можно легко добиться с помощью аттрибутов viewBox и preserveAspectRatio. Ну и соответственно поверх свг идет контент, который лежит внутри дива.
    3) Картинка. Ужасный вариант, забудьте :)
    4) Какие-нибудь адские хаки с :before, :after. На фоне свг вообще не боец.

    Сырая демка - codepen.io/suez/pen/2d7d1453a9d842b85ae307e4244cc237
    Ответ написан
    2 комментария
  • Как реализовать 3D изображения на сайте?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Что конкретно вы подразумеваете под 3D изображением? Если речь идет о какой-нибудь полноценной 3D модели, то вам нужен WebGL (либо архимаги 2D канваса или 3D-css без поддержки IE). Если же речь идет о чем то плоском, что нужно вращать в 3d, то можно на css+js сделать.
    Ответ написан
    1 комментарий
  • Блокировка скроллинга страницы при скроллинге дочернего DIV`a?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Сам неделю назад решал подобную проблему, когда необходим был скролл внутри кастомного попапа, с блокировкой скролла самой страницы. Оказалось, что если вариант с overflow: hidden; не подходит по эстетическим соображениям из-за моментально меняющей ширины страницы (пропажа скроллбара), то придется пилить велосипед. Тут реализована блокировка скролла, которая позволяет скроллить внутри контейнера, если в направлении скролла есть чего еще скроллить. То есть если убрать строчки с st > 0 (и подобной для конца скролла) , то глобальная страница будет скроллится, когда скролл попапа будет доходить до конца/начала. Ну а $(e.target).closest(popUpClass).length соответственно проверяет, находитесь ли вы внутри попАпа в общем плане, чтобы не блокировался весь скролл вообще. Ах да, тут еще блокируются клавиши для скроллинга, кроме пробела, чтобы в инпутах печатать можно было.
    Получилось примерно такое:
    var scrollKeys = [33,34,35,36,38,40];
    var popUpClass = ".%класс-активного-попАпа%";
    
    function preventScroll() {
      $(document).on("mousewheel DOMMouseScroll", "body", function(e) {
        var $np = $(popUpClass)[0];
        var st = $np.scrollTop;
        if (e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
          if ($(e.target).closest(popUpClass).length && 
              st > 0) return;
        } else {
          if ($(e.target).closest(popUpClass).length && 
              st + $np.offsetHeight < $np.scrollHeight) return;
        }
        e.preventDefault();
        e.stopPropagation();
      });
    
      $(document).on("keydown", function(e) {
        if (scrollKeys.indexOf(e.which) > -1) {
          e.preventDefault();
        }
      });
    };
    
    function returnScroll() {
      $(document).off("mousewheel DOMMouseScroll keydown");
    };
    
    // если необходимо делегирование событий, замените на mouseenter и mouseleave соответственно
    $(popUpClass).hover(function() {
      preventScroll();
    }, function() {
      returnScroll();
    });
    Ответ написан
    5 комментариев
  • Как вы начинаете вёрстку сайта?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    1) Захожу сюда codepen.io
    2) Жмякаю New Pen
    3) Создается новый пен где уже все настроено под меня (SASS/отступы/лайвапдейт и так далее).
    4) Верстаю
    5) ...
    6) PROFIT!
    Если верстка многостраничная, то один пен делаю глобальным (SASS переменные/общий JS код) и линкую его в другие пены. + можно все это дело форкать до потери пульса, и показывать ссылки заказчику (ссылки все приватные, если имеется PRO аккаунт). Особенно удобно, когда имеется несколько вариантов анимации, то просто делаю 2-3 форка и даю ссылки, а человек наглядно сравнивает все.
    Ответ написан
    15 комментариев
  • Как создать такой эффект?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Это сделано на Canvas'е. Обращаться надо к тем, кто с ним дружит. Даже не знаю как по другому еще и сказать то.
    Ответ написан
  • Как реализовать смену класса по передвижению курсора вниз с зажатой кнопки мыши?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Код примерно будет выглядеть вот так (работает сразу для мыши и тача):
    $(document).on("mousedown touchstart", ".%класс_области_активности_ивентов%", function(e) {
      // если необходимо, сохраняем стартовую позицию ивента
      var startY =  e.pageY || e.originalEvent.touches[0].pageY;
    
      $(document).on("mousemove touchmove", function(e) {
        // получаем Y координаты во время движения с зажатой мышью/тачем
        var y = e.pageY || e.originalEvent.touches[0].pageY;
        // ваши действия со всей этой фигней
      });
    
    });
    
    $(document).on("mouseup touchend", function() {
      // отключаем обработчики маусмува/тачмува
      $(document).off("mousemove touchmove");
      // действия, которые вы возможно хотите сделать по окончании действий юзера
    });
    Ответ написан
    1 комментарий
  • Под какие основыные размеры настраивать CSS @media screen?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Многое зависит от типа вашего сайта. Если речь идет о каком-нибудь контентном сайте (новости/блог/что-то еще с разношерстной структурой) то тут не обойтись без нескольких мобильных диапазонов (мелкие мобильники, лопаты, планшеты). Если же речь идет о каком-нибудь простом лэндинге, где вся информация представлена "линейно" в вертикальном потоке, то без особых проблем можно взять за основу один брейкпоинт max-width: 921px и делать адаптив под него. + если вы хотите сделать не абы что, вам понадобится дизайнер, который вам нарисует хотя бы мокап мобильной версии.
    Ответ написан
    Комментировать
  • Какие недостатки, неудобства или проблемы могут быть при использование AMCSS?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Если бы увидел, как кто-то на проекте юзает эту методику - убил бы тут же.
    Ответ написан
  • Обязательно ли быть верстальщиком, чтобы устроиться на работу Junior Frontend'ером?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Верстка и фронтенд это как бы неразделимые вещи. Просто при запиливании каких-нибудь SPA приложений можно обойтись css фреймворком и почти все время уделять js-коду, но от верстки макетов вам никуда не уйти, если речь идет о чем то нормальном.
    Тоже ненавидел psd>html раньше, но обожал обычную верстку (запиливать демки на кодпене так сказать "из головы" или по картинке). Сейчас без проблем и агонии верстаю из psd, как оказалось я просто не умел адекватно пользоваться фотошопом (да и щас конечно не мастер) и мне не особо хотелось этому учиться. Сейчас на руки попадают макеты от хороших дизайнеров, где все удобно и качественно сделано + я адекватно использую инструменты фш = верстка идет отлично. Конечно этот процесс все равно намного более медлителен и приятен, чем запиливание демок, но за это хотя бы платят отличные деньги :)
    Ответ написан
    1 комментарий
  • Как сделать такие кнопки?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    codepen.io/suez/pen/b7033b508fa221e1fbe4a9843a4a67fd
    Если SASS непонятен, в css секции кликните кнопку View Compiled.
    Я сделал не анкором, а button элементом. Суть кнопки простая - белый текст, синий бордер, прозрачный фон. С помощью :after делается фон, и при :hover этот :after анимирует scale() (выше 1.5) и изменение opacity до 0. Пилил на глаз, в их код не смотрел.
    Ответ написан
    Комментировать
  • Как сверстать дерево комментариев?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    За пример для подражания я бы взял https://disqus.com (там прямо на главной есть страницы, на которых комменты дискаса внизу).
    Смотрите как что сделано у них.
    По поводу большой вложенности - у всех нормальных систем комментариев есть определенный лимит на вложенность, у дискаса лимит вроде как равен 4, после чего комментарии этой ветки начинают идти ровно один под другим.
    Ответ написан
    Комментировать
  • Можно ли использовать единицы измерения rem (root em) вообще для всего в CSS?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Делаю вот так:
    html, body {
      font-size: 62.5%; // 1rem = 10px и никакой попаболи как с EM
    }

    И верстаю все только в rem уже более полугода (за исключение тонких бордеров в 2-3px и подобных микро-вещей, которые при снижении font-size для html, body могут выдавать становиться тоньше, чем надо).
    Главная фишка - возможность скейлить всю верстку под разные разрешения. Хочется сделать все на 25% больше для мониторов шире 1600px? Просто пишешь:
    html, body {
      @media (min-width: 1600px) {
        font-size: 78.125%;
      }
    }

    И вся верстка магическим образом идеально скейлится. Тоже самое касается и понижения, очень удобно в адаптивной верстке.
    Недостатки у rem есть, но они безобидные для нормальных людей - ie9+ и баг с небольшой неточностью приема 62.5% в каких-то версиях ie (вроде как в 10), что в общем то не заслуживает внимания.
    Ответ написан
    4 комментария