Задать вопрос
  • Как подключить стили и meta, если в задании написано, что код не должен содержать html,header и body?

    @ksnk
    Делаешь отдельно, на php, например, шаблон того, во что будет вставляться твой "адаптив по макету". Наверное, заказчик таки скинул что-то со словами "вот сюда, примерно..." . Вот это и берешь за основу шаблона, ну или сам мастеришь, проявля ум и сообразительность. Например можно притырить главную магазина заказчика. В шаблоне будут и хидер и боди и прочие футеры с метами...
    Отдельным файлом - то, что нужно - тот самый "адаптив...", который вставляется в шаблон обычным incude (для этого и нужен php)
    Отдаешь оба файла, но говоришь, что решение в этом, а вот это нужно для демонстрации...
  • Как правильно компилировать Pascal код?

    @ksnk
    Погугли что такое free Pascal, как его ставить и поставь. Не думал, что он еще живой, а вот подиж ты...
  • Как сделать в Css эффект паралакса с видеофоном и картинкой?

    @ksnk
    На CSS такое не решить. На JS, по идее, при старте страницы поставить слушателя для window на "scroll". В нем, проверять что элемент '.foto' не высовывается "сверху" экрана. Это проще всего сделать getBoundingClientRect для этого элемента. Как только top станет не больше 0 - удалить элемент с видео со страницы (это imho, проще для этого случая, чем скрывать) и убрать слушателя scroll'a. Все, вроде, должно стать как надо.
  • Фильтры товаров интернет-магазина, как грамотно реализовать обмен данными с сервером?

    @ksnk
    У меня, обычно, в результате запроса сервер выдает найденный контент и url, на который будет заменен текущий. Так можно сохранить в адресе только важные параметры, если это почему то нужнее, чем сохранить полный фильтр, или выкинуть уже не использующиеся ключи фильтра или упаковать все параметры в GUID.
    Адрес подменяем с помощью historyApi, да. Вот только если обновление страницы идет после изменения каждого флага фильтра - лучше использовать не pushState а replaceState, чтобы не загаживать историю броузера.
  • Фильтры товаров интернет-магазина, как грамотно реализовать обмен данными с сервером?

    @ksnk
    Фильтры нужно сохранять в GET. Однако, нужно ответить себе на вопрос - сколько отдельных фильтров будет? И что будет, если каждую пару ключ-значение упихать в адресную строку. Если результат приемлем, то передавать get и не париться. Если адресная строка становится неуправляемо большой - можно подумать об упаковке параметров в индексы или вообще радикально - сохранение в базе набора параметров фильтра и замена строки на UID этого набора. Нужно еще понимать, что при передаче GET этот адрес появится в поисковике и будет периодически спамить сервер. Если фильтрация - длительный процесс - придется запрещать фильтры для ботов и/или кэшировать результат.
  • Возможно ли корректировать текущий файл эксель?

    @ksnk
    Если так приспичил Excel, почему бы не держать файл в Google документах? Там вполне вменяемый api для редактирования документов.
    Если нужно работать именно с существующим MSExcel документом - читать доку по `phpoffice/phpspreadsheet`. Там можно менять атрибуты у конкретных ячеек.
    Еще вариант - организовать в файле Excel внешние данные и спрашивать сервер, какое событие в какой цвет рисовать...
  • Как изменить шаг Drag’n’Drop при mousedown?

    @ksnk
    Анатолий, https://codepen.io/ksnk/pen/MWPbZPd
    Из изменений - заведена переменная max,
    let thumb = slider.querySelector('.thumb'),
        max=5 // till 0 to max
        ;
    
    ...
            if (newLeft > rightEdge) {
              newLeft = rightEdge;
            }
            let step=Math.round(rightEdge/max), // шаг
                value=Math.round(newLeft/step);  // значение скроллера
            thumb.style.left = (step*value) + 'px'; // смещение бегунка скроллера
          }
    ...
  • Как изменить шаг Drag’n’Drop при mousedown?

    @ksnk
    А в чем проблема ? Этот код всего лишь отрисовывает элемент. То, на сколько пикселей перемещается бегунок определяется мышкой.
    Все что можно поменять - это относительный "шаг" одного пикселя. Весь размер элемента
    0..rightEdge. Текущее состояние элемента newLeft . Задача на пропорции ?
  • Как перед однозначным номером даты поставить ноль?

    @ksnk
    Что не правильно?
    В регулярке написано, что менять одну цифру, перед которой стоит пробел и после которого стоит пробел. В исходной строке перед цифрой стоит начало строки.

    Если очень нужно получить две цифры при выводе даты - используй не 'long' а прямой формат

    $formattedDate =Yii::$app->formatter->asDate($date, 'dd MMMM Y г.');
  • Как закрыть данный попап при клике вне него?

    @ksnk
    Добавь в функцию renderPopup в конец что-то такое
    ...
    popup.appendChild(btnBrand);
    //
          var mouseupHandler=function (e) {
            if (!popup.contain(e.target)) {
                document.removeEventListener("mouseup", mouseupHandler);
                popup.classList.remove("open");
            }
        };
        document.addEventListener("mouseup",mouseupHandler,true);
    }

    Ну а потом покликай на кнопку быстро несколько раз и пойми сам в чем еще ты не прав...
  • Как сделать открытие страницы в новой вкладке в маленьком размере?

    @ksnk
    Останется только объяснить тем пользователям, которые запретили себе "всплывающие окна", что они в корне неправы ;)
  • Как сделать открытие страницы в новой вкладке в маленьком размере?

    @ksnk
    Почему бы не
    - открыть форму прямо в отдельной вкладке href="..." target="_blank" ?
    - если хочется чтобы адрес не менялся - можно скриптом скачать страничку и вставить ее содержимое в iframе на нужной. Или завести отдельную "прокси" страничку на базовом сайте, которая сама будет подменяться нужной формой. Так как "форма наша" - предстоящий геморрой с простановкой абсолютных адресов скриптов и стилей с картинками можно пережить.
  • Как сделать линии по всему сайту ПРАВИЛЬНО и логично?

    @ksnk
    Ну, так же как и сделано уже. вот только при размере экрана <1220 делать svg бэкграунд с теми же полосками. Svg - чтобы не атрофировались линии при неудачном расширении. Поставить background-size:100%
  • Как скрыть backend своего сайта?

    @ksnk
    Задача начинается "простенький сайт с JS", а совет - "прикрути нейронную сеть". :) Ну, так, навскидку -"простенький сайт" (код, без картинок) - ну, там, 10-20 кб собственного кода, предлагается заменить на мегабайты сети?

    Если не офтопить, то еще забавный вариант - прятать пароль в webgl. WebGl - это сишный код, встраиваемый в страницу броузера, в который можно много чего напихать + данные, в которые влезет тоже достаточно много чего, кроме пароля. Так что дебажить это дело может оказаться, особенно с непривычки, накладно.

    Хотя, может быть смешно, если тот самый токен, который тут прячут, виден в отладчике броузера при общении страницы со сторонним рессурсом...
  • Как перевести дату в секунды если доступен только год?

    @ksnk
    DateTime::createFromFormat. Перебрать все используемые в базе форматы и выдать первый попавшийся успешно отконвертированный. Всего есть 2 формата ?
    'Y' и 'd-m-Y'.
  • Как правильно обрезать предложения?

    @ksnk
    mb_substr($title, 0, 140,'utf-8').'...';
    Или, если нужно обрезать по пробельному символу
    $topborder=30; // все строки больше этого - режем
    $minborder=20; // столько символов гарантированно оставляем
    $test='Строка для обрезания. Строка для обрезания. Строка для обрезания. Строка для обрезания.';
    
    echo preg_replace('~^(.{'.$minborder.'}[^\s\.]{0,'.($topborder-$minborder).'}).*$~u','\\1...',$test).PHP_EOL;
  • Как менять некоторую информацию на сайте через Telegram бота?

    @ksnk
    мой господин, В смысле ? Сайт УЖЕ есть. Аккаунт в телеге, вероятно, уже тоже есть. Бота поставить на существующий уже хостинг - 5 минут читать документацию. Без регистраций и СМС...
  • Как заполнить input из $_FILES?

    @ksnk
    1 - никак. Но могут быть нюансы. Сохрани файл во временную папку. И в сессию то, что в $_FILES прилетело, куда-нибудь. При выводе этого поля файл, в зависимости от этой сессионной переменной, приписывай ему снизу - "загружен такойтофайл". При следующем сабмите формы доставай его из поля, а если нет в поле - из сессии.
  • Как в Canvas сравнить перекрытие фигур?

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