Hello.
J'ouvre un nouveau sujet, qui est en lien avec celui-ci https://forum.alsacreations.com/topic-5-90530-1-Resolu-Effet-de-survol-pour-changer-le-curseur.html
La solution proposée fonctionne très bien, mais j'avais pas anticipé la quantité d'élément, du coup en terme de perf c'est vraiment pas terrible.
Si vous avez des suggestions pour améliorer ça.
Merci
PS: désolé pour le pavé
Modifié par _laurent (23 Jun 2023 - 14:51)
J'ouvre un nouveau sujet, qui est en lien avec celui-ci https://forum.alsacreations.com/topic-5-90530-1-Resolu-Effet-de-survol-pour-changer-le-curseur.html
La solution proposée fonctionne très bien, mais j'avais pas anticipé la quantité d'élément, du coup en terme de perf c'est vraiment pas terrible.
Si vous avez des suggestions pour améliorer ça.
const mouseContainer = document.getElementById('mouse_container');
const mouseContent = document.querySelector('.mouse_content')
const navElement = document.querySelector('.navbar')
const chatElement = document.querySelector('.chat-window')
const categoryElement = document.querySelectorAll('.category-block')
const homeElement = document.querySelectorAll('.block-home')
const lastNewsElement = document.querySelector('.blockNewsActivity .lastNews h4');
const lastActivityElement = document.querySelector('.blockNewsActivity .lastActivity h4');
const lastActivityLinkElement = document.querySelectorAll('.blockNewsActivity .lastActivity .list-group a');
const toTopElement = document.getElementById('toTop')
const buttonElement = document.querySelectorAll('.btn')
const buttonTagElement = document.querySelectorAll('button')
const inputElement = document.querySelectorAll('input')
const textareaElement = document.querySelectorAll('textarea')
const selectElement = document.querySelectorAll('.select-selected')
const customSelectElement = document.querySelectorAll('customselect')
const linkElement = document.querySelectorAll('a')
const zoomOutElement = [
navElement,
chatElement,
toTopElement
]
const buttonsElement = [
buttonElement,
buttonTagElement
]
const selectsElement = [
selectElement,
customSelectElement
]
const updateCursorPosition = (event) => {
mouseContainer.style.top = `${event.clientY}px`;
mouseContainer.style.left = `${event.clientX}px`;
}
function mouseHoverFunction(element = null, removeClass = null, addClass = null, content = null) {
element.addEventListener('mouseenter', () => {
mouseContainer.classList.remove(removeClass)
mouseContainer.classList.add(addClass)
mouseContent.innerHTML = content ? content : ''
})
element.addEventListener('mouseleave', () => {
mouseContainer.classList.remove(addClass)
mouseContent.innerHTML = ''
})
}
window.addEventListener('mousemove', (event) => {
updateCursorPosition(event)
categoryElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'zoomOut', 'isHovering', el.querySelector('h3').innerText)
})
homeElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'zoomOut', 'isHovering', el.querySelector('h3').innerText)
})
if (lastNewsElement !== null) mouseHoverFunction(lastNewsElement, 'zoomOut', 'isHovering', lastNewsElement.innerText)
if (lastActivityElement !== null) mouseHoverFunction(lastActivityElement, 'zoomOut', 'isHovering', lastActivityElement.innerText)
zoomOutElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'isHovering', 'zoomOut')
})
lastActivityLinkElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'isHovering', 'zoomOut')
})
buttonsElement.forEach(btnEl => {
btnEl.forEach(el => {
if (el !== null) {
if (el.querySelector('.fa-times')) mouseHoverFunction(el, 'zoomOut', 'svgHovering')
else mouseHoverFunction(el, 'isHovering', 'zoomOut')
}
})
})
inputElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'isHovering', 'zoomOut')
})
textareaElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'isHovering', 'zoomOut')
})
selectsElement.forEach(sEle => {
sEle.forEach(el => {
if (el !== null) {
if (el.querySelector('.fa-times')) mouseHoverFunction(el, 'zoomOut', 'svgHovering')
else mouseHoverFunction(el, 'isHovering', 'zoomOut')
}
})
})
linkElement.forEach(el => {
if (el !== null) mouseHoverFunction(el, 'isHovering', 'zoomOut')
})
})
Merci
PS: désolé pour le pavé
Modifié par _laurent (23 Jun 2023 - 14:51)