Задать вопрос
  • Запуск скрипта в определенное время?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Если правильно понял
    // Функция проверки вхождения текущего часа в отрезов от from до to (не включительно)
    function isHourRange(from, to) {
       var now = new Date();
       var curHour = now.getHours();
       return curHour >= from && curHour < to;
    }
    
    if(isHourRange(0, 9)) {
       $('.ageWindow').fadeIn(100);
    }
    Ответ написан
    Комментировать
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Сортировка в JavaScript многомерных массивов по одному из параметров?

    BenderLib
    @BenderLib
    JS
    var item_unitaz = [
    {'item_id':1, 'article':'DE23421312', 'name':'Привет','type':2},
    {'item_id':2, 'article':'DE12421442', 'name':'Пока','type':32},
    {'item_id':3, 'article':'DE78677833', 'name':'Воробей','type':68},
    {'item_id':4, 'article':'DE23442235', 'name':'Петух','type':45}];
    
    function compareUnitaz(a, b) {
         return a.type - b.type;
    }
    item_unitaz.sort(compareUnitaz)
    Ответ написан
    Комментировать
  • Почему не работает создание объекта?

    0xD34F
    @0xD34F
    Почему не работает - вам написали, синтаксическая ошибка.

    Возьмите ваш action.title в кавычки, либо в квадратные скобки - в зависимости от того, что вам нужно. В первом случае именем свойства будет "action.title", во втором - значение action.title.

    Кстати, а что нужно? Очевидно, второй вариант - значение action.title должно стать ключом, но что дальше? Ведь получится, что ключ и значение свойства вложенного объекта совпадают, а больше в этом вложенном объекте ничего и нет. Будет ли он дополняться в будущем чем-то ещё? Если нет, было бы логичнее складывать эти title'ы в массив вместо создания отдельного объекта под каждый. Если да, то в случае, если объект с указанным title'ом уже существует, его свойства будут потеряны. Так и задумано? Если нет, то их надо копировать:

    return {
      ...state,
      [action.title]: {
        ...state[action.title],
        title: action.title,
      },
    };
    Ответ написан
    Комментировать
  • Почему не работает создание объекта?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Дополню ответ 0xD34F - нельзя в качестве названия свойства указывать что-то через точку.

    return {
              ...state,
              название_поля:{
                  title:action.title
              }
          }


    где вместо название_поля должна быть строка! Если вы хотите, чтобы это было вычисляемое выражение, то нужно добавлять (как уже сказано было) квадратные скобки, то есть:

    return {
              ...state,
              [action.title]:{
                  title:action.title
              }
          }


    Но я думаю 99% вам хочется чего-то не такого, ибо в таком случае у вас получается что в state будет установлен title в поле с таким названием, которое вам придет в action.title, например:

    return {
              ...state,
              dollar:{
                  title: "dollar" // предположим что в action.title строка "dollar"
              }
          }


    Чтобы разобраться - теория.

    p.s. тэг "функциональное программирование" тут смотрится слишком опасно)
    Ответ написан
    1 комментарий
  • Как сделать Заголовок разноцветным, а также чтобы цвета букв были темными?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Использовать для каждой буквы свой элемент span
    <p class="chars">
      <span class="chars__item chars__item_orange">H</span>
      <span class="chars__item chars__item_lime">E</span>
      <span class="chars__item chars__item_blue">A</span>
      <span class="chars__item chars__item_purple">D</span>
      <span class="chars__item chars__item_blue2">E</span>
      <span class="chars__item chars__item_green">R</span>   
    </p>

    И пишите в стилях цвет для каждого класса.
    Пример https://jsfiddle.net/a4w4ydpu/
    Ответ написан
    Комментировать
  • Как сделать Заголовок разноцветным, а также чтобы цвета букв были темными?

    cyril_b
    @cyril_b
    Оберните каждую букву в span и стилизуйте через nth-child с помощью css
    Ответ написан
    Комментировать
  • Как здесь работает логика JS?

    @Insolation
    Да правильно. То есть вы просто пытаетесь достучатся к некому значению в объекте.
    Квадратные скобки дают вам просто преимущество в том, что они разрешают юзать в себе переменные. С обращением через точку, вам бы такого не позволило.

    Читать:
    1 - https://medium.com/@prufrock123/js-dot-notation-vs...
    2 - https://codeburst.io/javascript-quickie-dot-notati...
    Ответ написан
    3 комментария
  • Верстка с нуля: какие основные этапы работы?

    Hyubert
    @Hyubert
    JS
    - win+r
    - cmd
    - cd ../
    - git clone
    - npm i
    - sblm project_name
    - npm start
    Ответ написан
    3 комментария
  • Верстка с нуля: какие основные этапы работы?

    @Froggyweb
    Много страниц ? Надо делать шаблоны.
    Много повторяющихся элементов? надо выносить общие правила.

    Вопрос ни о чем. Есть проблема - загугли, не нашел - спроси.

    Ответ на вопрос - погулять с собачкой, выпить чашечку кофе на набережной написать npm i....
    Ответ написан
    2 комментария
  • Почему express на любой post отвечает 404?

    JimmDiGreez
    @JimmDiGreez
    Full-stack Developer
    Потому что serve-static, по соображениям здравого смысла, работает только с GET и HEAD запросами.
    Кусочек кода, который за это овтечает быстренько нашелся прямо в индексе:
    https://github.com/expressjs/serve-static/blob/mas...

    Вообще не ясно, зачем к статике обращаться POST глаголом, это противоречит здравому смыслу действительно.
    Ответ написан
    1 комментарий
  • Почему FlexBox не работает в Internet Explorer?

    Ответ написан
    Комментировать
  • Как удалить файл из отслеживания в GIT?

    v_decadence
    @v_decadence
    1. Невозможно. Только если каждый перед слиянием сам сделает git rm --cached file и коммит.
    2. https://help.github.com/articles/removing-sensitiv...
    Ответ написан
    2 комментария
  • Как преобразовать код?

    devellopah
    @devellopah
    делаем красиво:

    var cond = '';
    
    var options = {
    	'cabel': 'attach a wire',
      'router': 'check your router',
      'computer': 'reload your MacBook',
      '': 'Call Technical Support, Thanks!'
    }
    
    console.log(options[cond]);


    или ещё красивее...

    function logMessage(cond) {
      
      var options = {
        'cabel': 'attach a wire',
        'router': 'check your router',
        'computer': 'reload your MacBook',
        '': 'Call Technical Support, Thanks!'
      }
    
      console.log(options[cond]);
    }
    
    
    logMessage(''); // Call Technical Support, Thanks!
    logMessage('computer'); // reload your MacBook
    Ответ написан
    4 комментария
  • Gulp выдает ошибку при компиляции sass, после подключения переменной. Error: Undefined variable: "$text-color-light". Что делать?

    sagrana
    @sagrana
    Вёрстка и немного кодинга)
    А вы не пробовали поменять местами в main.sass?
    @import 'variables'
    @import 'header'


    По идее, сначала надо переменные импортировать.
    Ответ написан
    1 комментарий
  • Как правильно использовать js замыкание в примере?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Про let слышал, но нужно сделать без него

    Не нужно, но варианты есть такие:

    for (var i = 0; i < 10; i++) {
      (function(i) {
        setTimeout(function() { 
          console.log(i);
        }, 1000);
      })(i);
    }

    for (var i = 0; i < 10; i++) {
      setTimeout(function() { 
        console.log(+this);
      }.bind(i), 1000);
    }

    for (var i = 0; i < 10; i++) {
      setTimeout(console.log, 1000, i);
    }

    for (var i = 0; i < 10; i++) {
      setTimeout(new Function(`console.log(${i})`), 1000);
    }

    for (var i = 0; i < 10; i++) {
      setTimeout(function() {
        console.log(10 - i--);
      }, 1000);
    }
    Ответ написан
    Комментировать
  • Что в скрипте не так?

    Stalker_RED
    @Stalker_RED
    $(document).on('scroll' ...
    эта штука срабатывает при КАЖДОМ событии скролла. А их может быть ОЧЕНЬ много. Чтобы убедиться можете добавить console.log() и посмотреть на флуд.
    Почитайте про throttle/debounce

    Идем дальше:
    $('#firstScroll').each(function() { ...
    $('#box6').each(function() { ...
    WTF? У вас там множество элементов с одинаковым id?

    И каждый раз вы ищете в DOM эти элементы, и для каждого высчитываете одни и те-же данные
    $(document).scrollTop() + windowHeight

    Почему не найти элементы заранее, не сделать вычисления общие вычисления один раз для всех?

    Лезем глубже:
    if (скролл больше чего-то там)  {|
      какойтоЭлемент.addClass('fadeInTop').fadeIn(700);
    }
    Серьезно? То есть доскроллили до нужного места, все красиво появилось, крутим колесо дальше, и продолжаем дальше спамить .addClass().fadeIn() по много раз в секунду? Ну зашибись.

    P.S.: сори что немного грубо, на пришлось вашу кашу прогонять через jsbeautifier, а то кровь из глаз начала идти.
    Ответ написан
    1 комментарий
  • Почему не работает calc в firefox для таблиц?

    AnnTHony
    @AnnTHony
    Интроверт
    caniuse.com:
    • Firefox does not support width: calc() on table cells.
    • Firefox <48 does not support calc() inside the line-height, stroke-width, stroke-dashoffset, and stroke-dasharray properties.
    • Firefox does not support calc() on color functions. Example: color: hsl(calc(60 * 2), 100%, 50%).
    Ответ написан
    Комментировать