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');

