<div class="match-page">
<div class="match-title">
⚽ MATCHS DU JOUR EN LIVE - COUPE DU MONDE 2026
</div>
<div class="match-subtitle" id="today-date"></div>
<div id="match-container"></div>
</div>
<style>
body{
font-family:Arial;
background:#0f0f0f;
color:#fff;
margin:0;
}
.match-page{
max-width:900px;
margin:auto;
padding:10px;
}
.match-title{
text-align:center;
background:#111;
padding:12px;
border-radius:10px;
font-weight:bold;
margin-bottom:6px;
}
.match-subtitle{
text-align:center;
font-size:13px;
opacity:0.8;
margin-bottom:12px;
}
.AY_Match{
background:#111;
margin:10px 0;
padding:12px;
border-radius:12px;
border:1px solid #222;
}
.AY_Inner{
display:flex;
justify-content:space-between;
align-items:center;
}
.MT_Team{
width:30%;
text-align:center;
}
.MT_Team img{
width:50px;
height:35px;
border-radius:4px;
}
.MT_Data{
width:40%;
text-align:center;
}
.score{
font-size:24px;
font-weight:bold;
color:#00ff99;
}
.status{
padding:6px 12px;
border-radius:20px;
display:inline-block;
font-weight:bold;
margin-bottom:6px;
}
.upcoming{background:#1976d2;animation:pulse 1.2s infinite;}
.live{background:red;animation:blink 1s infinite;}
.finished{background:#444;}
.ht{background:#ff9800;}
@keyframes blink{50%{opacity:0.4}}
@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.06)}100%{transform:scale(1)}}
.minute{
font-size:12px;
opacity:0.8;
margin-top:3px;
}
.action-btn{
display:inline-block;
margin-top:8px;
padding:7px 14px;
border-radius:20px;
color:#fff;
text-decoration:none;
font-size:12px;
background:#2196f3;
}
.action-btn.live{
background:#ff9800;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", () => {
const siteBase = "https://www.footballmavie.pro";
/* =========================
DATE DU JOUR
========================= */
function setTodayDate(){
const d = new Date();
const options = { weekday:'long', year:'numeric', month:'long', day:'numeric' };
document.getElementById("today-date").innerText =
"📅 " + d.toLocaleDateString("fr-FR", options);
}
/* =========================
MATCHS
========================= */
const matchs = [
{
equipe1:"Afrique du Sud",
equipe2:"Canada",
logo1:"https://flagcdn.com/w160/za.png",
logo2:"https://flagcdn.com/w160/ca.png",
score1:0,
score2:0,
start:"2026-06-28T19:00:00",
addedTime:5,
kickoffDelay:0,
article:"afrique-du-sud-vs-canada-2026"
},
{
equipe1:"Brésil",
equipe2:"Japon",
logo1:"https://flagcdn.com/w160/br.png",
logo2:"https://flagcdn.com/w160/jp.png",
score1:0,
score2:0,
start:"2026-06-29T13:00:00",
addedTime:5,
kickoffDelay:0,
article:"bresil-vs-japon-2026"
},
{
equipe1:"Allemagne",
equipe2:"Paraguay",
logo1:"https://flagcdn.com/w160/de.png",
logo2:"https://flagcdn.com/w160/py.png",
score1:0,
score2:0,
start:"2026-06-29T16:30:00",
addedTime:5,
kickoffDelay:0,
article:"allemagne-vs-paraguay-2026"
},
{
equipe1:"Pays-Bas",
equipe2:"Maroc",
logo1:"https://flagcdn.com/w160/nl.png",
logo2:"https://flagcdn.com/w160/ma.png",
score1:0,
score2:0,
start:"2026-06-29T21:00:00",
addedTime:5,
kickoffDelay:0,
article:"pays-bas-vs-maroc-2026"
},
{
equipe1:"Côte d’Ivoire",
equipe2:"Norvège",
logo1:"https://flagcdn.com/w160/ci.png",
logo2:"https://flagcdn.com/w160/no.png",
score1:0,
score2:0,
start:"2026-06-30T13:00:00",
addedTime:5,
kickoffDelay:0,
article:"cote-ivoire-vs-norvege-2026"
},
{
equipe1:"France",
equipe2:"Suède",
logo1:"https://flagcdn.com/w160/fr.png",
logo2:"https://flagcdn.com/w160/se.png",
score1:0,
score2:0,
start:"2026-06-30T17:00:00",
addedTime:5,
kickoffDelay:0,
article:"france-vs-suede-2026"
},
{
equipe1:"Mexique",
equipe2:"Équateur",
logo1:"https://flagcdn.com/w160/mx.png",
logo2:"https://flagcdn.com/w160/ec.png",
score1:0,
score2:0,
start:"2026-06-30T21:00:00",
addedTime:5,
kickoffDelay:0,
article:"mexique-vs-equateur-2026"
},
{
equipe1:"Angleterre",
equipe2:"RD Congo",
logo1:"https://flagcdn.com/w160/gb.png",
logo2:"https://flagcdn.com/w160/cd.png",
score1:0,
score2:0,
start:"2026-07-01T12:00:00",
addedTime:5,
kickoffDelay:0,
article:"angleterre-vs-rd-congo-2026"
},
{
equipe1:"Belgique",
equipe2:"Sénégal",
logo1:"https://flagcdn.com/w160/be.png",
logo2:"https://flagcdn.com/w160/sn.png",
score1:0,
score2:0,
start:"2026-07-01T16:00:00",
addedTime:5,
kickoffDelay:0,
article:"belgique-vs-senegal-2026"
},
{
equipe1:"États-Unis",
equipe2:"Bosnie-Herzégovine",
logo1:"https://flagcdn.com/w160/us.png",
logo2:"https://flagcdn.com/w160/ba.png",
score1:0,
score2:0,
start:"2026-07-01T20:00:00",
addedTime:5,
kickoffDelay:0,
article:"usa-vs-bosnie-2026"
},
{
equipe1:"Espagne",
equipe2:"Autriche",
logo1:"https://flagcdn.com/w160/es.png",
logo2:"https://flagcdn.com/w160/at.png",
score1:0,
score2:0,
start:"2026-07-02T15:00:00",
addedTime:5,
kickoffDelay:0,
article:"espagne-vs-autriche-2026"
},
{
equipe1:"Portugal",
equipe2:"Croatie",
logo1:"https://flagcdn.com/w160/pt.png",
logo2:"https://flagcdn.com/w160/hr.png",
score1:0,
score2:0,
start:"2026-07-02T19:00:00",
addedTime:5,
kickoffDelay:0,
article:"portugal-vs-croatie-2026"
},
{
equipe1:"Suisse",
equipe2:"Algérie",
logo1:"https://flagcdn.com/w160/ch.png",
logo2:"https://flagcdn.com/w160/dz.png",
score1:0,
score2:0,
start:"2026-07-02T23:00:00",
addedTime:5,
kickoffDelay:0,
article:"suisse-vs-algerie-2026"
},
{
equipe1:"Australie",
equipe2:"Égypte",
logo1:"https://flagcdn.com/w160/au.png",
logo2:"https://flagcdn.com/w160/eg.png",
score1:0,
score2:0,
start:"2026-07-03T14:00:00",
addedTime:5,
kickoffDelay:0,
article:"australie-vs-egypte-2026"
},
{
equipe1:"Argentine",
equipe2:"Cap-Vert",
logo1:"https://flagcdn.com/w160/ar.png",
logo2:"https://flagcdn.com/w160/cv.png",
score1:0,
score2:0,
start:"2026-07-03T18:00:00",
addedTime:5,
kickoffDelay:0,
article:"argentine-vs-cap-vert-2026"
},
{
equipe1:"Colombie",
equipe2:"Ghana",
logo1:"https://flagcdn.com/w160/co.png",
logo2:"https://flagcdn.com/w160/gh.png",
score1:0,
score2:0,
start:"2026-07-03T21:30:00",
addedTime:5,
kickoffDelay:0,
article:"colombie-vs-ghana-2026"
},
];
/* =========================
STATUS MATCH
========================= */
function getStatus(m){
const now = new Date();
const start = new Date(m.start);
const realStart = new Date(start.getTime() + (m.kickoffDelay || 0) * 60000);
const end = new Date(realStart.getTime() + (90 + (m.addedTime || 0)) * 60000);
const diffStart = realStart - now;
const diffEnd = end - now;
if(diffStart > 0){
let min = Math.floor(diffStart / 60000);
return {
text:`⚡ COMMENCE DANS ${min > 60 ? Math.floor(min/60)+"h "+(min%60)+"min" : min+"min"}`,
cls:"upcoming"
};
}
if(diffStart <= 0 && diffEnd > 0){
let minute = Math.floor((now - realStart) / 60000);
let display = minute >= 90 ? `90+${minute-90}’` : `${minute}’`;
if(minute >= 45 && minute <= 50){
return {text:"⏸ MI-TEMPS",cls:"ht",minute:"45’"};
}
return {text:"🔴 LIVE 🛑",cls:"live",minute:display};
}
return {text:"⚫ TERMINÉ ✔",cls:"finished"};
}
/* =========================
RENDER
========================= */
function render(){
const c = document.getElementById("match-container");
c.innerHTML = "";
matchs.forEach(m => {
let status = getStatus(m);
let time = new Date(m.start).toLocaleTimeString().slice(0,5);
let link = (status.cls === "upcoming")
? siteBase
: siteBase + "/articles/" + m.article + ".html";
let btnText = (status.cls === "live")
? "🔴 LIVE 🛑"
: (status.cls === "ht")
? "🔴 LIVE 🛑"
: "📄 DÉTAILS";
c.innerHTML += `
<div class="AY_Match">
<div class="AY_Inner">
<div class="MT_Team">
<img src="${m.logo1}">
<div>${m.equipe1}</div>
</div>
<div class="MT_Data">
<div class="status ${status.cls}">
${status.text}
</div>
${status.minute ? `<div class="minute">${status.minute}</div>` : ""}
<div class="score">${m.score1} - ${m.score2}</div>
<div style="font-size:12px;opacity:0.8;margin-top:4px;">
🕒 ${time}
</div>
<a class="action-btn ${status.cls === 'live' ? 'live' : ''}" href="${link}">
${btnText}
</a>
</div>
<div class="MT_Team">
<img src="${m.logo2}">
<div>${m.equipe2}</div>
</div>
</div>
</div>`;
});
}
setTodayDate();
render();
setInterval(render, 10000);
});
</script>

Commentaires
Enregistrer un commentaire