Задать вопрос
  • Почему input в состоянии webkit-autofill искажает бордер?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    у меня не отображает.

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

    delphinpro
    @delphinpro
    frontend developer
    Если у вас windows, попробуйте приложение https://apps.microsoft.com/detail/9NBLGGH0CB6D
    Ответ написан
    Комментировать
  • Как найти элемент с высотой (clientHeight) более определенного значения?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Это и есть "в лоб"

    const els = Array.form(document.querySelectorAll('.el-class')).filter(el => el.clientHeight > 300);
    console.log(els);
    Ответ написан
    Комментировать
  • Как заблокировать кнопку после нажатия на JS?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    document.querySelectorAll('.btn').forEach(btn => {
       btn.addEventListener('click', function () {  
          btn.disabled = true;
          btn.textContent = 'Идет поиск. Ждите пожалуйста.'
       });
    });
    Ответ написан
    3 комментария
  • Html верстка по flexbox и БЭМ?

    delphinpro
    @delphinpro
    frontend developer
    Без привязки к макету у вас там просто блоки по сути.
    Но, допустим вот такая структура:
    <div class="wrapper">
        <div class="header"> <!-- блок header -->
            <div class="header__content"> <!-- элемент блока header -->
                <div class="container"></div>
            </div>
        </div>
        <div class="main">
            <div class="container"></div>
        </div>
        <div class="footer">
            <div class="container">
                <div class="footer__logo"></div>
                <div class="footer__main"></div>
                <div class="footer__links"></div>
            </div>
        </div>
    </div>


    wrapper - самостоятельный блок, может иметь такие стили:
    .wrapper {
      display: flex;
      flex-direction: column;
      min-height: 100vh;
    }

    В свою очередь, может понадобиться растянуть средний блок на всю доступную высоту, тогда он будет элементом блока wrapper
    <div class="wrapper">
        <div class="header">  ... </div>
        <div class="wrapper__main main"> <-- Блок main и одновременно элемент враппера -->
            <div class="container"></div>
        </div>
        <div class="footer"> ... </div>
    </div>


    .wrapper__main {
      flex-grow: 1;
    }


    Дальше блок footer - тоже вполне себе самостоятельный.
    Он в свою очередь может иметь внутренние элементы

    <div class="footer">
        <div class="container">
            <div class="footer__logo"></div>
            <div class="footer__main"></div>
            <div class="footer__links"></div>
        </div>
    </div>


    Обратите внимание, что "в середине" блока вклинился другой блок - container. Это вполне допустимо! Вложенность БЭМ не обязательно должна соответствовать вложенности DOM.

    Если вам здесь нужно для container добавить какие-то другие стили в контектсе footer, то делаете его элементом footer. Например, нужно выстроить элементы подвала в ряд:

    <div class="footer">
        <div class="footer__container container">
            <div class="footer__logo"></div>
            <div class="footer__main"></div>
            <div class="footer__links"></div>
        </div>
    </div>


    // общие стили контейнера (например центрирование)
    .container {
      max-width: 1000px;
      margin-inline: auto;
    }
    // стили контейнера в подвале
    .footer__container {
      display: flex;
      justify-content: space-between;
    }


    И последнее: не нужно связывать flexbox и БЭМ =). Первое - это технология раскладки элементов, второе - это система именования css классов для имитации модульности, избежания конфликтов и упрощения поддержки.
    Ответ написан
    Комментировать
  • Как правильно именовать стили в Figma?

    delphinpro
    @delphinpro
    frontend developer
    Как верстальщик ваших макетов скажу, - пофиг.
    Главное чтобы именование было, чтобы я видел что это именно тот цвет (шрифт и т.д.), а не сравниал каждый раз пипеткой
    Ответ написан
    1 комментарий
  • Как открыть скомпилированный Vue проект локально?

    delphinpro
    @delphinpro
    frontend developer
    можно запустить браузер без контроля CORS https://www.junian.net/dev/google-chrome-disable-cors/
    но скорее всего, проект всё равно не будет работать.
    Ответ написан
    Комментировать
  • Почему так работает usort?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    это не usort. Это незнание языка

    вариант 1
    $order = 'price';
    usort($filtered_items, function($a, $b) use ($order){
      return ($a[$order] - $b[$order]);
    });


    вариант 2
    $order = 'price';
    usort($filtered_items, fn($a, $b) => ($a[$order] - $b[$order]));
    Ответ написан
    5 комментариев
  • Как узнать номер акк вк не взламывая?

    delphinpro
    @delphinpro
    frontend developer
    Поищите ответ здесь – https://dev.vk.com/ru/reference
    Ответ написан
    Комментировать
  • Как сделать, чтобы свойства класса прописывались не DOM-узлу, а классу, создаваемому в JS?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Я нифига не понял, кроме одного.
    Чтобы убрать стиль, назначенный из скрипта, нужно присвоить ему пустую строку.

    // добавляем стиль
    order_active.style.flex = '0 1' + choisenitemwidth + 'px';
    
    // обнуляем
    order_active.style.flex = '';


    При этом стиль не сбросится полностью – он станет таким, каким прописан в css
    Ответ написан
    Комментировать
  • Какой тип и формат жёсткого диска производительный?

    delphinpro
    @delphinpro
    frontend developer
    Если не планируете переносить на другие машины, выбирайте родной формат - VDI
    VMDK - это формат WMware, если вдруг планируете переехать в будущем - самое то. Формат хорошо поддерживается, примерно как и нативный.
    VHD - совместим с HyperV, но чуть медленнее VDI.
    Про остальные не знаю.
    Ответ написан
    2 комментария
  • Как выровнить в колонку фотки как на макете?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    .blog-inner {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      grid-template-rows: repeat(3, 1fr);
      gap: 1rem;
    }
    .blog__card:first-child {
      grid-row: span 3;
    }
    Ответ написан
    1 комментарий
  • Как сделать чтобы блок с border-dashed постепенно заполнялся border-solid?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ответ написан
    Комментировать
  • Как оптимизировать загрузку и парсинг больших JS файлов со стороны браузера/клиента?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Совершенно непонятно, зачем на одной странице нужны 10 тыс фоток.
    Во-первых, столько физически не поместится даже на три-пять экранов.
    Во-вторых, человек в принципе не способен воспринимать такое количество информации одновременно.
    Скорее всего, мне думается, это просто лента фотографий, которая "бесконечно" прокручивается для просмотра.
    Вот из этого и нужно исходить.

    Сложить список файлов в базу данных.
    Загружать небольшое количество, ну скажем 50-100 изображений.
    По мере прокрутки страницы подгружать еще сотню следующих. Предыдущие удалять. При прокрутке в обратную сторону подгружать предыдущие, а ушедшие из зоны видимости удалять.
    И никакой нагрузки на браузер не будет, и визуально будет казаться, что все фото присутствуют на странице.
    Ответ написан
    1 комментарий
  • Как заставить работать вместе react с laravel в openserver 6?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    export default defineConfig({
        // ...
        server : {
            cors: true,
        },
    });
    Ответ написан
    1 комментарий
  • Почему некорректно форматируются PHP с HTML, когда открывающие/закрывающие теги в условиях?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    напишите так

    <?php $conditional = true; ?>
    <div class="<?= $conditional ? 'hidden' : 'display-contents' ?>">
    
        <?php echo 'content'; ?>
    
    </div>


    .display-contents {
      display: contents; 
    }


    или так (блок небольшой)

    <?php if (true): ?>
        <div class="hidden">
          <?php echo 'content'; ?>
        </div>
    <?php else: ?>
        <?php echo 'content'; ?>
    <?php endif; ?>
    Ответ написан
    Комментировать
  • Как можно сократить этот код?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    const type_input = document.getElementById("type_input").value.toLowerCase();
    const type_names = ['фильм', 'сериал', 'мультсериал', 'мультфильм', 'аниме'];
    const type_index = type_names.indexOf(type_input);
    let type = 0;
    
    if (type_index === -1) {
        alert('Добавьте или исправьте тип');
    } else {
        type = type_index + 1; // значение для базы данных (если нужно 1-based)
    }
    Ответ написан
    4 комментария
  • Как реализовать запуск видео на сайте по клику видео YouTube/Vimeo на bootstrap?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    запрос к ИИ
    684a8caf7556e327947901.png

    Ответ:
    Вот готовое решение для открытия модального окна с YouTube видео по клику на кнопку:
    <button id="play" data-source="https://www.youtube.com/embed/dQw4w9WgXcQ">Play</button>
    
    <div id="modal" class="modal">
      <div class="modal-content">
        <span class="close">&times;</span>
        <iframe id="youtube-video" width="560" height="315" frameborder="0" allowfullscreen></iframe>
      </div>
    </div>
    
    <style>
      .modal {
        display: none;
        position: fixed;
        z-index: 1;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.8);
      }
      
      .modal.show {
        display: flex;
        justify-content: center;
        align-items: center;
      }
      
      .modal-content {
        position: relative;
        background-color: #fefefe;
        padding: 20px;
        border-radius: 8px;
        max-width: 800px;
        width: 90%;
      }
      
      .close {
        position: absolute;
        top: 10px;
        right: 20px;
        font-size: 28px;
        font-weight: bold;
        color: #aaa;
        cursor: pointer;
      }
      
      .close:hover {
        color: #000;
      }
      
      iframe {
        width: 100%;
        aspect-ratio: 16/9;
      }
    </style>
    
    <script>
      const playButton = document.getElementById('play');
      const modal = document.getElementById('modal');
      const closeButton = document.querySelector('.close');
      const iframe = document.getElementById('youtube-video');
      
      playButton.addEventListener('click', () => {
        const videoUrl = playButton.getAttribute('data-source');
        iframe.src = videoUrl + '?autoplay=1';
        modal.classList.add('show');
      });
      
      closeButton.addEventListener('click', () => {
        modal.classList.remove('show');
        iframe.src = '';
      });
      
      // Закрытие модального окна при клике вне его
      window.addEventListener('click', (event) => {
        if (event.target === modal) {
          modal.classList.remove('show');
          iframe.src = '';
        }
      });
    </script>


    Этот код включает:

    1. Кнопку Play с атрибутом data-source, содержащим ссылку на YouTube видео
    2. Модальное окно с iframe для встраивания видео
    3. Стили для:
      • Затемненного фона
      • Центрированного модального окна
      • Кнопки закрытия
      • Адаптивного видео (сохраняет соотношение сторон 16:9)


    4. JavaScript для:
      • Открытия модального окна по клику
      • Вставки видео в iframe с автовоспроизведением
      • Закрытия модального окна
      • Остановки видео при закрытии




    Вы можете изменить ссылку в data-source на нужное вам YouTube видео. Для получения embed-ссылки на YouTube нажмите "Поделиться" → "Встроить" и скопируйте URL из атрибута src iframe.
    Ответ написан
    Комментировать
  • Как сделать динамический роутинг в магазине на laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    public function product($slug)
        {
            $product = Product::where('slug', $slug)->firstOrFail();


    Здесь должно быть два параметра - категория и продукт.
    Первым идет категория.
    Вы ищете продукт, но в условие попадает слаг категории, запись не находится, и выбивает 404

    То, что имя параметра метода совпадает с именем параметра в роуте, ничего вам не дает, потому что вы не используете биндинг.

    Route::get('/{category:slug}/{product:slug}',[\App\Http\Controllers\ProductController::class,'product'])
        ->name('product');
    
    public function product(Category $category, Product $product)
        {
            return view('product.index', [
                'product' => $product,
                'cat_slug' => $category->slug,
            ]);
        }
    Ответ написан
    1 комментарий