JS Funkcja sprawdzajaca czy obiekt został zescrollowany poza ekran

Ta funkcja sprawdzi, czy dany element znajduje się powyżej górnej granicy ekranu podczas przewijania strony, i w zależności od tego doda lub usunie klasę zescrollowany. Aby zastosować tę funkcję do konkretnego elementu, wystarczy wywołać czyZescrollowany(document.querySelector('.twojaKlasa')), zastępując .twojaKlasa selektorem CSS dla elementu, który chcesz monitorować.

W tym podejściu, zamiast sprawdzać bieżącą pozycję elementu względem widoku, funkcja porównuje pozycję przewijania okna (window.pageYOffset) z początkową pozycją górnego krawędzi elementu. Jeśli pozycja przewijania przekroczy tę początkową pozycję, element jest traktowany jako „zescrollowany”, co odpowiada Twoim wymaganiom dotyczącym zachowania funkcji niezależnie od zmian w stylu CSS elementu po jego „zescrollowaniu”.

function czyZescrollowany(element) {
  let timeout = null; // Zmienna do przechowywania identyfikatora opóźnienia
  // Zapisanie początkowej pozycji Y elementu
  const initialTopPosition = element.getBoundingClientRect().top + window.pageYOffset;

  const checkPositionAndToggleClass = () => {
    // Aktualna pozycja przewijania
    const currentScrollPosition = window.pageYOffset;

    // Sprawdzenie, czy element jest powyżej górnej granicy ekranu względem jego początkowej pozycji
    if(currentScrollPosition > initialTopPosition) {
      // Nadanie klasy tylko, jeśli element jest "zescrollowany" i nie ma jeszcze klasy 'zescrollowany'
      if (!element.classList.contains('zescrollowany')) {
        element.classList.add('zescrollowany');
      }
    } else {
      // Usunięcie klasy, jeśli element jest poniżej górnej granicy ekranu i ma klasę 'zescrollowany'
      if (element.classList.contains('zescrollowany')) {
        element.classList.remove('zescrollowany');
      }
    }
  };

  const debounceCheckPosition = () => {
    // Czyszczenie poprzedniego opóźnienia, jeśli istnieje
    if (timeout !== null) {
      clearTimeout(timeout);
    }
    // Ustawienie opóźnienia dla funkcji sprawdzającej pozycję
    timeout = setTimeout(checkPositionAndToggleClass, 100); // Opóźnienie 100ms
  };

  // Nasłuchiwanie przewijania okna i uruchomienie funkcji z opóźnieniem
  window.addEventListener('scroll', debounceCheckPosition);
  
  // Wywołanie funkcji na starcie, aby od razu ustawić poprawny stan klasy
  debounceCheckPosition();
}

// Użycie funkcji z konkretnym elementem, np. document.querySelector('.jakisElement')
// czyZescrollowany(document.querySelector('.jakisElement'));

FSE menu mobile skryptozakładka

Jako że w FSE menu mobilne gdy traci foxus zamyka się to trudno się z nim pracuje. Nacienięcie na konsole powoduje zwinięcie się menu.
Poniższa wtyczka na hama dodaje klasy otwarcia menu i podmenu co ułatwia robotę.

javascript: (() => {
     document.getElementById('modal-1').classList.add("is-menu-open");
     document.getElementsByClassName('wp-block-navigation-submenu__toggle')[1].setAttribute("aria-expanded", "true");
})();

Menu FSE mobile animowany zjazd wyjazd

Domyślnie zamknięte manu ma display none, zmieniamy mu klasę na display flax tak jak otwarte i nadajemu mu ujemny „top” o jego wysokość , aby schować je nad krawędzią obrazu.
Ustalamy transition dla top.

    #modal-1 {

        transition:top 0.4s;
        top: -277px;/* wysokość menu */
        display: flex;
    }   


Wszystko co pozostaje to gdy jest otwarte i dostaje klase is-menu-open zmieniamy top na 0;

   #modal-1.is-menu-open{
        top: 0px;
   }

RWD – śćiąga

Telefony:

@media (max-width:767px){}

Nagłówki

h1 {font-size:[25-30px];}

Akapity

p {font-size:[16-20px];}

Sekcje

section {padding:[20-40px];}

Anti cache wp

Czasem jest kłopot z odświeżaniem z wyczyszczeniem cache szczególnie na telefonach.
Aby zapobiec cachowaniu się skryptów i style w functions.php należy dodać do wywołań losowy parametr GET do adresu.
Tak przy każdym odświeżeniu przeglądarka widzi inny url i przeładowuje te pliki od nowa.

function custom_theme_features()  {

	// Add theme support for custom CSS in the TinyMCE visual editor
	add_editor_style();
}
add_action( 'after_setup_theme', 'custom_theme_features' );




function enqueue_custom_styles_and_scripts() {
    
    $random_parameter = rand(5, 99999); /* <--- randomowa liczba */
    
    wp_enqueue_style('custom-style', get_template_directory_uri() . '/style.css?'.$random_parameter); /* <--- tu dodana jako argument GET */
    wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/skrypty.js?'.$random_parameter); /* <--- tu dodana jako argument GET */
    wp_enqueue_script('gsap', 'https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js', array(), '1.0', true);
    wp_enqueue_script('scrolltoplugin', 'https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollToPlugin.min.js', array(), '1.0', true);
}
add_action('wp_enqueue_scripts', 'enqueue_custom_styles_and_scripts');