• Как разместить все строчные элементы таблицы равномерно по ширине блока?

    @AntowaKartowa
    Зачем постить код импорты компонент которых у меня нет если вопрос по верстке. Нужно было добавить сгенерированный html и css который быстро можно было вы вставить в онлайн редактор. Там мне нужно вместо MySpreadsheet вставлять table в разметке и в стилях и руками вводить значения ячеек.

    Если я правильно понял вопрос, то для начала нужно выровнять таблицу добавив table margin: 0 auto;
    В третьей колонке выровнять контент по правому краю, во второй колонке по центру.
    table {
      width: 90%;
      margin: 0 auto;
    }
    
    td:nth-child(2) {
      text-align: center;
    }
    
    td:nth-child(3) {
      text-align: right;
    }
    Ответ написан
    3 комментария
  • Как покрасить определённую часть строки?

    @AntowaKartowa
    Ну какого-то встроенного готового изящного решения наверное нет. Я вижу лишь вариант самописной (или использовать готовую библиотеку) функции (утилиты) под собственные нужды.

    Например вот функция оборачивающая исключительно в span. Один из недостатков функции в том, что она опирается на `matchAll` метод поддерживаемый вроде бы пока еще не всеми браузерами.

    Параметры:
    - строка в которой производится поиск и замена
    - искомая строка (может быть регулярное выражение, но обязательно с `g` флагом)
    - необязательное значение класса для span (чтоб не печатать нужно любое falthy значение - null, '', 0, false)
    - необязательное значение порядкового индекса найденного совпадения для оборачивания. по умолчанию - `0`. может иметь негативное значе `-1` для последнего значения сколько бы их не было, `-2` для предпоследнего и тд.
    const spanText = (str, pattern, className = '', index = 0) => {
      const matches = [...str.matchAll(pattern)];
      
      if (!matches.length || !matches.slice(index)[0]) return str;
    
      const { 0: match, index: startIndex } = matches.slice(index)[0];
      const endIndex = startIndex + match.length
      const spanOpenTag = !className ? '<span>' : `<span class="${className.toString()}">`;
    
      return str.slice(0, startIndex) + spanOpenTag + match + '<span>' + str.slice(endIndex);
    } 
    
    const re = new RegExp(word, 'g');
    text.innerHTML = spanText(text.innerHTML, re);
    Ответ написан
    Комментировать
  • Почему нету картинки при свойствах?

    @AntowaKartowa
    В css есть свойство `background`. Которое включает в себя 'background-color`, `background-image`, `background-position` и другие подмножества свойства 'background`. Все значения этих подмножеств можно указать в одну строку через запятую в качестве значения этого самого 'background`. Но каждое отдельное свойство подмножества 'background` отвечает и соответственно принимает только соответствующие ему значения. 'background-image` отвечает только за указание на фоновое изображение. А на его позиционирование влияют другие свойства подмножества 'background-position`, `background-size`, `background-repeat` и тд.
    Ответ написан
    Комментировать
  • Как реализовать такое расположение блоков?

    @AntowaKartowa
    Предложу так навскидку. Может и не работать, могут нюансы полезть, но я бы начинал в таком направлении работать. У вас две колонки. Во второй колонке по очереди слоями идут блоки хлебных крошек, заголовка, блок с фото и какими-то ссылками, потом секция с основным текстом. Секция с фото и ссылками разбита на две колонки - одна для фото, другая для текста и ссылок. У секции с фото и ссылками есть свойство position: relative. Так же внутри секции с фото и ссылками должен быть блок который будет играть белый фон с желтой рамкой. У него например position: absolute, z-index: -1, top: -15px; left: 150px, right: 0px; bottom: - 125px;

    https://jsfiddle.net/AntowaKartowa/Lh7bdef0/
    Ответ написан
    Комментировать
  • Как сделать коллизию в тетрисе?

    @AntowaKartowa
    Это не ваш курс на Udemy? Уж очень имена функций, переменных и вся структура похожи.
    Ответ написан
    Комментировать
  • Как избежать перегрузки node js?

    @AntowaKartowa
    PM2 --- инструмент который позволяет запускать несколько экземпляров приложения, какая-то базовая система балансирования нагрузки.

    Для работы со сторонними сервисами с которыми может возникнуть задержки и фейлы выделяют в отдельные процессы (воркеры). А иногда не только те что работают со сторонними сервисами. В общем есть воркер который просто принимает какие-то запросы и помещает их в очередь. За очередью следят другие воркеры каждый со своей специализацией, функционалом и достают задачи из очереди и обрабатывают их. Если воркер упал, то задача возвращается в очередь, вокрер перезапускается. Но основной сервис от этого не падает и вообще на него это не влияет. Организовываются очереди обработки например с помощью инструмента RabbitMQ
    Ответ написан
    Комментировать
  • Как правильно построить модульную структуру проекта?

    @AntowaKartowa
    Не оч понял что там с БЕМом.

    Кнопка Плей ничего не парсит. Есть папка компонент. В папке компонент есть папка Кнопка. В ней код компоненты и стилей для Кнопки. Кнопка может принимать разные конфигурационные параметры типа текста, возможно иконки, цвета, формы, размера... Короче все вариации кнопок которые вам нужно реализовать. И кнопка принимает как один из параметр функцию обработки клика которую вызывает при клике и которой передает объект события. Может что-то еще. Вам виднее.

    Далее у вас есть компонента которая отвечает за отрисовку какой-то страницы. Например у вас несколько основных разделов на сайте. Для каждого создает папку, а внутри компоненты страниц и подстраниц. Если иерархия сайта не глубокая и не большая можно структурой папок повторять структуру сайта.

    В компоненте вашей страницы вы импортируете все необходимые компоненты в том числе Кнопку, объявляет методы которые делают эту страниц живой. Один из методов обработчик клика кнопки. Передаете компоненте Кнопка необходимые параметры включая title="Play" и функцию обработки клика.

    Если есть какие-то сервисы которые много где используются или хелпер функции то их можно разместить например в папке common/services или common/helpers.

    Ой я писал как если бы это был проект на реакте, только сейчас заметил что вопрос по ноде. Но современный бэкэнд не компилирует хтмль а только отдает по определенным эндпоинтам соответствующие данные в виде json. А разметка полностью на стороне фронтэнда.
    Ответ написан
    1 комментарий
  • Как вызвать функцию при неактивной кнопке?

    @AntowaKartowa
    Ну не делайте тогда кнопку неактивной, а лишь имитируйте ее неактивность каким-то дополнительным классом стилей. А в callAlert вызывайте e.preventDefault()
    Ответ написан
    Комментировать
  • Авторизация через instagram на spa?

    @AntowaKartowa
    SPA это и есть клиент. Passport.js вы же на сервере используете? Через него (сервер) лучше всего авторизацию и производить и как результат вносить в таблицу сессий запись. В записи храняться сгенерированный вами токен, айди пользователя и дата создания/обновления записи. И в качестве ответа отдаете на SPA этот токен. На SPA токен сохраняется и добавляется ко всем запросам к серверу. Так при каждом запросе сервер проверяет есть ли в таблице сессий такой токен и если есть обновляет время записи и отдает данные согласно запросу. В монго можно задавать определенным записям время жизни например 2 часа которое будет отсчитываться от времени указанном в записи. Если регулярно приходят запосы, то время обновляется и сессия живет. Если например прошло 2 часа после последней активности, то запись автоматически удаляется и в следующий раз пользователю нужно будет снова авторизироваться. Надеюсь что-то из этого понятно и это есть ответ на ваш вопрос.
    Ответ написан
  • Как правильно на jQuery записать clear?

    @AntowaKartowa
    Чет я уже забыл когда clear в последний раз использовал. Зачем оно вообще вам? Может можно без него обойтись и проще и чище еще будет?
    Ответ написан
    Комментировать
  • Какие есть готовые примеры персонажей с движущимися частями на js или css?

    @AntowaKartowa
    Hover градиент эффект на кнопке https://blog.prototypr.io/stunning-hover-effects-w...
    Ответ написан
    Комментировать
  • Как перенести JS в html файл?

    @AntowaKartowa
    Свойству объекта присваивается строковое значение. А что должно произойти? Должен загрузиться скрипт расположенный по адресу который в строковом значении? Каким образом это должно произойти? Может с основ html начать стоит прежде чем за javascript браться? https://webref.ru/html/script
    Ответ написан
    Комментировать
  • Как сверстать такой элемент?

    @AntowaKartowa
    А что именно вызывает сложность? Текст? Через transform: rotate(-90deg) вероятно
    Ответ написан
  • Как прописать символ в конструкторе?

    @AntowaKartowa
    В последнем комментарии дали реализацию соответствующую заданию. Символ присваивается в качестве значения статического свойства класса. BarcodeGenerator.prefix = Symbol();

    А в вашей перавоначальной реализации во-первых this[prefix] не создает ничего. Если свойство не должно содержать изначально никаких значений, то принято создавать (инициализировать) свойство со значением null.

    Потом вы создаете константу prefix внутри функции конструктора класса, а доступ получить к ней хотите в другой функции. Область видимости константы ограничена функцией. Нужно было так объявлять
    this.prefixKey = Symbol();
    this[this.prefixKey] = null;

    Но тогда generator[BarcodeGenerator.prefix] = 'AA'; ничего не дает. В первоначальном варианте понадобился бы еще один метод для смены префикса в экземпляре класса. А это противоречит заданию
    Ответ написан
    1 комментарий
  • В каких форматах должен отдаваться верстальщику дизайн макета сайта?

    @AntowaKartowa
    Приходилось работать тупо с jpg. Надо ли говорить, что много неудобств. Ни размер шрифта нормально посмотреть, ни какие-то графические элементы в отдельную картинку получить без наложения других элементов страницы.

    Скорее всего говорят о таких сервисах типа https://zeplin.io/ На последнем проекте дизайнер в него выкладывал как дизайны страниц так и сборки например всех возможных стилей кнопок, инпутов. Все это шариться. Идея ок. Во многом удобно. Показывает размеры, цвета. Позволяет определенные элементы скачать в виде отдельного файла. Но было нужно измерить какое-то растояние которое сервис сам не показывает. И непонятно что делать. Бывало нужно было иконку сукачать и нужно было просить дизайнера чтоб он что-то там в настройках сделал чтоб иконка стала скачиваемым элементом. Короче есть минусы, но идея ок. И это не один такой сервис. Думаю через пару лет большинство через них работать и будет.
    Ответ написан
    4 комментария
  • Как организовать асинхронную загрузку экрана захвата и остальной страницы?

    @AntowaKartowa
    Мне кажется если попап всегда встречает посетителей, то имеет смысл его добавить сразу в базовую верстку и его стили в базовый цсс, а джаваскрипт чтоб уже после загрузки подхватывал, делал кнопку в попапе активной, вешал обработчик и тд.

    Если бы это был логин попап, то контент на фоне я б сразу не рендерил. Есть куча умников умеющих в девтулс удалить попап и смотреть контент. Если контент подгружается джаваскриптом, то загружаете в фоне сохраняете в переменную, но не рендерите пока пользователь не кликнет на кнопку в попапе.

    Оно не должно мешать загрузке остальной страницы и ее скриптов.

    Не очень ясно. Ну если попап часть лендинг пейджи, то как разметка и стили для попапа могут блокировать загрузку лендинг пейджи. Ну могут совсем немного увеличить время за счет того что увеличится размер разметки и стилей.

    Другое дело джаваскрипт. Его загрузка и выполнение блокируют обработку и рендеринг страницы. Потому рекомендуется объявление джаваскрипта размещать или в самом низу страницы - начнет загрузку скрипта после загрузки страницы. Но кажется это не всегда гарантирует хороший результат.

    Лучше добавить в теги скрипт атрибуты async или defer. Первый не блокирует рендеринг страницы, но начинает свое исполнение сразу как только загружен. Это потенциально может привести к проблемам. Например попап еще не отрендерен, а скрипт уже начал выполнение и не нашел в разметке попапа, не смог повесить обработчики событий и все нерабочий попап получится. Из-за этого же этот атрибут не гарантирует, что скрипты будут выполнятся в том порядке в котором объявлены. Опять же одни скрипты могут зависить от других и это может привести к неработающему функционалу.

    Дефер же гарантирует, что исполнение скрипта начнется только после полной загрузки страницы и что скрипты будут исполнятся в порядке их объявления. Потому он самый предпочтительный.

    Вообще есть бесплатный курс по оптимизации загрузки страницы от гугла. https://www.udacity.com/course/website-performance...

    Кажется я в итоге не на ваш вопрос ответил.
    Ответ написан
    1 комментарий
  • Как решить проблему с overflow: hidden?

    @AntowaKartowa
    С оверфлоу хиден не справишся. Делай еще один общий контейнер для попапа без оверфлоу, внутри него на одном уровне попап-клоуз и попап который с оверфлоу. Надесь понятно объяснил
    Ответ написан
    2 комментария
  • Вопрос чисто к опытным верстальщикам?

    @AntowaKartowa
    Дк вроде уже ни в одной статье писалось, что цепочки селекторов это зло. Не столько с эстетической сколько с практической точки зрения.

    1. Если тебе где-то нужно переопределить стили в каком-то отдельном контексте придеться такую же длинную цепочку фигачить.
    2. Ну и размер файла стилей это не уменьшает.
    3. Плюс дополнительные элементы цепочки это лишние циклы поиска браузером соответствии элементов в ДОМ структуре, что ест ресурс. Одна цепочка может не заметна, но полчища таких цепочек уверен могут показать существенную разницу.
    4. Потом браузер ведь читает справа налево. В .navbar .navbar-right-menu li.notify-dropdown .notify-list li a .notify-body он сначало найдет все .notify-body, потом начнет проверять какие из них вложены в тег a и искать будет до самого верхнего эелемента пока не найдет или не упреться в бади. Потом начент проверять а какие из них лежат внутри списка li и тд. Куча ненужных обработок.
    5. В этом же ключе стоит упомянуть, что селекторы в идеале все должны быть классами. А селекторы теги типа a, li, p, span и тд нужно избегать потому что они неспецифичны, не несут большой ценности, создают лишние цыклы обхода дерева элементов. По той же причине нельзя использовать селектор *.

    В идеале вообще не должно быть вложенных селекторов. Почитай про БЕМ методологию. https://ru.bem.info/methodology/ Максимум 2 в крайних случаях три уровня вложенности.
    Ответ написан
    Комментировать
  • Как заставить работать nth-child?

    @AntowaKartowa
    Кнутом его кнутом ну и пряником немного.

    Посмотрел. Эээ так у тебя каждый h2 в отдельном блоке значит каждый из них это первый чайлд. И других нет)

    Поменяй
    .brand-menu:nth-child(even) h2
    Ответ написан
  • Почему кнопка не меняет свой цвет?

    @AntowaKartowa
    Оффтоп. Использовать id для атомарных елементов плохая практика. Как впрочем и импортанты приемлемы только для дебага.

    По картинке сложно что-то сказать. Нужен доступ чтоб в девтулс пощупать, посмотреть какие стили перекрывают и тогда можно разбираться почему они перекрывают.
    Ответ написан