• Как сделать, чтобы навигация разных слайдеров работала независимо?

    inkShio
    @inkShio
    document.querySelectorAll('.catalog-item-slider').forEach(el => {
      new Swiper(el, {
        ...настройки
      });
    });

    Попробуй так.
    Ответ написан
    Комментировать
  • Когда нужен MVC, а когда API?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    API есть у любой программы. MVC это способ организации кода, наличия API он не исключает. Не стоит сравнивать тёплое с мягким.
    Ответ написан
    3 комментария
  • Как делается такой слайдер?

    @daedra93
    Как писали выше, есть готовые, я бы посоветовал swiper.js
    Ответ написан
    Комментировать
  • Как реализовать форму?

    @alexalexes
    Эффективней всего использовать фреймворки для пользовательских интерфейсов. Например, Vue JS.
    За счет реактивности вы можете подвязаться как к элементам ввода в DOM, так и к состоянию объектов в window, и отрисовывать по собственной семантике шаблонов vue не только целые формы, но и изменять состояние отдельных тегов, по изменению состояния других объектов формы или внутренней логике JS.
    Ответ написан
    Комментировать
  • Как запретить инвертирование цвета при темной теме браузера?

    @ymfront Автор вопроса
    Нашел следующее решение для запрета темной темы:

    HTML:

    <meta name="color-scheme" content="only light">

    CSS:

    :root {
         color-scheme: only light;
    }
    Ответ написан
    Комментировать
  • Вопрос с собеседования: Есть ли в PHP нативная возможность инициализировать переменную как в функции preg_match()?

    neuotq
    @neuotq
    Прокрастинация
    Вас проверяли на знание того, как передаются переменные в функция в php. Переменные передаются всегда по значению, те передаёте переменную в функцию, туда копируется в новую переменную значение оригинальной.

    С помощью амперсанда & мы можем заставить передавать ссылку на эту же переменную в памяти. И тогда манипуляции с ней внутри функции будут равны манипуляциям вне.

    С объектами не большая путаница происходит, но только из-за того что многие не думают/забывают что хранится в переменной когда создаётся объект. При создании объекта в саму переменную помещается его идентификатор, по которому php и обращается к этому объекту.
    Ну и соответственно при передаче такой переменной в функцию, мы копируем этот идентификатор в новую переменную. Переменная уже другая, независимая от той что была, но идентификатор объекта тот же. Поэтому манипуляции с объектом в функции(обращение к свойствам/методам) отразятся на объекте с этим идентификатором. И со стороны выглядит словно переменная с объектом всегда передаётся по ссылке(словно стоит амперсанд), но это не так. Например внутри функции вы перезапишете переменную(к примеру присвоите null) то оригинальная переменная с объектом не поменяется.

    А вот есть если передать её по ссылке, те с амперсандом, то внутри функции будет переменная со ссылкой на переменную вне, и поэтому не только манипуляции с объектом, но и перетирание переменной в целом повлияет.

    class A {
        public $foo = 1;
    }
    
    //создали переменную
    //в ней хранится id объекта, сам объект где-то в памяти оптимизированно лежит
    $newObj = new A;
    
    //Вывод 1
    echo $newObj->foo;
    
    function foo($obj) {
    	//в obj скопирован id объекта
    	//тк он тот же, то меняется и оригинальный объект
    	$obj->foo = 2;
    	//локальная переменная перетёрся, больше id объекта не хранит
    	//на внешнюю не повлияло
    	$obj = null;
    	
    }
    
    foo($newObj);
    // получили 2
    echo $newObj->foo;
    
    
    function bar(&$obj) {
    	//obj ссылается на тоже место в памяти, что и внешняя переменная с id объета
    	//тк он тот же, то меняется и оригинальный объект (тут логично, тк по ссылке)
    	$obj->foo = 2;
    	//локальная переменная перетёрся, больше id объекта не хранит
    	//внешняя тоже перетрётся
    	$obj = null;
    }
    
    
    bar($newObj);
    //ошибка предупреждение, нельзя читать свойства на null
    echo $newObj->foo;


    Ну и зная всё это, вы можете написать свою простую функцию, по типа прегматча.
    function mySum($a, $b, &$result) {
    	$result = $a + $b;
    }
    //первые два параметра по значению, в третий передаём переменную
    //она тут же инициализируется (как если бы её до этого написать просто $res;)
    // и передаётся её ссылка внутрь функции
    mySum(1,2, $res);
    
    //3
    echo $res;
    Ответ написан
    Комментировать
  • Насколько сложно реализовать данную SVG?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Как правильно разделить assets в сборке?

    @desocrew
    Чтобы избежать копирования контентных изображений и статических файлов в dist, вы можете добавить правила исключения для этих файлов в ваш файл конфигурации Vite. Для этого можно использовать опцию exclude в секции build вашего файла конфигурации.

    Вот пример кода, который позволит вам исключить все контентные изображения и статические файлы из вашей сборки Vite:
    import { defineConfig } from 'vituum';
    import nunjucks from '@vituum/nunjucks';
    
    export default defineConfig({
      integrations: [nunjucks()],
      templates: {
        format: 'njk',
      },
    
      filenamePattern: {
        '+.css': false,
        '+.scss': 'src/styles',
      },
    
      vite: {
        build: {
          rollupOptions: {
            output: {
              assetFileNames: (assetInfo) => {
                let extType = assetInfo.name.split('.').at(1);
                if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
                  console.log(assetInfo)
                  extType = 'img';
                }
                return `assets/${extType}/[name][extname]`;
              },
              chunkFileNames: 'assets/js/[name].js',
              entryFileNames: 'assets/js/[name].js',
            },
          },
          // исключение контентных изображений и статических файлов
          exclude: [
            '**/*.{png,jpg,jpeg,gif,svg,bmp,tiff,ico}',
            '**/*.{txt,json,html,css,js,map}',
          ],
        },
      },
    });


    Здесь мы использовали exclude для указания путей к файлам, которые мы хотим исключить из сборки. Вы можете изменять эти пути, чтобы подстроить их под свои нужды.
    Ответ написан
    1 комментарий
  • Почему не отрисовывается компонент в Blazor?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Потому что вы сделали вот там *тыкает пальцем в экран* не правильно, нужно было сделать вот так: *кусок кода*. Вот и всё, проблема решена
    Ответ написан
    Комментировать
  • На чем создать интернет-магазин в 2023?

    Adamos
    @Adamos
    Решать проблемы оптимизации переходом на Битрикс - это как на скачках раскрыть за спиной парашют в надежде, что лошадь его испугается и побежит быстрее.
    Ответ написан
    1 комментарий
  • Как отдать браузеру 1 картинку и отобразить её в нескольких местах страницы?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Одну и ту же картинку браузер качает один раз, ложит в локальный кэш (если он не выключен), и показывает во всех местах. Качать одно и то же 10 раз - дурных нема. Браузеры придумывали во времена, когда каждый килобайт трафика стоил денежек...

    Исправьте отдачу одной картинки под разными URL-ами, и всё. Или замените отдачу на редирект на единственно правильную картинку.
    Ответ написан
    5 комментариев
  • Метод remove выдает ошибку, как можно устранить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    querySelectorAll возвращает не один элемент, а коллекцию. Ну а у колекции нет свойства classList.
    Ответ написан
    Комментировать
  • Как запретить перевод сайта?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    1. Сделать его из картинок.
    2. Размещать только на localhost.
    3. Писать на своём выдуманном языке.
    Ответ написан
    2 комментария
  • Глюки на сайте после программных изменений, пока не очистить кэш. Как от этого избавится?

    delphinpro
    @delphinpro
    frontend developer
    Браузер кэширует ресурсы по полному УРЛ, включая параметры запроса.
    Поэтому выход очень простой, и он повсеместно используется.
    Нужно дописать в queryString любой уникальный параметр.
    В лоб можно писать метку времени

    <script src="my_script.js?<?= time() ?>">

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

    Лучше ввести версионирование. Простейший вариант – вручную обновлять версию при изменении

    <script src="my_script.js?v=1">
    <script src="my_script.js?v=2">


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

    <script src="my_script.ab21df.js">

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

    В остальных случаях отлично подойдет вариант с подстановкой метки времени изменения файла

    <script src="my_script.js?v=<?= filemtime('/path/to/my_script.php') ?>">
    Ответ написан
    Комментировать
  • Как сделать чтобы текст рос вверх?

    @cssfish
    Плохое знание основ - причина больших бед
    если absolute, то прижимаем его к низу bottom- и он будет расти вверх.
    а если flex то flex-end
    Ответ написан
    Комментировать
  • Как сделать canvas кривую линию через весь блок?

    RAX7
    @RAX7
    Такие штуки проще на svg делать
    Ответ написан
    Комментировать
  • Как правильно сделать свайпер в PHP?

    scottparker
    @scottparker
    ты же понимаешь, что в данном случае пхп лишь генерирует html-разметку беря данные из бд? ты можешь сделать этот же слайдер просто на html? если да, то посмотри какую разметку сделал (без применения js)
    Ответ написан
    Комментировать
  • Надо ли дожидаться загрузки документа, если скрипт подключается перед закрывающим тегом body?

    @alexalexes
    Попробуй вычитать геометрию img или его контейнеров до загрузки изображений.
    Ответ написан
    1 комментарий
  • Как сделать чтобы таблица не выходила за рамки экрана?

    ddv88
    @ddv88
    Binance Futures
    Самый элегантный и простой вариант, который я когда либо находил.
    https://codepen.io/AllThingsSmitty/pen/MyqmdM
    Ответ написан
    Комментировать