Ответы пользователя по тегу HTML
  • Как правильно оптимизировать страницу?

    @strelok011
    Оптимизация html и css по сравнению с оптимизацией png - бесполезная ерунда. Вы можете выиграть допустим 2-5 кб против 2-3 мб одного png, в условиях современного интернета этот выигрыш ничего не даст. Даже запрос на сервер может больше времени занять чем скачивание.
    Необходимо обратиться именно к оптимизации png при этом желательно с минимальными потерями по качеству.
    Советую для начала ознакомиться вот с этой статьёй How To Optimize PNG, а потом поискать инструмент поудобнее, просто погуглив PNG optimizer. Вот сравнение нескольких пакетных оптимизаторов. Я при необходимости оптимизации png использую RIOT, он может оптимизировать png, gif и jpg. Из личного опыта - советую попробовать первым делом оптимизацию палитры. Плюс есть не искажающие оптимизации (например, удаление мета-данных). Если используете прозрачность - она сильно добавляет веса в изображение, с ней тоже можно бороться.

    Всё это хорошо, если у вас есть возможность оптимизировать изображения, статично размещенные на сайте.
    Ответ написан
    Комментировать
  • Как сделать форму из 4-х этапов и передавать данные в каждый из них?

    @strelok011
    Любая динамика с данными в окне браузера - нужен js. Работа в асинхронном режиме - таки да, это AJAX. Только сам термин ничего не объясняет.

    Писать можно хоть на нативном js, можно подключать фреймворки типа jQuery, Vue, React и проч.
    Вам придется хранить состояние формы (значения полей, ответы от бэкенда, служебные данные типа шага формы и др.), писать / использовать готовые модули для работы с календарем, отправлять запросы на эндпойнты бэкенда в асинхронном режиме, вешать крутилки (спиннеры) пока ожидается завершение запроса, перестраивать структуру документа чтоб отображать / скрывать шаги формы, писать валидацию заполнения данных, чтобы пользователь вводил только ожидаемые значения.
    Готового "воткнул - работает" не найти, такие решения исключительно под конкретные требования пишутся.
    Ответ написан
    Комментировать
  • Почему viewport не работает на десктопе?

    @strelok011
    Потому что гугл говорит, что вьюпорт вводился и поддерживается только мобильными устройствами, из-за того что у них есть экраны с высокой PPI (плотностью физических пикселей) и изображение на экране необходимо было управляемо масштабировать.
    Десктоп подобные извращения не поддерживает, т.к. есть просто базовые значения и прямые руки у верстальщика.
    Ответ написан
    Комментировать
  • Как сделать чтоб выпадающий дропдаун не обрезался в блоке с overlfow: auto и максимальной высотой?

    @strelok011
    Чтобы не кропало - релативный блок должен находиться за пределами оверфлоу.

    Решение - дропдаун класть в тело документа за пределами родительского блока, писать муторную обвязку на js с вычислением координат порождающего элемента на экране, по ид вычислять что класть в этот пустой дропдаун, либо искать такой дропдаун в готовых библиотеках, лет 5 назад натыкался на такое готовое.
    Либо примерно ту же муть с вычислением позиционирования но с оберткой вокруг вашего блока с оверфлоу и без выноса дропдауна.

    <div style="position:relative">
        <div style="width:280px; height: 100px; border:1px solid red; overflow:hidden; ">
            <ul>
                <li style="/* removed position:relative; */ width:200px; height:50px; list-style-type:none; background:yellow;z-index: 3;">
                    <div style="position: absolute; top: 30px; left: 52px; width:180px; height:150px; background:Pink; z-index: 99;">
                        <br>
                    </div>
                </li>
            </ul>
        </div>
    </div>


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

    @strelok011
    Такое бывает в ситуации, когда в контенте или в любом блоке присутствует элемент или контейнер шире, чем ширина страницы. Это могут быть как изображения, так и элементы у которых неправильно заданы параметры с шириной и паддингом.
    Т.е. если есть элемент с шириной 100% и паддингом, ему надо бы указывать box-sizing: border-box;
    Так же могут влиять неверно применяемые флоаты, флекс и прочее.
    Первый шаг для проверки - накидывать overflow: hidden на контейнеры чтоб локализовать проблему, где именно находится распирающий элемент, либо в отладчике включить инструмент выбора элемента на странице и искать в пустой казалось бы области.
    Ответ написан
    1 комментарий
  • Как запретить скрытие адресной строки браузера на мобильном устройстве при скролле?

    @strelok011
    попробуйте это
    html {
      background-color: red;
      overflow: hidden;
      width: 100%;
    }
    
    body {
      height: 100%;
      position: fixed;
      /* prevent overscroll bounce*/
      background-color: lightgreen;
      overflow-y: scroll;
      -webkit-overflow-scrolling: touch;
      /* iOS velocity scrolling */
    }
    Ответ написан
  • Как исправить проблему контейнера?

    @strelok011
    Ну, хотя бы потому что добавляя класс "modal open" вы добавляете отступ на оборачивающий блок справа padding 8 px. Соответственно написанным вами стилям контент смещается и на него влияют оборачивающие стили, а вот блок тулбара у вас position fixed, эта конструкция вырывает элемент из потока и отступ всей обертки на него не влияет.

    Где вы такой замшелый способ прибития футера к низу нашли? Делайте на флексах, контентной части флекс гроу 1, общему контейнеру с флексом минимальную высоту 100% и этого будет достаточно.

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

    @strelok011
    Не нужно ничего вычислять. Ее нужно просто запросить. Это свойство clientHeight

    Создаете массив колонок, пробегаете по нему, собираете высоту, ищете первую минимальную, втыкаете туда блок статьи, повторяете пока не кончатся блоки для вставки.
    Ответ написан
  • Как подключать шрифты прямо из VS Code?

    @strelok011
    Для VSCode есть плагин гуглошрифтов https://marketplace.visualstudio.com/items?itemNam...

    А по поводу "всех остальных" - есть такая проблема как лицензионная чистота шрифтов. Если заказчик приобрел шрифт - он его предоставит с инструкцией по подключению в проект.

    Ну и дизайнеру, который использует больше 2-х шрифтов на сайте надо кой чего отстрелить и отправить на переподготовку.

    Не забывайте, что каждый шрифт может до нескольких МБ весить, особенно если пытаться использовать все его начертания.
    А для пиратских шрифтов такие сервисы никто не напишет, может вылезти больно и дорого :)
    Ответ написан
    Комментировать
  • Как сделать правильное dropdown меню?

    @strelok011
    Дополню немного куратора - ваше меню должно решать ВАШУ проблему.
    Всякие образцы в интернете - могут решать а могут и не полностью. Работает ли адаптив для разных разрешений, поддерживается ли тач, сколько уровней вложенности, нужно ли скрывать скролл для длинных списков (и всё же меню - это именно список), нужно ли скрывать подменять десктопное меню на мобильное...
    Когда составите список требований - тогда и только тогда нужно будет подбирать конкретную реализацию, либо опираясь на примеры пилить своё.
    Халтура - она не универсальная :)
    Ответ написан
    Комментировать
  • Можно ли использовать нестандартные шрифты при верстке писем?

    @strelok011
    Нельзя использовать нестандартные шрифты. Только в виде растра.
    1. внедрять нельзя
    2. делать внешние ссылки на шрифт плохая идея, если письмо попадает в корпоративную почту, внутри изолированной сети доступа к внешнему хранилищу не будет, так же нужно учитывать, что корпоративные почтовые сервера могут с легкостью выкашивать всё подозрительное из писем, включая ссылки на внешние ресурсы. Так, к примеру, ведет себя gmail.
    Гуглите "безопасные шрифты" для использования в рассылках
    Ответ написан
  • Перемещать строки таблицы по клику на соответствующую кнопку выше или ниже. Как это сделать на javascript?

    @strelok011
    это вопрос 10-летия на js )
    Я надеюсь, что клики по элементу массива и прочую мелочь вы написать сможете.

    Берем массив, хотим изменить последовательность двух элементов
    вариант со старым js
    var b = list[y];
    list[y] = list[x];
    list[x] = b;

    b - временная переменная

    вариант на es6
    к примеру массив arr = [1,2,3,4]
    [arr[0], arr[1]] = [arr[1], arr[0]];
    будет массив [2,1,3,4]
    это destructuring assignment.

    А так-то да, заказывайте на фрилансе :)
    Ответ написан
    Комментировать
  • Как называется данная вещь и как её сделать?

    @strelok011
    А еще она напоминает... комбобокс, список объединенный с инпутом, с автокомплитом и т.п.
    Смотреть можно сюда, либо на различные вариации. Реализация обычно на js, требует некоторой прокачки скиллов
    Ответ написан
  • Почему абсолютно заданные элементы теребятся при наведении с transition?

    @strelok011
    Поиграю в экстрасекса, который ковид не угадал.
    Я предполагаю что в момент когда элемент попадает под мышку - ему в ховере дается позиционирование и смещение, причем абсолютное. В результате он пропадает из зоны влияния курсора и бац - состояние ховера отменено, т.к. за пределами курсора.. Дал, дал, ушел - вернулся. И опять блин под курсор. Что в этот момент срабатывает? Ховер конечно. Процессоры сейчас мощные, скорости большие - вот и мерцание.
    Но, если будет таки код доступен для анализа, можно поиграть в эксперда, а не Вангу.
    Ответ написан
    6 комментариев
  • Как лучше всего сделать данную анимацю?

    @strelok011
    Можно тут посмотреть. Видео - не наш выбор
    Ответ написан
    Комментировать
  • Проблемы с отображением Slack. В чём может быть причина?

    @strelok011
    Возможно проблема в DNS. Тут надысь ростелеком активно игрался с блокировками.
    Посмотрите тут рецепты еще, помимо смены днс адреса.
    Ответ написан
    1 комментарий
  • Как правильно располагать ресурсы для ускорения загрузки и рендеринга страницы?

    @strelok011
    Аналитику в конец. Она не должна влиять на скорость подгрузки значимых элементов и блокировать страницу для пользователя.
    SVG как раз лучше в начало, при этом можно поварьировать подход - ссылку на svg-спрайт, либо прямо инлайном запилить в html и вызывать в нужное место просто по id. Если у вас 10 ссылок на декоративные элементы - это плохой подход. На старых http серверах каждый запрос является высоконагруженной операцией для сервера.
    Основной js - тоже в конец документа, в самый низ либо подключать асинхронно. Инициализация на документ онлоад.
    Суть такого подхода - чем раньше пользователь увидит контент, тем спокойнее он будет и какой-нить гугл спидрейнч вам покажет влияние на первое отображение контента пользователю.
    На истину не претендую, рекомендую всё же такой подход и проверку внесенных изменений у гугла.
    Ответ написан
  • Правильно ли в БЭМ применять миксы для задания одинаковых свойств для нескольких элементов?

    @strelok011
    В парадигме scss вся эта ерунда может реализоваться миксом на уровне scss, а не на уровне микс-классов. Не стоит упарываться по идеологии.
    Если вам важна цель - не надо перегружать разметку такими мусорными классами.
    Ответ написан
    4 комментария
  • Возможно ли анимировать форму таким образом?

    @strelok011
    1. Есть вариант анимировать используя фильтр блюр. Поизвращаться придется конечно, но вполне себе будет рабочий вариант

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

    2. Как предложили выше - svg path
    3. Canvas - трудоемкость большая

    Вот подборка примеров "жидких" эффектов
    Ответ написан
    1 комментарий