• Почему эллипс в adobe illustrator кривой?

    sh3mahan
    @sh3mahan
    что-то вроде веб-разработчика
    Что-то мне подсказывает что у вас перспектива включена

    Выберите «Просмотр» > «Сетка перспективы» > «Скрыть сетку».
    Ответ написан
    1 комментарий
  • Как правильно верстать bootstrap + SASS?

    delphinpro
    @delphinpro Куратор тега Sass
    frontend developer
    CDN vs свой билд — экономия на спичках.
    Тем более если вам не нужен весь пакет.

    Начну с самого плохого, неправильного и убогого варианта использования:
    Это когда люди подключают бутстрап.мин.цсс, а потом в своем файлике начинают переопределять стили. Получается полный неподдерживаемый пиздец (я как раз сейчас натягиваю на сайт купленный (!) такой шаблон, нервы на пределе).
    Люди, которые так делают приводят гнилой аргумент: а вдруг мы захотим обновить бутстрап? Серьезно, блять? Как часто вы это делали? ставлю сто баксов, что ни разу.

    Как делать по феншую.

    Для начала, естественно, использовать препроцессорные исходники (не будем выбирать конкретный порт, есть и lеss, и sсss, и stylus, кому что нравится).

    Далее миксины. Не нужно подключать отдельные. Подключите valiables.scss и mixins.scss. Миксины не попадают сами по себе в билд, так пусть они все будут доступны.

    Компоненты. Отключите ненужные, закомментировав импорты соответствующих файлов.

    Кнопки. Если бутстраповские не нужны, отключите их. Напишите свои, используя миксины и даже копипасту части кода из бутстрапа. Это нормально.
    Отличный вариант, если вы напишете свой миксин для кнопки (который и бутстраповские миксины может использовать). Ибо в бутстрапе, к сожалению, нет миксина make-button().

    Если вам нужно переделать компонент или стиль (часто приходится модифицировать навбар, таблицы, навигацию, табы), не стесняйтесь исправить исходник. Но лучше исходнить отключить, скопипастить и подключить свой вариант (возможно даже поменяв классы, но это не всегда прокатит, ибо связанность ужасная). Править нужно, понимая что вы делаете. Потому что бутстрап внутри устроен через жопу. Взять хотя бы класс .nav — лютый пиздец, дикая связанность.

    Пагинация, крошки. Никогда вас не попросят поставить исходные стили. Если по макету эти элементы имеют определенный стиль, этот стиль будет сохраняться. Смело меняйте. Или делайте дубликат.

    Хелперы использовать нужно как можно меньше. Они нужны для быстрых набросков или правок "здесь и сейчас". Лучше опишите новый класс.
    Опять же если вам нужен класс list-inline в единственном месте, то почему бы его не прописать?

    Ссылки и статьи типа "как верстать под бутстрап" — это исключительно отстойный материал, написанный чаще всего такими же новичками, как и те, кто ищет подобную тему. Хотя базовую инфу вы конечно получите.
    Ответ написан
    4 комментария
  • Как подключить код из .js в main.js через @@include?

    sergey155
    @sergey155
    math.js
    const add = (a, b) => {
      return a + b;
    };
    
    const subtract = (a, b) => {
      return a - b;
    };
    
    module.exports = { add, subtract };


    main.js
    const math = require('./math.js');

    В помощь

    01:08:03 Работа с JavaScript (babel, webpack)
    Ответ написан
    Комментировать
  • Как подключить разные файлы js к разным html файлам?

    smilingcheater
    @smilingcheater
    Объявите в вебпаке по отдельному entry для каждой страницы
    https://webpack.js.org/concepts/entry-points/
    Вебпак будет собирать несколько бандлов. Подключайте в страницах соответствующие им бандлы.
    Так же рекомендую настроить генерацию общего чанка, чтобы общие части JS не дублировались в бандлах, а попадали в один общий.
    https://webpack.js.org/configuration/optimization/...
    https://webpack.js.org/plugins/split-chunks-plugin/
    Ответ написан
    1 комментарий
  • Gulp.lastRun и gulp-nunjucks, варианты?

    IIIu6ko
    @IIIu6ko Автор вопроса
    Нашёл пакет gulp-nunjucks-inheritance

    Таск теперь выглядит вот так
    function html() {
      return src('src/**/*.{html,njk}', { base: 'src', since: lastRun('html') })
    
        // Nunjucks
        .pipe(nunjucksInheritance({ base: 'src' })) // Ищем изменения в зависимостях
        .pipe(nunjucks({ path: 'src' })) // Компилируем в HTML
    
        // Добавляет индентацию для заинклюженных блоков.
        .pipe(prettyHtml({ indent_size: 2 }))
    
        // HTML-валидатор.
        .pipe(htmlhint('.htmlhintrc'))
        .pipe(htmlhint.reporter())
    
        // Манифест.
        // Если флаг --dist без --norev.
        .pipe(gulpif(dist, gulpif(!norev, revReplace({
          manifest: src('manifest/manifest.json', { allowEmpty: true }),
        }))))
    
        // Выгрузка.
        .pipe(dest(buildHtml))
    
        // browserSync.
        .pipe(gulpif(!dist, browserSync.stream())); // Если нет флага --dist.
    }


    Обязательно в src указывайте путь до всех .njk файлов, иначе пакет отказывается работать.
    Ответ написан
    Комментировать
  • Как исправить ошибку с gulp в плагине gulp-imagemin?

    @joseffie
    Front-end developer
    Либо устанавливайте версию gulp-imagemin ниже 8.0, либо импортируйте в синтаксисе ESM, как написал Александр.
    Ответ написан
    Комментировать
  • Реально ли заменить gulp на vite?

    bingo347
    @bingo347
    Crazy on performance...
    Есть сборщик gulp
    То что под gulp есть сборщики не делает сам gulp сборщиком. Gulp - task runner, запускалка задач. То есть сборщик под капотом может быть любой, хоть тот же vite.
    Теперь про vite, основная его фишка - это ускорение dev сборок и за счет этого ускорение самого процесса разработки. Достигает он это за счет того, что по сути не собирает Ваши исходники, а только применяет к ним трансформации, хотя зависимости все же собирает с помощью esbuild. При этом для прода вся сборка переадресуется на rollup. И то что в dev и в prod у Вас будут по сути разные сборщики изредка приводит к багам, которые воспроизводятся только в prod сборках. Rollup надо сказать тоже не идеален и на больших проектах порой ломает код, хоть и редко.
    Тут мое ИМХО и не более
    Rollup для сборки библиотек.
    Webpack для сборки конечных приложений.
    Vite интересен скорее интегрированным в него vitest, который позволяет писать unit тесты ближе к логике (привык я к хорошему в Rust).

    А по факту, смена сборщика чревата ошибками, сильными изменениями в структуре проекта и прочими подводными камнями.
    Если вопрос "стоит ли переезжать" появился только из hype-driven-development (погоней за модой по-простому), то ответ однозначный - нет, не стоит.
    Если же текущая сборка накладывает на Вас сильные ограничения и борьба с этими ограничениями занимает очень много времени, настолько, что потенциальные проблемы от смены сборки скорее всего займут времени меньше, то да, стоит переезжать.
    Ответ написан
    1 комментарий
  • Как зставить Firefox не сбрасывать размер окна?

    @User628
    Я тоже сталкивался с этой проблемой.
    Пришел к выводу, что это баг самого Firefox.
    И решать его надо как и любой другой баг - через bug report разработчикам.
    Баг трекер тут: https://bugzilla.mozilla.org
    Иногда пишу им туда, что-то отвечают, а через время бага уже нет.
    Приятно поучаствовать в улучшении продукта.
    Ответ написан
    Комментировать
  • Стоит ли переезжать с Wordpress на статичные сайты (Gatsby, Jekyll, Hugo) и сколько это будет стоить?

    @ZoomLS
    Конечно стоит. Hugo - хороший вариант, особенно если много страниц(быстро генерирует сайт). Неплохая документация, постоянно обновляется, быстрый. Есть инструменты Hugo для бегства с Wordpress. Внешний вид сайта достаточно просто перенести. Комменты можно прикрутить сторонними сервисами(Disqus и т.д). Для чего-то ещё, тоже можно использовать микросервисы. Но в вашем случае, судя по описанию - достаточно будет функционала из коробки. Сайт будет как ракета летать, безопасность вырастет в разы - не захочется больше использовать этого неповоротливого монстра Wordpress.
    Ответ написан
    7 комментариев
  • Сайт дергается при переходе по страницам, как исправить?

    @adovnik
    <script type="text/javascript">
            var span = document.querySelector('span.ratingtypeplusminus');
    	span.style.visibility = (span.innerHTML == '0') ? 'hidden' : '';
    </script>
    </body>


    В конец скрипт перенести.

    А это второй способ, который уже описали:
    body{
    	overflow-y: scroll;
    }
    Ответ написан
    Комментировать
  • Как выделить все элементы кроме первого и последнего?

    one_day
    @one_day
    ul li:not(:first-child):not(:last-child) {
    ...
    }


    как-то так
    Ответ написан
    Комментировать
  • Как в VS Code настроить видимость SASS-переменных из импортированых файлов?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Есть расширение SCSS IntelliSense, оно ищет декларации по всему, что находится в воркспейсе
    Ответ написан
    2 комментария
  • Как спрятать scrollbar в div и отставить возможность скроллинга?

    WebgeekS
    @WebgeekS
    100% рабочий вариант Chrome, Safari, IE и т.д
    .elem {
          overflow: auto;
          -ms-overflow-style: none;
          scrollbar-width: none;
    }
    
    .elem::-webkit-scrollbar {
          width: 0;
          height: 0;
    }
    Ответ написан
    2 комментария
  • Open Server работает очень медленно, как ускорить его работу?

    skapunker
    @skapunker
    Умный
    Столкнулся с такой же проблемой. Решил так: в настройках движка сайта в конфиге для подключения к БД вместо localhost написал 127.0.0.1 и все стало норм.
    Ответ написан
    9 комментариев
  • В чём разница между background и background-color?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    CSS свойство background – это просто сокращение, позволяющее одним значением установить сразу несколько из свойств background-*:
    • background-clip
    • background-color
    • background-image
    • background-origin
    • background-position
    • background-repeat
    • background-size
    • background-attachment

    Указанные значения (в любом порядке) устанавливают свойства точно так же, как и отдельные инструкции. Не указанные сохраняют значения по умолчанию.

    Таким образом, background: #F90 полностью эквивалентен background-color: #F90

    Например, background: #F90 url(fon.jpg) repeat-x равен
    background-color: #F90;
    background-image: url(fon.jpg);
    background-repeat: repeat-x;


    Цвета – разные цветовые модели бывают удобны для разных задач. Например, в модели HSL легко «гасить» свет, изменяя только его компоненту L (яркость), или только уменьшая насыщенность S. Или получить палитру из нескольких цветов, одинаково ярких-сочных, но равномерно разбросанных по кругу оттенков, равномерно раскидав их H по цветовому кругу, а S и L оставив одинаковыми.
    Ответ написан
    1 комментарий
  • Почему не меняется версия ноды?

    Grapeoff
    @Grapeoff
    В чём концепция...?
    Nvm всегда запускаем из-под администратора -> откройте командную строку от имени админа

    61eedcb12d123926454095.png
    Ответ написан
    Комментировать
  • Npm, Webpack, NodeJs с чего начать?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Я backend разработчик. Типовая задача забрать из SQL и выложить JSON на URL. Время от времени становится интересно -- что там, на другой стороне проволоки) Например попробовать самому отрендерить в браузере что я туда посылаю.
    Начинал с представления о DOM, как работает XMLHttpRequest, как интегрируется SVG и как рисуют на canvas.
    В webasm и webgl потыкал, но не осилил.
    В хобби front поделках остановился на yarn для управления зависимостями и rollup для сборки.
    Ответ написан
    1 комментарий
  • Шаблонизатор/препроцессор для верстки в 2021?

    @SergeiB
    Использую Nunjucks, доволен, как слон. Подключаю, как в приведённом тут примере:
    import Nunjucks from './nunjucks'; // Импортируем Nunjucks из нашего файла конфигурации (см. ниже)
    
    {
      test: /\.njk$/,
      use: {
        loader: 'html-loader',
        options: {
          preprocessor: (content, loaderContext) => {
            let result;
    
            try {
                loaderContext.addContextDependency(loaderContext.context);
                loaderContext.addDependency(PATHS.njkConfig); // PATHS.njkConfig - путь к файлу конфигурации
    
                result = Nunjucks.renderString(content); // или `Nunjucks.render(loaderContext.resourcePath)`
              
            } catch (error) {
              loaderContext.emitError(error);
    
              return content;
            }
    
            return result;
          },
          minimize: false
        }
      }
    }


    Файл конфигурации nunjucks.js.

    import Nunjucks from 'nunjucks';
    
    // PATHS.pages - путь к папке с файлами Nunjucks
    const env = Nunjucks.configure(PATHS.pages, {
      noCache: true
    });
    
    // Тут можно задавать всякие фильтры и глобальные переменные, например:
    // const isArray = value => Array.isArray(value);
    // env.addFilter('isArray', isArray);
    // env.addGlobal('projectName', 'mySuperProject');
    
    export default Nunjucks;

    Ответ написан
    Комментировать