Задать вопрос
  • Что умеет выдающийся Frontend разработчик?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    linux

    Ну, это и фрондендеру нужно часто знать.
    ЯП

    Я сомневаюсь, что он сейчас сильно проще питона или php, JS очень довольно быстро развивается. А если взять в расчет TypeScript, то тем более.
    В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%

    Совсем нет. Не получится протестировать на всех браузерах, на всех операционных системах и на всех устройствах с разным экраном, с разным способом ввода.
    то в случае с frontend все гораздо проще

    Ну вот просто вообще не правда. Я также могу сказать, что в бэке учить нечего, изучил язык, изучил laravel, а sql даже учить не надо, используй ORM. Справедливое высказывание?

    Теперь в общем. Во front-end много чего можно изучить
    1) Верстка. Хороший front-end'ер должен хорошо верстать, вопреки частому мнению, что этим должен заниматься верстальщик. А верстка это отдельная широкая тема.
    2) SVG, для многих интерактивных приложений, очень полезно использовать svg, а там куча своих особенностей, хаков и.т.д.
    3) Webgl - довольно сложная тема, не знаю, есть ли в бэке что-то аналогичное по сложности.
    4) Canvas - не просто знать, а уметь рисовать то, что желаешь.
    5) Фрейморки, а там тебе для каждого свое разветвление.
    6) Асинхронное программирование, которое для многих php-шников кажется непонятным.
    7) ООП, т.к. в JS завезли классы, да и TypeScript часто нужно использовать.
    8) Шаблоны проектирования - не только для бэкенда.
    9) Webpack+gulp - ну это было.

    Буду дополнять, если что-то еще в голову придет.
    Ответ написан
    6 комментариев
  • Как пользоваться pug?

    kvtns
    @kvtns
    Веб-разработчик
    1. Pug — ребрендинг Jade. Был переименован из-за жалобы некоего одноименного бренда, не связанного с IT. Для работы я бы рекомендовал использовать именно его. Синтаксис такой же как и в Jade.

    2. Код из туториала в Pug компилируется. Проверьте правильность отступов. Установите Linter, если работаете в Atom/Sublime.

    3. Для компиляции использую следующий таск в Gulp:

    gulp.task('html', function buildHTML() {
      return gulp.src('app/pug/*.pug')
        .pipe(pug({
          pretty: true
        }))
        .pipe(gulp.dest('app'));
    });

    4. Вот примеры нескольких рабочих вариантов с if/else:
    - development = false
    -
      css = [
        "css/fonts.css",
        "css/header.css",
        "css/style.css",
      ];
    
    if development
        each item in css
            link(rel="stylesheet", href="" + item + "")
    else
        script(src="css/style.min.js")


    5. На своих проектах делаю такую структуру:
    - главный файл index.pug
    - каталоги: includes, mixins, regions (из названий должно быть понятно, что они содержат)
    - файлы из каталогов инклудятся по мере надобности директивой include.
    Ответ написан
    1 комментарий
  • Каким способом начать делать многостраничный сайт?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сначала нужно создать сам шаблон страницы и посмотреть как он будет выглядеть в общем виде.
    includeHTML - может рекурсивно загружать все необходимые части, расположенные в разных HTML-файлах ОДНИМ ТЕГОМ или через Javascript.
    (Всё скрипты и скрипты-обработчики и CSS должны быть подключены в головном файле шаблона. В HTML-частях - только разметка.)

    Подключаете в head-секции и пишите теги (пример):
    <include src="masthead.html"></include>
    <include src="menu.html"></include>
    <include src="content.html"></include>
    <include src="footer.html"></include>
    После того, как сделаете шаблон - можно переходить уже либо к чистому PHP, либо к любому фреймворку или CMS, и "натягивать" уже готовую и "ПОРЕЗАННУЮ" КАК НУЖНО вёрстку на этот фреймворк или CMS.
    Ответ написан
    1 комментарий
  • Как использовать Gulp для мелких проектов?

    Нет, все модули можно установить глобально через флаг -g. Например: "npm install gulp-sass -g"
    А затем залинковать модуль в папку проекта таким образом: "npm link gulp-sass".
    Таким образом у вас будет папка node_modules со ссылками на глобально установленные пакеты.
    Ответ написан
    Комментировать
  • Как выйти из overflow: hidden?

    Exploding
    @Exploding
    wtf?
    css -> transform с этим отлично справляется
    Ответ написан
    4 комментария
  • Как правильно реализовать замену картинки при наведении в css?

    К примеру, можно сделать картинку фоном и менять её при hover (прописывать в background-image другой путь)
    Ответ написан
    Комментировать
  • Flexbox почему появляется горизонтальная прокрутка?

    Odisseya
    @Odisseya
    Оптимизирую PageSpeed & Performance
    Пропишите flex-wrap: wrap;
    @media screen and (min-width: 700px) {
        .columns,
        .column {
          display: flex;
          flex-wrap: wrap;
        }
      }
    Ответ написан
    Комментировать
  • Откуда у блоков отступы по высоте?

    EaGames
    @EaGames
    Front-end developer
    Все из за display: inline-block;
    добавьте font-size: 0 для родителя и отступа не будет
    Ответ написан
    Комментировать
  • Vue или Jquery?

    vicodin
    @vicodin
    Имею некоторый опыт
    Изучать javascript.
    А потом неделю на jquery, неделю на vue, знания и те и те пригодятся и не будут взаимозамещаемыми. Заодно и поймете на каких проектах лучше использовать jq, на каких вью
    Ответ написан
    Комментировать
  • Как исправить ошибки в JS коде?

    Exploding
    @Exploding
    wtf?
    На вот забирай свое меню, только не пость больше этот ужас))
    Да, только учтите, что как только, часы пробьют ровно 12(PM) - меню превратится...
    Короче старинное оно. Антикварное. Из самого палеолита! Его гораздо веселей и "легче" (по ресурсам в смысле) можно, да и нужно на css сделать! А js-ную часть вообще снести. Но если вы любите "классику"...))
    Исправлено
    (function($) {
    
      $.fn.menumaker = function(options) {
          
          var cssmenu = $(this), settings = $.extend({
            title: "Menu",
            format: "dropdown",
            sticky: false
          }, options);
    
          return this.each(function() {
            cssmenu.prepend('<div id="menu-button">' + settings.title + '</div>');
            $(this).find("#menu-button").on('click', function(){
              $(this).toggleClass('menu-opened');
              var mainmenu = $(this).next('ul');
              if (mainmenu.hasClass('open')) { 
                mainmenu.hide().removeClass('open');
              }
              else {
                mainmenu.show().addClass('open');
                if (settings.format === "dropdown") {
                  mainmenu.find('ul').show();
                }
              }
            });
    
            cssmenu.find('li ul').parent().addClass('parent');
    
            multiTg = function() {
              cssmenu.find(".parent").prepend('<span class="submenu-button"></span>');
              cssmenu.find('.submenu-button').on('click', function() {
                $(this).toggleClass('submenu-opened');
                if ($(this).siblings('ul').hasClass('open')) {
                  $(this).siblings('ul').removeClass('open').hide();
                }
                else {
                  $(this).siblings('ul').addClass('open').show();
                }
              });
            };
    
            if (settings.format === 'multitoggle') multiTg();
            else cssmenu.addClass('dropdown');
    
            if (settings.sticky === true) cssmenu.css('position', 'fixed');
    
            resizeFix = function() {
              if ($( window ).width() > 768) {
                cssmenu.find('ul').show();
              }
    
              if ($(window).width() <= 768) {
                cssmenu.find('ul').hide().removeClass('open');
              }
            };
            resizeFix();
            return $(window).on('resize', resizeFix);
    
          });
      };
    })($);
    
    
    
    $(document).ready(function() {
    	$("#hmenu").menumaker({
    		title: "Menu",
    		format: "multitoggle"
    	});
    
    	$("#hmenu").prepend("<div id='menu-line'></div>");
    
    	var foundActive = false, activeElement, linePosition = 0, menuLine = $("#hmenu #menu-line"), lineWidth, defaultPosition, defaultWidth;
    
    	$("#hmenu > ul > li").each(function() {
    		if ($(this).hasClass('active')) {
    			activeElement = $(this);
    			foundActive = true;
    		}
    	});
    
    	if (foundActive === false) {
    		activeElement = $("#hmenu > ul > li").first();
    	}
    
    	defaultWidth = lineWidth = activeElement.width();
    
    	defaultPosition = linePosition = activeElement.position().left;
    
    	menuLine.css("width", lineWidth);
    	menuLine.css("left", linePosition);
    
    	$("#hmenu > ul > li").hover(function() {
    		activeElement = $(this);
    		lineWidth = activeElement.width();
    		linePosition = activeElement.position().left;
    		menuLine.css("width", lineWidth);
    		menuLine.css("left", linePosition);
    	}, 
    	function() {
    		menuLine.css("left", defaultPosition);
    		menuLine.css("width", defaultWidth);
    	});
    
    });

    Ответ написан
    Комментировать
  • Как найти все слова из букв по словарю?

    Stalker_RED
    @Stalker_RED
    Набросал вот, с учетом повторяющихся букв. То есть в наборе ЙЗОЛЯКВХДИЦГМВАП доступно две буквы "В" и только одна "О".
    https://jsfiddle.net/eju9Lra7/

    Один проход по списку слов
    Регуляркой проверяем, нет ли в слове недопустимых букв (это не обязательно, но с регуляркой вроде бы быстрее работает, по хорошему надо бы потестить на большом списке)
    Перебираем буквы в слове, использованные вычеркиваем.
    Ответ написан
    2 комментария
  • Что делать веб разработчику, если уже всё придумано?

    Stalker_RED
    @Stalker_RED
    Идеи приложений: https://www.reddit.com/r/AppIdeas/
    Идеи вообще: https://www.reddit.com/r/Lightbulb/
    Подобных списков десятки. Бесплатно, без СМС.
    Ответ написан
    9 комментариев
  • Как сделать такую рамку в CSS?

    Palehin
    @Palehin
    Frontend
    делай заголовок с белым фоном и псевдоэлементами в виде кружков и позиционируй его поверх рамки
    Ответ написан
    Комментировать
  • Как сделать неподвижный бэкгрануд?

    amux
    @amux
    alp.ac
    Это можно сделать при помощи css, js тут не нужен.
    background-attachment: fixed;

    cssreference.io/backgrounds
    Ответ написан
    Комментировать
  • Как замаскировать ссылку?

    Chefranov
    @Chefranov
    Новичок
    <a href="http://google.com/" onclick="location.href = 'http://www.yandex.ru/'; return false;">Ссылка</a>
    Ответ написан
    3 комментария
  • Style=...;...;...; или не считается точка с запятой в конце ошибочной?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Какое из этих выражений является ошибочным?
    Работать будут оба, браузеру, грубо говоря, фиолетово, есть ли у вас в конце ";" или пробелы между свойством и его значением... Я обычно ставлю в конце ";"...
    Ответ написан
    2 комментария
  • Хочу создать биржу фриланса, с чего начать?

    Chipr
    @Chipr
    UX/UI designer
    Предлагаю тему лучше, которая выгорит 100% — социальная сеть.
    Ответ написан
    5 комментариев
  • Фронт или бэк: как попробовать всё?

    @hsuper
    node js попробуйте
    Ответ написан
    Комментировать
  • Раскритикуйте мобильное меню - имеет право существовать?

    rockon404
    @rockon404
    Frontend Developer
    1. Добавьте класс состояния .no-scroll для body
    body.no-scroll {
      overflow-y: hidden;
    }

    2. Пусть оверлей будет на странице всегда, но виден только когда на нем класс .active
    .overlay {
      display: none;
    }
    .overlay.active {
      display: block;
    }

    3. для оверлея и кнопки добавьте класс .menu-toggle, по этому классу будет вешаться слушатель для управления меню.
    4. Перепишите так:

    $('.menu-toggle').click(toggleMobileMenu);
    
    $(document).keyup(function(e){
      if (e.keyCode == 27 && $('#Mobile-menu').hasClass('open')) {
        toggleMobileMenu();
      }
    });
    
    function toggleMobileMenu() {
      $('body').toggleClass('no-scroll');
      $('.overlay').toggleClass('active');
      $('#Mobile-menu').toggleClass('open');
    }


    Навбар лучше сделать фиксированным.
    Ответ написан
    Комментировать