• Как правильно вывести значение?

    @zombtron
    foreach ($instPosts as $elem) {
    	echo '<div><img src="'.$elem.'"></div>';
    }
    
    foreach ($instPosts as $elem) {
    	echo "<div><img src=\"$elem\"></div>";
    }
    
    foreach ($instPosts as $elem) {
    ?>
    	<div><img src="<?php echo $elem; ?>"></div>
    <?php
    }
    
    foreach ($instPosts as $elem) {
    ?>
    	<div><img src="<?=$elem; ?>"></div>
    <?php
    }


    4 варианта на выбор
    Ответ написан
  • Как получить список файлов в папке и записать их в JSON с помощью js?

    @zombtron
    Без помощи серверных технологий, чисто на фронте, нельзя.
    Если проект ваш, читайте папку на сервере и отдавайте ее клиенту. Если не ваш, и владелец спрятал содержимое, то все... Можно правда косвенно - смотреть откуда что грузится, анализировать имена, проверять, что существует. Но получить все вряд ли получится...
    Ответ написан
  • Как с помощью bootstrap 5 выводить блоки разного размера с общим контейнером?

    @zombtron
    А чистый css чем не угодил?
    div:nth-child(5n+1), div:nth-child(5n+2) {
        width: 49%;
        display: inline-block;
    }
    div:nth-child(5n+3), div:nth-child(5n+4), div:nth-child(5n+5) {
        width: 33%;
        display: inline-block;
    }

    И никаких левых библиотек, никаких извратов с хтмл.
    Ответ написан
  • Как оптимизировать удаление элементов из массива по массиву исключений?

    @zombtron
    Можно так:
    function exclude($list, $exceptions){
        $flipped = array_flip($list);
        foreach ($exceptions as $exception) {
              unset($flipped [$key]);
        }
        $list= array_flip($flipped );
        return $list;
      }

    Такой вариант намного быстрее будет. И памяти меньше жрет. Единственное, array_flip. Без понятия, насколько она продуктивна.
    Если array_flip тоже много памяти и времени хавать будет, то можно циклом обратный массив сформировать или изначально сформировать/передать $list в виде " 'filename' => '' "
    Ответ написан
  • Как получить данные при загрузке страницы?

    @zombtron
    Нужные вам адреса имеют вот такой вид:
    https://www.21vek.by/reviews/get/637728/0/?page=2&hash=
    где page=0, 1, 2 и тд. для 1-10, 11-20, 21-30 отзывов, соответственно.
    В общем, нужно загрузить страницу, найти /reviews/get/--хххх--/--хххх--/ и кол-во и загружать комменты.
    Но... прямым запросом оно их не отдает, пишет 404. возможно простым аяксом можно, а может там CORS и нужно глубже рыть.
    Ответ приходит в json но готовым хтмл.
    Ответ написан
    Комментировать
  • Как правильно сверстать такой селект?

    @zombtron
    https://jsfiddle.net/x75zLn2a/
    вот вам каркас. Стилизуйте и напичкайте данными.
    Стилизоваться оно должно как угодно, ибо там обычные дивы.
    Инпут скрытый я добавил для того, чтобы не колдовать с отправкой из формы - все по фен-шую, стандартный инпут с name и value.
    Нейм у инпута - это нейм предполагаемого селекта, data-value у дивов - value у option.
    Все свистелки вставляются в div.opt

    Еще завтыкал сделать сворачивание при выборе и при клике вне селекта.
    И нужно еще добавить позиционирование/размеры, чтобы при открытии оно накрывало то, что снизу, а не сдвигало.
    Я думаю, понятно, что и как. Если нет, обращайтесь, подскажу.

    upd:
    https://jsfiddle.net/zombotron/gakqoz2t/3/
    Добавил, что забыл + управление кнопками клавиатуры.
    Конечно жестко велосипедно, зато без кучи зависимостей, что позволяет довольно шустренько работать на слабом ноуте.

    + есть небольшие костыли. Но я не претендую на универсальность решения. Это скорее просто алгоритм.
    Ответ написан
    Комментировать
  • Как перебрать поля формы и присвоить им имена в зависимости от вложенности?

    @zombtron
    В идеале нужно было бы рекурсивно обходить и брать все непосредственные дочерние элементы. Но есть проблема: при 200-300 элементах с 5-6-ю уровнями вложенности будет жесткий тупняк. Поэтому без рекурсии.
    var lev = 0; // level
    var selector = 'html'; // root tag
    var els = document.querySelectorAll(selector);
    var root = els;
    
    while(els.length > 0){
    	for(j=0; j<els.length; j++){
    		// тут колдунство над els[j];
    	}
    	lev++;
    	selector += ' > *'; 
    	els = document.querySelectorAll(selector);
    }


    Этот код перебирает все элементы по уровням. Сначала корень - хтмл, на следующей итерации цикла while - head и body, потом то, что непосредственно вложено в head и body, и т.д.

    Внутри цикла делаете проверку имени тега. Если элемент формы, добавляете ему имя. Колво скобок == уровню вложенности, ну а внутри скобок по усмотрению.
    Ответ написан
    Комментировать
  • Возможно ли сделать такую фигуру на CSS?

    @zombtron
    Типа так:
    <div class="figure"></div>
    <style>
    .figure {
        width: 250px;
        height: 50px;
        background-color: orange;
        border-radius: 15px;
    	position: relative;
    }
    
    .figure:before {
        content: '';
        width: 234px;
        height: 25px;
        background-color: orange;
        display: block;
        position: absolute;
        left: 8px;
        top: 35px;
        border-radius: 50%;
    }
    </style>

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

    @zombtron
    Я думаю, что для "правильности" нужно руководствоваться тем, что загружать нужно только те шрифты, которые требуются и избегать ВОШ (вспышка обычного шрифта) - загружать шрифт перед блоком, в котором он используется и загружать синхронно.
    А так, на ваше усмотрение и с учетом структуры/архитектуры страницы/приложения:
    , @font-face{}, по прямому url, из localstorage, в виде base64.
    По ходу, непосредственно в хтмл-коде - 100% гарантирует загрузку именно там, где прописано и именно в момент вызова. Но нужно учитывать размер таких кусков и то, что такой код выглядеть будет страшно. Но 1-2 шрифта загрузить можно...
    Ответ написан
    Комментировать
  • Как сделать такой таймлайн?

    @zombtron
    А вот вам велосипед на чистых html+css+js.
    В Хроме и Огнелисе работает. Вроде адаптивно (от 320 до 1280).
    Не прикрутил анимацию, иконки в кружках и для больш. разреш. экрана настроить нима как.
    https://jsfiddle.net/42wb05Lq/2/
    Ответ написан
    Комментировать
  • Как перебрать все варианты транслита?

    @zombtron
    Для начала разбить на слова и транслитерировать оные.
    А потом составить все комбинации. Если принять русский вариант за 0, а транслит за 1, то очевидно, что все варианты - это набор всех двоичных чисел от 0 до 2^N, где N - кол-во слов:
    2 слова - 00, 01, 10, 11
    3 - 000, 001, 010, 011, 100, 101, 110, 111

    Дальше, думаю несложно.
    Ответ написан
    Комментировать
  • Возможно ли как то отсортировать теги по их аттрибутам с помощью js?

    @zombtron
    Ну, вот так где-то
    (если с сортировкой строк. для int лень ковырять):
    <div class="memory" memory="128-gb">128-gb</div>
    	<div class="memory" memory="64-gb">64-gb</div>
    	<div class="memory" memory="256-gb">256-gb</div>
    <script>

    unordered = {};
    keys = Array();
    divs = document.querySelectorAll('.memory');
    for(i=0; i<divs.length; i++){
    	keys[i] = divs[i].attributes.memory.nodeValue;
    	unordered[divs[i].attributes.memory.nodeValue] = divs[i];
    	parentCont = divs[i].parentNode;
    	divs[i].remove();
    }
    keys = keys.sort();
    
    for(i=0; i<keys.length; i++){
    	parentCont.appendChild(unordered[keys[i]]);
    }

    </script>
    Ответ написан
  • Как выполнить этот скрипт не используя .onload?

    @zombtron
    Можно конечно вставлять скрипт где-то в середине/конце страницы, но как по мне, скрипты должны быть в шапке. defer="defer" вам поможет:
    <head>
    	<script defer="defer" src='scripts/script.js'></script>
    </head>

    или
    <head>
    	<script defer="defer">

    window.onload = function() {
                    document.getElementById('mobile_main_nav').onclick = function() {
                        openbox('mobile_main_nav_items', this);
                        return false;
                    };
                };
    
                // если блок включен
                function openbox(id, toggler) {
                    var div = document.getElementById(id);
                    if(div.style.opacity == 1) {
                        div.style.height = 0;
                        div.style.opacity = 0;
                        toggler.innerHTML = 'Открыть';
                        toggler.style.background = '#393b3f';
                    }
    
                    // если блок выключен
                    else {
                        div.style.opacity = 1;
                        div.style.height = '155px';
                        toggler.innerHTML = 'Закрыть';
                        toggler.style.background = '#393b3f';
                    }}

    </script>
    </head>
    Ответ написан
    1 комментарий
  • Как сделать,чтоб при убирании курсора анимация плавно возвращалась?

    @zombtron
    Вот так работает, но с анимацией и при загрузке.
    На css.
    Как-то и этот косяк убирается., но мне лень думать как. )

    .square{
        height: 100px;
        width: 100px;
        background: red;
        animation-fill-mode: forwards;
        animation-direction: alternate;
        animation: squareq linear 1s;
    
    }
    .square:hover{
        animation: square linear 1s;
    }
    
    @keyframes square {
      from {
        width: 100px;
        height: 100px;
      }
      25% {
        height: 100px;
        width: 200px;
      }
      50% {
        width: 200px;
        height: 200px;
      }
      75% {
        width: 200px;
        height: 100px;
      }
      to {
        width: 100px;
        height: 100px;
      }
    }
    
    
    @keyframes squareq {
      from {
        width: 100px;
        height: 100px;
      }
      25% {
        height: 100px;
        width: 200px;
      }
      50% {
        width: 200px;
        height: 200px;
      }
      75% {
        width: 200px;
        height: 100px;
      }
      to {
        width: 100px;
        height: 100px;
      }
    }
    Ответ написан
    Комментировать
  • Как вывести строку по id php ?id=1?

    @zombtron
    $id = intval($_GET['id']);

    SELECT * FROM `product` WHERE `id` = $id
    Ответ написан
  • Как открыть новое окно на текущей странице?

    @zombtron
    <a href="#nul" onclick="window.open('http://site.com/page.html ','','Toolbar=1,Location=0,Directories=0,Status=0,Menubar=0,Scrollbars=0,Resizable=0,Width=550,Height=400');">Название</a>


    Такое?
    С параметрами окна сами разбирайтесь. Мне влом их расписывать, да и они вроде как "говорящие".
    Ответ написан
  • Как сделать такой функционал для кнопки на сайте?

    @zombtron
    Создаем в БД таблицу для токенов.
    При запросе страницы проверяем кол-во токенов в тбл.
    Если меньше 5-ти, выводим кнопку кликабельной.
    Присваиваем пользователю токен (если нужно).
    Отслеживаем клик по кнопке.
    Отправляем на сервер токен кликнувшего юзера.
    Записываем токен в тбл, если такого нет.

    и т.д.

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

    @zombtron
    А вот так:
    function whatDo(){...code...};
    
    function repeat(){
        setTimeout
        (
            function()
            {
                 whatDo();
                 repeat()
            },
            500
        );
    }
    
    repeat();
    Ответ написан
    Комментировать
  • Как взламывают бд крупных компаний?

    @zombtron
    Самые-самые взломы - это либо вирусная атака, либо соц. инженерия. Остальное - не больше 10%.
    Ответ написан
    Комментировать