Задать вопрос
  • Как обернуть первый символ span'ом?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можно еще попробовать без JS, через псевдоэлементы:

    h2::first-letter {
      color: red;
    }
    Ответ написан
    Комментировать
  • Как в fancybox3 закрыть текущее модальное окно при открытии другого из него же?

    @123581321345589
    web-разработчик
    Для этого есть опция "closeExisting", по умолчанию она "false"
    // Закрыть открытое окно, перед открытием нового (простите за тавтологию)
    $.fancybox.defaults.closeExisting = true;
    Ответ написан
    Комментировать
  • Как получить значение ячейки th и присвоить это значение в data-attr td?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Какие таблицы будем обрабатывать:

    const tables = document.querySelectorAll('селектор таблиц');

    Собираем в массив заголовки столбцов, используем элементы этого массива для задания значений атрибута. Как определять, какое именно значение брать для конкретной ячейки? - очевидно же, у них одинаковые индексы:

    for (const { tHead, tBodies } of tables) {
      const labels = Array.prototype.map.call(
        tHead.rows[0].cells,
        th => th.textContent
      );
    
      for (const { rows } of tBodies) {
        for (const { cells } of rows) {
          for (const [ i, label ] of labels.entries()) {
            cells[i].dataset.label = label;
          }
        }
      }
    }

    или

    tables.forEach(table => {
      table.querySelectorAll('tbody td').forEach(function(td) {
        td.setAttribute('data-label', this[td.cellIndex]);
      }, Array.from(table.querySelectorAll('thead th'), th => th.innerText));
    });
    Ответ написан
    Комментировать
  • Как вывести массив foreach в обратном порядке?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Еще один вариант реверсивного перебора. Будет работать также с ассоциативными массивами. Предварительный реверс массива не требуется, поэтому будет эффективнее
    $array = ["zero", "one", "two", "three", "four"];
    
    for (end($array); ($key = key($array)) !== null; prev($array) ) {
        print($key . " : " . current($array) . "\n");
    }

    sandbox.onlinephpfunctions.com/code/9f09320d307718...
    Ответ написан
    Комментировать
  • Возможно ли приобрести доменное имя в зоне .yt физ. лицу не проживающий в странах ЕС?

    RoundRobin
    @RoundRobin
    Кратко:

    Registrants from the following European countries are allowed to register domain names under .yt and the other AFNIC TLDs:

    AT - Austria
    AX - Aland Islands
    BE - Belgium
    BG - Bulgaria
    CH - Switzerland
    CY - Cypress
    CZ - Czech Republic
    DE - Germany
    DK - Denmark
    EE - Estonia
    ES - Spain
    FI - Finland
    FR - France
    GF - French Guiana
    GP - Guadeloupe
    GR - Greece
    HU - Hungary
    IE - Ireland
    IS - Iceland
    IT - Italy
    LI - Liechtenstein
    LT - Lithuania
    LU - Luxembourg
    LV - Latvia
    MQ - Martinique
    MT - Malta
    NC - New Caledonia
    NL - Netherlands
    NO - Norway
    PF - French Polynesia
    PL - Poland
    PM - Saint Pierre and Miquelon
    PT - Portugal
    RE - Reunion
    RO - Romania
    SE - Sweden
    SI - Slovenia
    SK - Slovakia
    TF - French Southern Territories
    WF - Wallis and Futuna
    YT - Mayotte
    Restrictions on individuals and corporate entities which are eligible to register a domain name
    Any individual residing and any legal entity having its headquarters or principal place of business as specified below may apply to register or renew a domain name in each of the top-level domains:

    within the territory of one of the member states of the European Union;
    within the territory of the following countries: Iceland, Liechtenstein, Norway and Switzerland.
    The domain name holder and the administrative contact must be reachable. As such, both the holder and the administrative contact must provide details of a valid telephone number and e-mail address, including accurate information to establish their identities. While the domain name is active, they must ensure that such information is kept up-to-date at all times.


    По трасти сервису обычно тоже есть ограничения в этой зоне:

    Both owner and admin contact require a local address within the European Union (please see below list). If one of the contacts has no local address in European Union, you may use our trustee service for both contacts; the trustee service cannot be used only for one of the two contacts.


    Подробнее - https://www.afnic.fr/en/
    Ответ написан
    Комментировать
  • Как запретить скролл body на iPhone?

    FLUNKEY
    @FLUNKEY
    самовар
    Вопрос старый, но тому кто гуглить будет, думаю окажется полезным.
    Для таких случаев используйте библиотеку scroll-lock.
    Так же прочитайте эту секцию, там описана проблема и решение со скроллом на iOS.
    Ответ написан
    1 комментарий
  • Как вывести ACF локальные поля (acf_add_local_field_group) на кастомную страницу в админке?

    mihdan
    @mihdan
    WordPress-евангелист, ведущий РНР - разработчик
    После переноса полей из админки в РНР код рекомендую отключить GUI, а не деактивировать/удалять плагин. Для этого есть хук:

    add_filter( 'acf/settings/show_admin', '__return_false' );


    Более подробно я расписал у себя в посте.
    Ответ написан
    Комментировать
  • Как растянуть SVG по ширине при этом сохранив высоту?

    RadCor
    @RadCor Автор вопроса
    Если мой ответ вам помог, отмечайте его решением.
    Решил вопрос с помощью preserveAspectRatio="none"
    Демо: https://jsfiddle.net/RadCor/esf16w9y/3/
    Ответ написан
    Комментировать
  • Возможно ли запретить прокрутку в iOS Safari с сохранением текущего положения?

    SmthTo
    @SmthTo Автор вопроса, куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Достаточно простое решение нашел на kinopoisk.ru. Как и всегда в таких случаях, оно лежало на поверхности.

    В переменную сохраняем текущее положение прокрутки body, на body вешаем стилями полученное значение (только отрицательное) в свойство top. Так же нужно добавить position: fixed и left: 0 (right: 0 тоже можно, хуже не будет). Да-да, всё же fixed, засим, может поломать transform.

    Вот такие inline-стили для body от работы данного метода на Kinopoisk:
    top: -345px;
    left: 0px;
    right: 0px;
    position: fixed;

    Проверил у себя на устройствах: работает в iOS Safari 11 и 12. Иных путей решения данной проблемы найти не удалось.

    Update. Забыл добавить функции, что я написал, они не супер-гипер крутые, но рабочие:
    // 1. Фиксация <body>
    function bodyFixPosition() {
    
      setTimeout( function() {
      /* Ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) */
    
        if ( !document.body.hasAttribute('data-body-scroll-fix') ) {
    
          // Получаем позицию прокрутки
          let scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
    
          // Ставим нужные стили
          document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки
          document.body.style.overflow = 'hidden';
          document.body.style.position = 'fixed';
          document.body.style.top = '-' + scrollPosition + 'px';
          document.body.style.left = '0';
          document.body.style.width = '100%';
    
        }
    
      }, 15 ); /* Можно задержку ещё меньше, но у меня работало хорошо именно с этим значением на всех устройствах и браузерах */
    
    }
    
    // 2. Расфиксация <body>
    function bodyUnfixPosition() {
    
      if ( document.body.hasAttribute('data-body-scroll-fix') ) {
    
        // Получаем позицию прокрутки из атрибута
        let scrollPosition = document.body.getAttribute('data-body-scroll-fix');
    
        // Удаляем атрибут
        document.body.removeAttribute('data-body-scroll-fix');
    
        // Удаляем ненужные стили
        document.body.style.overflow = '';
        document.body.style.position = '';
        document.body.style.top = '';
        document.body.style.left = '';
        document.body.style.width = '';
    
        // Прокручиваем страницу на полученное из атрибута значение
        window.scroll(0, scrollPosition);
    
      }
    
    }


    Для Bootstrap'овских модальных окон можно сделать универсальный вызов этих функций при их открытии и закрытии:

    $(document).on('shown.bs.modal', function () { // открытие любого модального окна Bootstrap
      bodyFixPosition();
    })
    
    $(document).on('hidden.bs.modal', function () { // закрытие любого модального окна Bootstrap
      bodyUnfixPosition();
    })
    Ответ написан
    3 комментария
  • Как удалить до определенного символа и после с помощью регулярного выражения в php?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Можно использовать класс DOMDocument для получения свойств HTML объекта
    <?php
    $htmlstr = '<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb7dbcf66a9b7b9da6551f0e57faacc7d56b5eefea90c5a357479ff1bcc47211&amp;width=100%25&amp;height=400&amp;lang=ru_RU&amp;scroll=true"></script>';
    
    $dom = new DOMDocument();
    
    $dom->loadHTML($htmlstr);
    
    $src = $dom->getElementsByTagName('script')[0]->getAttribute('src');
    
    printf("Script src: %s", $src);


    PHP Parse HTML online
    Ответ написан
    Комментировать
  • Как сделать равные блоки по высоте внутри grid?

    @romant094
    Frontend-developer
    Не уверен, что на CSS получится такое реализовать. Здесь каждый div.block расположен в своей колонке и не имеет никакой связи с другими div.block'ами. Сами колонки можно выровнять по высоте без проблем.
    Можно сделать на JS.
    const blocks = document.querySelectorAll('.block')
    const maxHeight = Math.max(...Array.from(blocks).map(block => {
      const { height } = block.getBoundingClientRect()
      return height
    }))
    blocks.forEach(block => {
      block.style.height = maxHeight
    })
    Ответ написан
    Комментировать
  • Как удалить и добавить класс на JS (jQuery) при изменении размера экрана? Проблема после обновления страницы?

    therealmoronto
    @therealmoronto
    Middle full stack developer :)
    Сделать можно так:
    $(document).ready(function() {
      function checkWidth() {
        var windowWidth = $('body').innerWidth(),
            elem = $(".number-bullets"); // лучше сохранять объект в переменную, многократно чтобы не насиловать 
                                        // страницу для поиска нужного элемента
        if(windowWidth < 480){
          elem.removeClass('col-xs-12');
          elem.addClass('col-xs-4');
        }
        else{
          elem.removeClass('col-xs-4');
          elem.addClass('col-xs-12');
        }
      }
    
      checkWidth(); // проверит при загрузке страницы
    
      $(window).resize(function(){
        checkWidth(); // проверит при изменении размера окна клиента
      });
    });
    Ответ написан
    3 комментария
  • С помощью jQuery найти по атрибуту и заменить другой атрибут?

    Tim-A-2020
    @Tim-A-2020
    Нативный
    document.querySelectorAll("[name='name666']").forEach(i => i.type = 'tel')

    jquery
    $("[name='name666']").attr('type', 'tel');
    Ответ написан
    Комментировать
  • Как ускорить скорость загрузки сайта, метрика и движовосайт тянут вниз?

    svistiboshka
    @svistiboshka
    живые веб интерфейсы
    Мой вариант:
    window.onReadyState = (e, t) => {
      const a = ["loading", "interactive", "complete"],
        o = a.slice(a.indexOf(e)),
        n = () => o.includes(document.readyState);
      n() ? t() : document.addEventListener("readystatechange", (() => n() && t()))
    }
    window.onReadyState("complete",function(){(function(m,e,t,r,i,k,a)..... })
    Ответ написан
  • Как ускорить скорость загрузки сайта, метрика и движовосайт тянут вниз?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Отложить загрузку на 5 секунд - выход, но грубоватый (имхо конечно). Я делаю по-другому - оборачиваю код в скролл-ивент + задержка в 1 секунду. То есть, сайт загрузился быстро, и как только пользователь начал скроллить хоть чуть-чуть - секундный таймаут и загрузка дополнительных ресурсов. Гугл доволен, пользователи вообще не замечают задержки:

    var fired = false;
    
    window.addEventListener('scroll', () => {
        if (fired === false) {
            fired = true;
            
            setTimeout(() => {
                // Здесь все эти тормознутые трекеры, чаты и прочая ересь,
                // без которой жить не может отдел маркетинга, и которые
                // дико бесят разработчиков, когда тот же маркетинг приходит
                // с вопросом "почему сайт медленно грузится, нам гугл сказал"
            }, 1000)
        }
    });
    Ответ написан
    29 комментариев
  • Как в Wordpress вывести id текущей рубрики?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Roman Gruff правильно пишет, но если категория всего одна, или нужно брать айди только первой из них (тут ведь всего один бекграунд надо втулить), то лучше так:

    <?php $category = get_the_category(); ?>
    <div class="class" style="background:url(адрес с темой/images/papka/<?php echo $category[0]->term_id; ?>.jpg) no-repeat;"></div>
    Ответ написан
    5 комментариев
  • Как привязать footer к низу экрана в Twitter Bootstrap?

    fearrr
    @fearrr
    Вот такое накидал решение.
    Вроде бы все учел.

    var footer = $('.footer'),
        pageContainer = $('.page-container'),
        fixClass = 'navbar-fixed-bottom';
    
        function stickyFooter() {
            var windowHeight  = $(window).height(),
                contentHeight = pageContainer.height(),
                footerHeight  = footer.height();
            footer.removeClass(fixClass);
            if (contentHeight <= windowHeight-footerHeight){
                footer.addClass(fixClass);
            }
        }
    
        stickyFooter();
        $(window).resize(function () {
            stickyFooter();
        });


    Пример html кода
    <div class="page-container">
        <section class="header"></section>
        <section class="nav"></section>
        <section class="content"></section>
    </div>
    <div class="footer">
    </div>
    Ответ написан
    Комментировать
  • Как запретить увеличение масштаба, при клике на select на iphone устройствах?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Вот реальное решение, а не так называемое решение из упомянутого линка, где советуют user-scalable=no
    НИКОГДА не делайте user-scalable=no !!!!!
    # Mobile first
    input, textarea, select {
      font-size: 16px;
    }
    
    # Tablet upwards
    @media (min-width: 768px) {
      font-size: 14px;
    }


    ИБО:
    Телефон будет слегка увеличивать поля формы, если для текста установлено значение менее 16 пикселей. Я бы предложил настроить текст поля мобильной формы на 16 пикселей, а затем переопределять размер при просмотре с декстопных компьютеров.
    Ответ написан
    3 комментария
  • Как скопировать значение data attribute и вставить это значение в style="" этого же div'а?

    Stalker_RED
    @Stalker_RED
    const elements = document.querySelectorAll('div[data-atr]')
    elements.forEach(elem => elem.style = elem.dataset.atr);
    Ответ написан
    2 комментария
  • Как вывести подкатегории из текущей категории и 5 последних записей?

    igorbelikov
    @igorbelikov
    Fullstack Developer
    Возможно примерно так:
    // основные категории
    $categories = get_categories( array(
        'parent'  => 0
    ) );
    foreach ( $categories as $category ) {
        // подкатегории
        $sub_categories = get_categories( array(
            'parent'  => $category->term_id
        ) );
        foreach ( $sub_categories as $sub_category ) {
            // записи
            $posts = get_posts( array( 
                'category' => $sub_category->term_id,
                'posts_per_page' => 5,
                'orderby' => 'date',
            ) );
            foreach ( $posts as $post ) {
                // вывод поста и фото
            }
        }
    }
    Ответ написан
    Комментировать