/**
* تأثيرات المشهد الرياضي لقالب جنة
* AlMashhad Sports Effects for Jannah Theme
*/
document.addEventListener('DOMContentLoaded', function() {
// ===============================================
// 1. إضافة تأثير الجسيمات المضيئة للخلفية
// ===============================================
function createParticles() {
const particlesContainer = document.createElement('div');
particlesContainer.id = 'particles-background';
particlesContainer.style.cssText = `
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 0;
overflow: hidden;
`;
document.body.appendChild(particlesContainer);
// إنشاء 50 جسيم مضيء
for (let i = 0; i < 50; i++) {
const particle = document.createElement('div');
particle.className = 'particle';
particle.style.cssText = `
position: absolute;
width: ${Math.random() * 4 + 1}px;
height: ${Math.random() * 4 + 1}px;
background: radial-gradient(circle, #00FF87 0%, transparent 70%);
border-radius: 50%;
left: ${Math.random() * 100}%;
top: ${Math.random() * 100}%;
opacity: ${Math.random() * 0.5 + 0.2};
animation: float ${Math.random() * 20 + 10}s infinite ease-in-out;
`;
particlesContainer.appendChild(particle);
}
}
// تفعيل الجسيمات
createParticles();
// ===============================================
// 2. إضافة تأثير التوهج على العناوين عند التمرير
// ===============================================
const headings = document.querySelectorAll('h1, h2, h3, .post-title, .entry-title');
headings.forEach(heading => {
heading.addEventListener('mouseenter', function() {
this.style.textShadow = '0 0 20px rgba(0, 255, 135, 0.8)';
this.style.color = '#00FF87';
});
heading.addEventListener('mouseleave', function() {
this.style.textShadow = '0 2px 4px rgba(0, 0, 0, 0.3)';
this.style.color = '#FFFFFF';
});
});
// ===============================================
// 3. تأثير الظهور التدريجي للعناصر عند التمرير
// ===============================================
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('fade-in-visible');
entry.target.style.animationDelay = Math.random() * 0.3 + 's';
}
});
}, observerOptions);
// مراقبة جميع المقالات والويدجات
document.querySelectorAll('.post, article, .widget, .tie-post').forEach(element => {
element.classList.add('fade-in-element');
observer.observe(element);
});
// ===============================================
// 4. تأثير موجة على الأزرار عند النقر
// ===============================================
document.querySelectorAll('button, .button, .tie-button, input[type="submit"]').forEach(button => {
button.addEventListener('click', function(e) {
const ripple = document.createElement('span');
const rect = this.getBoundingClientRect();
const size = Math.max(rect.width, rect.height);
const x = e.clientX - rect.left - size / 2;
const y = e.clientY - rect.top - size / 2;
ripple.style.cssText = `
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.6);
width: ${size}px;
height: ${size}px;
top: ${y}px;
left: ${x}px;
animation: rippleEffect 0.6s ease-out;
pointer-events: none;
`;
this.style.position = 'relative';
this.style.overflow = 'hidden';
this.appendChild(ripple);
setTimeout(() => ripple.remove(), 600);
});
});
// ===============================================
// 5. شريط التقدم في القراءة
// ===============================================
function createReadingProgress() {
const progressBar = document.createElement('div');
progressBar.id = 'reading-progress';
progressBar.style.cssText = `
position: fixed;
top: 0;
left: 0;
width: 0%;
height: 4px;
background: linear-gradient(90deg, #00FF87 0%, #FFD700 100%);
z-index: 9999;
transition: width 0.2s ease;
box-shadow: 0 2px 10px rgba(0, 255, 135, 0.5);
`;
document.body.appendChild(progressBar);
window.addEventListener('scroll', () => {
const winScroll = document.body.scrollTop || document.documentElement.scrollTop;
const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
const scrolled = (winScroll / height) * 100;
progressBar.style.width = scrolled + '%';
});
}
// تفعيل شريط التقدم في صفحات المقالات
if (document.querySelector('.single-post, .type-post')) {
createReadingProgress();
}
// ===============================================
// 6. تحسين القوائم المنسدلة
// ===============================================
const menuItems = document.querySelectorAll('.main-menu li, .nav-menu li');
menuItems.forEach(item => {
const submenu = item.querySelector('.sub-menu, .mega-menu');
if (submenu) {
item.addEventListener('mouseenter', () => {
submenu.style.animation = 'slideDown 0.3s ease forwards';
});
item.addEventListener('mouseleave', () => {
submenu.style.animation = 'slideUp 0.3s ease forwards';
});
}
});
// ===============================================
// 7. تأثير الكتابة للعناوين
// ===============================================
function typeWriter(element, text, speed = 50) {
let i = 0;
element.textContent = '';
function type() {
if (i < text.length) {
element.textContent += text.charAt(i);
i++;
setTimeout(type, speed);
}
}
type();
}
// تطبيق على العنوان الرئيسي للموقع
const siteTitle = document.querySelector('.logo-text, .site-title');
if (siteTitle && siteTitle.textContent) {
const originalText = siteTitle.textContent;
siteTitle.textContent = '';
setTimeout(() => typeWriter(siteTitle, originalText, 100), 500);
}
// ===============================================
// 8. تأثير التمرير السلس
// ===============================================
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
const target = document.querySelector(this.getAttribute('href'));
if (target) {
e.preventDefault();
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// ===============================================
// 9. إضافة فئات CSS للأنيميشن
// ===============================================
const style = document.createElement('style');
style.textContent = `
@keyframes float {
0%, 100% {
transform: translateY(0) translateX(0);
}
25% {
transform: translateY(-20px) translateX(10px);
}
50% {
transform: translateY(10px) translateX(-10px);
}
75% {
transform: translateY(-10px) translateX(5px);
}
}
@keyframes rippleEffect {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(4);
opacity: 0;
}
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideUp {
from {
opacity: 1;
transform: translateY(0);
}
to {
opacity: 0;
transform: translateY(-10px);
}
}
.fade-in-element {
opacity: 0;
transform: translateY(30px);
transition: all 0.6s ease;
}
.fade-in-visible {
opacity: 1;
transform: translateY(0);
}
/* تأثير التوهج للنص */
@keyframes textGlow {
0%, 100% {
text-shadow: 0 0 10px rgba(0, 255, 135, 0.5);
}
50% {
text-shadow: 0 0 20px rgba(0, 255, 135, 0.8),
0 0 30px rgba(0, 255, 135, 0.6);
}
}
.glow-text {
animation: textGlow 2s ease-in-out infinite;
}
/* تحسين المؤشر */
* {
cursor: url('data:image/svg+xml;utf8, '), auto;
}
a, button, input[type="submit"] {
cursor: url('data:image/svg+xml;utf8, '), pointer;
}
`;
document.head.appendChild(style);
// ===============================================
// 10. تأثير الخلفية المتحركة للهيدر
// ===============================================
const header = document.querySelector('#main-nav, .main-nav, .header');
if (header) {
let lastScrollTop = 0;
window.addEventListener('scroll', () => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (scrollTop > lastScrollTop) {
// التمرير للأسفل
header.style.transform = 'translateY(-100%)';
} else {
// التمرير للأعلى
header.style.transform = 'translateY(0)';
// تأثير الظل عند التمرير
if (scrollTop > 100) {
header.style.boxShadow = '0 10px 40px rgba(0, 255, 135, 0.4)';
} else {
header.style.boxShadow = '0 5px 30px rgba(0, 255, 135, 0.3)';
}
}
lastScrollTop = scrollTop;
}, { passive: true });
}
// ===============================================
// 11. عداد الأرقام المتحرك
// ===============================================
function animateCounter(element, target, duration = 2000) {
const start = 0;
const increment = target / (duration / 16);
let current = start;
const timer = setInterval(() => {
current += increment;
if (current >= target) {
element.textContent = target.toLocaleString();
clearInterval(timer);
} else {
element.textContent = Math.floor(current).toLocaleString();
}
}, 16);
}
// تطبيق على أرقام الإحصائيات
document.querySelectorAll('.stats-number, .count, .tie-view-count').forEach(element => {
const target = parseInt(element.textContent.replace(/,/g, ''));
if (!isNaN(target)) {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
animateCounter(element, target);
observer.unobserve(element);
}
});
});
observer.observe(element);
}
});
// ===============================================
// 12. تأثير الليزر على الحدود
// ===============================================
function addLaserBorder(element) {
const laser = document.createElement('div');
laser.style.cssText = `
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
overflow: hidden;
border-radius: inherit;
`;
const beam = document.createElement('div');
beam.style.cssText = `
position: absolute;
top: -2px;
left: -100%;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent, #00FF87, transparent);
animation: laserBeam 3s linear infinite;
`;
laser.appendChild(beam);
element.style.position = 'relative';
element.appendChild(laser);
}
// تطبيق على البطاقات المميزة
document.querySelectorAll('.featured-post, .sticky').forEach(addLaserBorder);
// إضافة CSS للأنيميشن
const laserStyle = document.createElement('style');
laserStyle.textContent = `
@keyframes laserBeam {
0% { left: -100%; }
100% { left: 100%; }
}
`;
document.head.appendChild(laserStyle);
console.log('✨ تم تحميل تأثيرات المشهد الرياضي بنجاح!');
});
// ===============================================
// تصدير الوظائف للاستخدام الخارجي
// ===============================================
window.AlMashhadEffects = {
version: '1.0.0',
init: function() {
console.log('🚀 AlMashhad Sports Effects Initialized');
}
};
ياسر زابيري
Dans une soirée magique qui restera gravée dans l’histoire du football arabe, le Marocain Yassir Zabiri a inscrit son nom en lettres d’or lors de la finale de la Coupe du Monde U-20, après avoir mené les Lionceaux de l’Atlas vers un exploit sans précédent face à l’Argentine, champion à six reprises de la compétition. Le match qui s’est déroulé dans la nuit du lundi 20 octobre 2025 au stade Nacional Julio Martínez Prádanos à Santiago du Chili, a été témoin d’une performance exceptionnelle de la star du Famalicão portugais.
Zabiri a ouvert le score à la 12ème minute avec un coup franc direct spectaculaire qui s’est logé dans l’angle supériur du gardien argentin Santino Barbi, resté impuissant devant une frappe qualifiée de parfaite par les médias internationaux. Le jeune joueur de 20 ans ne s’est pas contenté d’un seul but, revenant à la charge pour ajouter le deuxième à la 29ème minute, consolidant l’avance de son équipe et annonçant la naissance d’une nouvelle étoile mondiale.
Cet exploit historique fait du Maroc la première sélection arabe et la deuxième africaine à atteindre la finale du tournoi depuis le Ghana en 2009. Zabiri, qui avait déjà inscrit des buts décisifs contre l’Espagne et la Corée du Sud lors du parcours marocain dans le tournoi, a prouvé qu’il est l’homme des grands moments. La sélection argentine, entrée dans le match avec un bilan parfait de six victoires consécutives sans défaite, s’est retrouvée impuissante face à la détermination des jeunes Marocains et au talent de leur buteur.
Pensez-vous que Yassir Zabiri sera la prochaine grande star marocaine du football européen? Partagez votre avis dans les commentaires!
Suivez-Nous
Analyste sportif et journaliste expérimenté chez Info Sport, il possède 12 ans d'expérience en analyse technique et statistique des matchs. Il est spécialisé dans l'analyse des performances et l'utilisation des techniques modernes d'analyse sportive. Domaines d'expertise : Analyse technique des matchs Statistiques sportives Évaluation des performances des joueurs Analyse tactique moderne Il fournit des analyses approfondies, étayées par des statistiques et des chiffres, en mettant l'accent sur les aspects techniques et tactiques. Il a contribué de manière remarquable au développement du contenu analytique du site web et à la diffusion d'avis professionnels.
More »