Задать вопрос
  • Почему при клике на details не убирается open?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Убирается. А потом из-за клика добавляется обратно.

    Надо не тупо всем подряд false назначать, а только тем, по кому не было клика:

    document.body.addEventListener('click', e => {
      document.querySelectorAll('details[open]').forEach(n => {
        n.open = n === e.target.parentNode;
      });
    });
    Ответ написан
    Комментировать
  • Слайд с помощью мышы?

    hahenty
    @hahenty
    ('•')
    лень объяснять
    const slider = document.querySelectorAll('.gallery').forEach( slider => {
      let isDown = false;
    	let startX;
    	let scrollLeft;
    
    	slider.addEventListener('mousedown', e => {
    	  isDown = true;
    	  slider.classList.add('active');
    	  startX = e.pageX - slider.offsetLeft;
    	  scrollLeft = slider.scrollLeft;
    	});
    	slider.addEventListener('mouseleave', _ => {
    	  isDown = false;
    	  slider.classList.remove('active');
    	});
    	slider.addEventListener('mouseup', _ => {
    	  isDown = false;
    	  slider.classList.remove('active');
    	});
    	slider.addEventListener('mousemove', e => {
    	  if (!isDown) return;
    	  e.preventDefault();
    	  const x = e.pageX - slider.offsetLeft;
    	  const SCROLL_SPEED = 3;
    	  const walk = (x - startX) * SCROLL_SPEED;
    	  slider.scrollLeft = scrollLeft - walk;
    	});
    });
    Ответ написан
    Комментировать
  • Не отображается встроенное изображение в .svg на сайте?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    На MDN говорят, что это вопрос безопасности (там только про Gecko, но можно предположить, что везде так). Если SVG используется как картинка, то в ней уже нельзя подгрузить другие внешние ресурсы. Как вариант можно использовать тег embed вместо img, и все будет работать без таких ограничений.
    Ответ написан
    Комментировать
  • Почему появляется нечеткость при absolute + translate(-50%, -50%)?

    @cheeroque
    Потому что вы элемент высотой 427 пикселей сдвигаете на 50% от его высоты, то есть на 213.5 пикселей. Браузер эти полпикселя как умеет, так и рисует.
    Ответ написан
    Комментировать
  • Почему появляется нечеткость при absolute + translate(-50%, -50%)?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Тут этот баг обсуждался ранее.
    Как вариант можете сделать так:
    -webkit-transform: translate(-50.1%, -50.1%);
      transform: translate(-50.1%, -50.1%);
    Ответ написан
    Комментировать
  • Отправка копии емейл пользователю?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    нужно чтоб эти данные дублировались и пользователю на введенный им емейл в форме
    Так как какой-то "замечательный" человек решил что функция sendEmail будет внутри себя использовать емэйл заданный константой, а не передаваемый в параметрах, то в данном коде ваша задумка работать не будет.

    Можно переписать функцию sendEmail(), добавив в конец необязательный параметр емэйл, котрый по умолчанию пустой, и если он пустой - брать из константы, в противном случае использовать его значение как емэйл отправки.
    Ответ написан
    2 комментария
  • Срабатывание add_filter/add_action при определенном размере экрана?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    На js определяете размер экрана, если он удовлетворяет вашим условиям, то отправляете ajax запрос на бэкэнд и в обработчике выполняете ваши фильтры. При этом возникает трабл, что при ресайзе вам скорее всего придется перезагрузить или те части за которые отвечает фильтр

    Да еще один трабл, поскольку js загружается уже при отрисовке страницы, то вам таки придется скорее те части за которые отвечает фильтр выводить через ajax
    Ответ написан
    5 комментариев
  • Как добавить общую обёртку дочерним узлам?

    0xD34F
    @0xD34F Куратор тега JavaScript
    оборачивается не полностью

    Почему так: childNodes представляет собой динамическую коллекцию, т.е., при добавлении или удалении узлов она обновляется без каких-либо действий с вашей стороны. Поэтому, когда вы добавляете в wrapper нулевой узел, он тут же пропадает из item.childNodes, а у оставшихся узлов позиция уменьшается на единицу - тот, что был первым, становится нулевым, второй первым и так далее. Так что когда for...of переходит к следующему узлу, им оказывается не тот, что изначально имел индекс 1, а расположенный за ним. Бывший первый, а теперь нулевой, оказывается пропущен. Аналогичным образом будут пропущены и все последующие узлы, изначально имевшие нечётные индексы.

    Что тут можно сделать:

    Вариант раз - вместо перебора узлов всегда работать с тем, что имеет нулевой индекс:

    while (item.childNodes.length) {
      wrapper.appendChild(item.childNodes[0]);
    }

    Два - перебирать childNodes от конца к началу:

    for (let i = item.childNodes.length; i--;) {
      wrapper.prepend(item.childNodes[i]);
    }

    Три - перебирать не childNodes, а массив:

    for (const n of [...item.childNodes]) {
      wrapper.append(n);
    }

    А вообще, нет необходимости работать с каждым узлом индивидуально, метод append может принимать несколько параметров, так что переносим сразу всё:

    document.querySelectorAll('.www').forEach(n => {
      const wrapper = document.createElement('div');
      wrapper.classList.add('red');
      wrapper.append(...n.childNodes);
      n.append(wrapper);
    });

    Или, можно и вовсе узлы не трогать, если перезаписывать разметку:

    for (const n of document.getElementsByClassName('www')) {
      n.innerHTML = `<div class="red">${n.innerHTML}</div>`;
    }
    Ответ написан
    Комментировать
  • Как подтянуть в шаблон стили из админки?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Я только что перепроверил на голой теме, написаной на underscores - стили гутенберга подключаются на уровне ядра, лежат по такому пути /wp-includes/css/dist/block-library/style.min.css.

    Вот выдержка из документации:

    #Default block styles
    Core blocks include default structural styles. These are loaded in both the editor and the front end by default. An example of these styles is the CSS that powers the columns block. Without these rules, the block would result in a broken layout containing no columns at all.

    The block editor allows themes to opt-in to slightly more opinionated styles for the front end. An example of these styles is the default color bar to the left of blockquotes. If you’d like to use these opinionated styles in your theme, add theme support for wp-block-styles:
    add_theme_support( 'wp-block-styles' );
    https://developer.wordpress.org/block-editor/devel...

    Ищите у себя где отключено, возможно с помощью подобного кода в функциях:
    // remove Gutenberg styles
    function remove_gutenberg_styles() {
    	wp_dequeue_style( 'wp-block-library' );
    }
    add_action( 'wp_enqueue_scripts', 'remove_gutenberg_styles', 100 );
    Ответ написан
    1 комментарий
  • Как переписать код с Jquery в vanilla js?

    XanXanXan
    @XanXanXan
    document.ready

    document.addEventListener("DOMContentLoaded", ...

    document.getElementByClassName(".site")

    document.getElementsByClassName('site')[0] или document.querySelector('.site')
    Ответ написан
    Комментировать
  • Если на странице есть id то другому диву добавить класс?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    document.getElementById("tot-id") && document.querySelector("footer > div").classList.add("tot-class");


    Или подробнее
    if (document.getElementById("tot-id")) {
      document.querySelector("footer > div")
        .classList
        .add("tot-class");
    }
    Ответ написан
    Комментировать
  • Сделать главной страницу wp-signup.php?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    У вас заметно нестандартная задача, поэтому начну свой ответ с "попробуйте".

    Попробуйте в wp-config.php добавить следующие строки:
    define( 'WP_HOME', 'https://VashSite.ru/wp-signup.php' );
    define( 'WP_SITEURL', 'https://VashSite.ru/wp-signup.php' );

    Возможно, что только одну из них - тут надо будет экспериментировать.

    Также может потребоваться строка
    define( 'NOBLOGREDIRECT', 'https://VashSite.ru/wp-signup.php' );

    либо она же, но пустая
    define( 'NOBLOGREDIRECT', '' );
    а может быть эту строку, наоборот, надо будет удалить или закомментировать.

    UPD:
    В комментариях под этим ответом добавил предположение о 'NOBLOGREDIRECT'
    Ответ написан
    8 комментариев
  • Исправленный phpquery-onefile.php для php 8?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Попробуйте этот форк https://github.com/slaith/phpQuery
    проблема с serialize() и create_function() там решена
    но про совместимость с PHP8 нет данных
    Ответ написан
    1 комментарий
  • Открыть ссылку в новой вкладке?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вот массив параметров, которые принимает этот метод. Вам нужен $args['meta']['target'] = '_blank'

    $args = array(
    	'id'     => '',      // ID элемента меню. Обязательный. Строка. 
    	'title'  => '',      // Заголовок элемента меню. Обязательный. Строка. 
    	'parent' => '',      // ID родительского элемента меню. Строка. 
    	'href'   => '',      // Ссылка для этого элемента меню. Строка. 
    	'group'  => false,   // Является ли этот элемент группой. Логический. По умолчанию false
    	'meta'   => array(   // Массив дополнительных данных элемента. По умолчанию: пустой массив.
    		'html'     => '', // Произвольный HTMl код, который будет добавлен в конце оборачивающего LI тега элемента меню.
    		'class'    => '', // Атрибут тега 'class' 
    		'rel'      => '', // Атрибут тега 'rel' 
    		'lang'     => '', // Атрибут тега 'lang' 
    		'dir'      => '', // Атрибут тега 'dir' 
    		'onclick'  => '', // Атрибут тега 'onclick' 
    		'target'   => '', // Атрибут тега 'target' 
    		'title'    => '', // Атрибут тега 'title' 
    		'tabindex' => '', // Атрибут тега 'tabindex' 
    	),
    )
    Ответ написан
    Комментировать
  • Изменение цвета некоторых дивов на тот же что body.custom-background?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Вопрос - как?


    ... этот цвет применить еще к некоторым дивам в этой теме?


    например вот так

    add_action('wp_head','div_style');
    if(!function_exists('div_style')){function div_style(){?>
    <style id="div_style" type="text/css">
    	.div_style{background-color:#<?php echo get_theme_mod('background_color');?>;}
    </style>
    <?php }}
    
    ...............или...............
    
    add_action('get_footer','div_style');
    if(!function_exists('div_style')){function div_style(){?>
    <style id="div_style" type="text/css">
    	.div_style{background-color:#<?php echo get_theme_mod('background_color');?>;}
    </style>
    <?php }}


    разметка:

    61056a6bd397e579325361.jpeg
    Ответ написан
    Комментировать
  • Как убрать появление якоря # в адресной строке?

    kritskiy_a
    @kritskiy_a
    Frontend-developer
    Используя querySelector ты получаешь первый элемент, но тебе нужно получить все
    const links = document.querySelectorAll('li.no-href a')
    
    links.forEach(el => {
      el.addEventListener('click', (e)=> {
        e.preventDefault()
      })
    }})
    Ответ написан
    1 комментарий
  • Добавить в тег данные?

    cannibal_corpse
    @cannibal_corpse
    Верстальщик руками
    document.querySelector('.autoplay video').setAttribute('autoplay', ' ');


    Ну или

    const attributes = ['mute', 'loop', 'autoplay'];
    
    const video = document.querySelector('.autoplay video');
    
    attributes.forEach(attr => video.setAttribute(attr, ''));


    или

    const video = document.querySelector('.autoplay video');
    
    video.autoplay = true;
    video.loop = true;
    video.muted = true;
    Ответ написан
    Комментировать
  • Добавить/удалить class спустя 200px скрола?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Вешать событие на онскролл - плохая привычка и устаревшая практика. Для этого сегодня есть интерсекшн обсервер.
    Ответ написан
    Комментировать