Upload files to "/"
This commit is contained in:
commit
4ce3ef223e
4 changed files with 432 additions and 0 deletions
23
home.html
Normal file
23
home.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portfolio L. Delforge</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<!-- Optional: Use a Mass Effect-like font from Google Fonts or upload your own -->
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Content -->
|
||||
<div class="mefx-container">
|
||||
<h1 class="mefx-title">Portfolio L. Delforge</h1>
|
||||
<div class="mefx-button-group">
|
||||
<a href="projets/index.html" class="mefx-btn">Projets</a>
|
||||
<a href="contact/index.html" class="mefx-btn">Contact</a>
|
||||
<a href="documentations/index.html" class="mefx-btn">Documentation</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
81
index.html
Normal file
81
index.html
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Projets</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Call JS -->
|
||||
<script src="script.js"></script>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="top-nav">
|
||||
<a href="home.html">Acceuil</a>
|
||||
<a href="contact/index.html">Contact</a>
|
||||
<a href="documentation/index.html">Documentation</a>
|
||||
</nav>
|
||||
|
||||
<!-- Title -->
|
||||
<div class="page-title" style="text-align: center;"> Projets </div>
|
||||
|
||||
|
||||
<!-- Tabs and Search Bar -->
|
||||
<div class="tabs-search-bar">
|
||||
<div class="tabs">
|
||||
<button class="tab active">Linux</button>
|
||||
<button class="tab">Windows</button>
|
||||
</div>
|
||||
<input type="text" class="search-bar" placeholder="Rechercher">
|
||||
</div>
|
||||
|
||||
<!-- Content Area -->
|
||||
<div class="page-container">
|
||||
|
||||
<div class="tab-content">
|
||||
<!-- Contenu Linux -->
|
||||
<div class="tab-panel active" id="linux-panel">
|
||||
<div class="section-title">Serveur Linux</div>
|
||||
<div class="subsection">
|
||||
<div class="subsection-title">Déploiement & maintenance</div>
|
||||
<ul class="checklist">
|
||||
<li><label><input type="checkbox"> GLPI</label></li>
|
||||
<li><label><input type="checkbox"> <a href="#">Docker</a></label></li>
|
||||
<li><label><input type="checkbox"> nginx proxy manager</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="subsection-title">Optimisation</div>
|
||||
<ul class="checklist">
|
||||
<li><label><input type="checkbox"> IPtable</label></li>
|
||||
<li><label><input type="checkbox"> HA proxy</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Contenu Windows -->
|
||||
<div class="tab-panel" id="windows-panel">
|
||||
<div class="section-title">Serveur Windows</div>
|
||||
<div class="subsection">
|
||||
<div class="subsection-title">Déploiement & maintenance</div>
|
||||
<ul class="checklist">
|
||||
<li><label><input type="checkbox"> Active Directory</label></li>
|
||||
<li><label><input type="checkbox"> GPO</label></li>
|
||||
<li><label><input type="checkbox"> WSUS</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="subsection-title">Optimisation</div>
|
||||
<ul class="checklist">
|
||||
<li><label><input type="checkbox"> PowerShell Scripts</label></li>
|
||||
<li><label><input type="checkbox"> Windows Defender</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
57
script.js
Normal file
57
script.js
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const tabs = document.querySelectorAll('.tab');
|
||||
const panels = document.querySelectorAll('.tab-panel');
|
||||
const searchBar = document.querySelector('.search-bar');
|
||||
|
||||
// Fonction pour retirer le surlignage de tous les items d'un panel
|
||||
function clearHighlights(panel) {
|
||||
panel.querySelectorAll('.checklist li').forEach(li => {
|
||||
li.classList.remove('highlight');
|
||||
});
|
||||
}
|
||||
|
||||
// Gestion des onglets
|
||||
tabs.forEach((tab, idx) => {
|
||||
tab.addEventListener('click', function() {
|
||||
tabs.forEach(t => t.classList.remove('active'));
|
||||
this.classList.add('active');
|
||||
panels.forEach((panel, pIdx) => {
|
||||
if (idx === pIdx) {
|
||||
panel.classList.add('active');
|
||||
clearHighlights(panel);
|
||||
} else {
|
||||
panel.classList.remove('active');
|
||||
}
|
||||
});
|
||||
// Réinitialise la recherche lors du changement d'onglet
|
||||
searchBar.value = '';
|
||||
});
|
||||
});
|
||||
|
||||
// Recherche avec surlignage et switch automatique d'onglet si besoin
|
||||
searchBar.addEventListener('input', function() {
|
||||
const query = this.value.toLowerCase();
|
||||
let foundInCurrent = false;
|
||||
let foundInOther = -1;
|
||||
|
||||
panels.forEach((panel, idx) => {
|
||||
let found = false;
|
||||
panel.querySelectorAll('.checklist li').forEach(li => {
|
||||
const text = li.textContent.toLowerCase();
|
||||
if (query && text.includes(query)) {
|
||||
li.classList.add('highlight');
|
||||
found = true;
|
||||
} else {
|
||||
li.classList.remove('highlight');
|
||||
}
|
||||
});
|
||||
if (found && panel.classList.contains('active')) foundInCurrent = true;
|
||||
if (found && !panel.classList.contains('active') && foundInOther === -1) foundInOther = idx;
|
||||
});
|
||||
|
||||
// Si pas trouvé dans l'onglet actif mais trouvé ailleurs, switch d'onglet
|
||||
if (!foundInCurrent && foundInOther !== -1) {
|
||||
tabs[foundInOther].click();
|
||||
}
|
||||
});
|
||||
});
|
||||
271
styles.css
Normal file
271
styles.css
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
/* 1. Général et fond */
|
||||
body {
|
||||
margin: 0;
|
||||
background: linear-gradient(135deg, #0d1120 0%, #1b2250 100%);
|
||||
font-family: 'Segoe UI', Arial, sans-serif;
|
||||
color: #f5f6fa;
|
||||
}
|
||||
|
||||
/* 2. Conteneur principal centré et responsive */
|
||||
.page-container {
|
||||
max-width: 820px;
|
||||
margin: 2rem auto;
|
||||
padding: 4rem 2rem; /* vert (plus grand = moins haut) / hori */
|
||||
box-sizing: border-box;
|
||||
width: 95vw;
|
||||
}
|
||||
|
||||
|
||||
/* 3. Navigation supérieure */
|
||||
.top-nav {
|
||||
display: flex;
|
||||
gap: 2.5rem;
|
||||
justify-content: center;
|
||||
padding: 1.2rem 0 0.5rem 0;
|
||||
background: rgba(10, 20, 50, 0.85);
|
||||
border-bottom: 2px solid #2a3ca6;
|
||||
box-shadow: 0 2px 12px #2a3ca655;
|
||||
border-radius: 12px 12px 0 0;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.top-nav a {
|
||||
color: #6ec6ff;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 1.15rem;
|
||||
letter-spacing: 1px;
|
||||
transition: color 0.2s, text-shadow 0.2s;
|
||||
}
|
||||
.top-nav a:hover {
|
||||
color: #fff;
|
||||
text-shadow: 0 0 8px #6ec6ff, 0 0 2px #fff;
|
||||
}
|
||||
|
||||
/* 4. Titre centré */
|
||||
.page-title {
|
||||
text-align: center;
|
||||
font-size: 2.3rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 2.2rem;
|
||||
letter-spacing: 1px;
|
||||
color: #e6ecff;
|
||||
text-shadow: 0 0 16px #2a3ca6, 0 2px 12px #000a;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
/* 5. Onglets et barre de recherche (centrés) */
|
||||
.tabs-search-bar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 1.2rem;
|
||||
margin-bottom: 2.2rem;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
gap: 1.1rem;
|
||||
justify-content: center;
|
||||
}
|
||||
.tab {
|
||||
background: linear-gradient(90deg, #232b4a 0%, #2a3ca6 100%);
|
||||
color: #bfc7e6;
|
||||
border: 2px solid #2a3ca6;
|
||||
border-radius: 12px 12px 0 0;
|
||||
padding: 0.7rem 2.3rem;
|
||||
font-size: 1.05rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
opacity: 0.8;
|
||||
transition: background 0.2s, color 0.2s, opacity 0.2s, border-color 0.2s;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.tab.active {
|
||||
background: linear-gradient(90deg, #3e51b5 0%, #6ec6ff 100%);
|
||||
color: #fff;
|
||||
opacity: 1;
|
||||
border-color: #6ec6ff;
|
||||
box-shadow: 0 2px 8px #6ec6ff55, 0 0 8px #fff2;
|
||||
}
|
||||
.tab:not(.active):hover {
|
||||
opacity: 1;
|
||||
background: #28325a;
|
||||
color: #e6ecff;
|
||||
border-color: #3e51b5;
|
||||
}
|
||||
|
||||
/* 6. Barre de recherche */
|
||||
.search-bar {
|
||||
background: #232b4a;
|
||||
color: #e6ecff;
|
||||
border: 2px solid #2a3ca6;
|
||||
border-radius: 20px;
|
||||
padding: 0.7rem 1.5rem;
|
||||
font-size: 1rem;
|
||||
width: 220px;
|
||||
max-width: 100vw;
|
||||
outline: none;
|
||||
transition: border-color 0.2s, box-shadow 0.2s;
|
||||
box-shadow: 0 2px 8px #3949ab22;
|
||||
}
|
||||
.search-bar:focus {
|
||||
border-color: #6ec6ff;
|
||||
box-shadow: 0 0 10px #6ec6ff88;
|
||||
}
|
||||
.search-bar::placeholder {
|
||||
color: #bfc7e6;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/* 7. Contenu des onglets */
|
||||
.tab-content {
|
||||
background: rgba(20, 30, 60, 0.92);
|
||||
border-radius: 0 0 14px 14px;
|
||||
box-shadow: 0 6px 32px #2a3ca644;
|
||||
padding: 2.2rem 2.5rem;
|
||||
margin-bottom: 2rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.tab-panel {
|
||||
display: none;
|
||||
}
|
||||
.tab-panel.active {
|
||||
display: block;
|
||||
animation: fadeInPanel 0.4s;
|
||||
}
|
||||
@keyframes fadeInPanel {
|
||||
from { opacity: 0; transform: translateY(20px);}
|
||||
to { opacity: 1; transform: translateY(0);}
|
||||
}
|
||||
|
||||
/* 8. Sections et checklist */
|
||||
.section {
|
||||
margin-bottom: 2.5rem;
|
||||
background: #181c30;
|
||||
border-radius: 10px;
|
||||
padding: 1.2rem 1.5rem;
|
||||
box-shadow: 0 2px 8px #232b4a22;
|
||||
border-left: 4px solid #2a3ca6;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 1.2rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1.1rem;
|
||||
color: #bfc7e6;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
.subsection {
|
||||
margin-bottom: 1.2rem;
|
||||
background: #232b4a;
|
||||
border-radius: 7px;
|
||||
padding: 0.9rem 1.2rem;
|
||||
}
|
||||
.subsection-title {
|
||||
font-size: 1.07rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.7rem;
|
||||
color: #e6ecff;
|
||||
}
|
||||
.checklist {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.checklist li {
|
||||
margin-bottom: 0.6rem;
|
||||
padding: 0.3rem 0.7rem;
|
||||
border-radius: 4px;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
.checklist li.highlight {
|
||||
background: linear-gradient(90deg, #2a3ca622, #6ec6ff44);
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.checklist label {
|
||||
cursor: pointer;
|
||||
font-size: 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.checklist input[type="checkbox"] {
|
||||
accent-color: #3e51b5;
|
||||
width: 1.1rem;
|
||||
height: 1.1rem;
|
||||
}
|
||||
.checklist a {
|
||||
color: #8eaaff;
|
||||
text-decoration: underline;
|
||||
font-weight: 600;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
.checklist a:hover {
|
||||
color: #e6ecff;
|
||||
}
|
||||
|
||||
/* 9. Responsive : adaptation pour petits écrans */
|
||||
@media (max-width: 900px) {
|
||||
.page-container {
|
||||
padding: 1.2rem 0.5rem;
|
||||
max-width: 99vw;
|
||||
}
|
||||
.tab-content {
|
||||
padding: 1.2rem 0.5rem;
|
||||
}
|
||||
}
|
||||
@media (max-width: 700px) {
|
||||
.top-nav {
|
||||
flex-direction: column;
|
||||
gap: 0.7rem;
|
||||
font-size: 1rem;
|
||||
padding: 0.7rem 0 0.3rem 0;
|
||||
}
|
||||
.page-title {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 1.1rem;
|
||||
}
|
||||
.tabs-search-bar {
|
||||
flex-direction: column;
|
||||
gap: 0.7rem;
|
||||
align-items: center;
|
||||
}
|
||||
.tabs {
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
}
|
||||
.tab {
|
||||
width: 100%;
|
||||
min-width: unset;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
.search-bar {
|
||||
width: 100%;
|
||||
max-width: 100vw;
|
||||
font-size: 1rem;
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
.tab-content {
|
||||
padding: 0.7rem 0.2rem;
|
||||
}
|
||||
.section,
|
||||
.subsection {
|
||||
padding: 0.7rem 0.3rem;
|
||||
}
|
||||
}
|
||||
@media (max-width: 400px) {
|
||||
.page-title {
|
||||
font-size: 1.1rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.tab {
|
||||
font-size: 0.95rem;
|
||||
padding: 0.5rem 0.7rem;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue