commit
267fbd50a3
@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="À propos de Sasha Lorenc - Développeur web passionné par l'innovation et le design">
|
||||
<title>À propos - Portfolio de Sasha Lorenc</title>
|
||||
<link rel="stylesheet" href="../css/about_css.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<header>
|
||||
<nav>
|
||||
<h1>Sasha Lorenc</h1>
|
||||
<ul>
|
||||
<li><a href="accueil.html" data-translate="nav-home">Accueil</a></li>
|
||||
<li><a href="about.html" data-translate="nav-about" aria-current="page">À propos</a></li>
|
||||
<li><a href="projet.html" data-translate="nav-projects">Projets</a></li>
|
||||
<li><a href="skills.html" data-translate="nav-skills">Compétences</a></li>
|
||||
<li><a href="contacts.html" data-translate="nav-contact">Contact</a></li>
|
||||
</ul>
|
||||
<button id="settings-icon" aria-label="Paramètres" aria-expanded="false" aria-controls="color-picker">⚙️</button>
|
||||
</nav>
|
||||
|
||||
<div id="color-picker" class="color-picker" style="display: none;" role="dialog" aria-labelledby="color-picker-title">
|
||||
<span id="color-picker-title">Couleur d'accentuation :</span>
|
||||
<label><input type="radio" name="accent-color" value="#1abc9c" checked> Default</label>
|
||||
<label><input type="radio" name="accent-color" value="#e74c3c"> Rouge</label>
|
||||
<label><input type="radio" name="accent-color" value="#f39c12"> Orange</label>
|
||||
<label><input type="radio" name="accent-color" value="#2ecc71"> Vert</label>
|
||||
<label><input type="radio" name="accent-color" value="#e84393"> Rose</label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Section À propos -->
|
||||
<main>
|
||||
<section class="about">
|
||||
<h2>À propos de moi</h2>
|
||||
<p>
|
||||
Je m'appelle <strong class="strong_word">Sasha Lorenc</strong>, développeur passionné par l'informatique et le design.
|
||||
Je cherche constamment à apprendre et à m'améliorer.
|
||||
En tant qu'étudiant en Première année de
|
||||
<strong class="strong_word">BUT Informatique</strong> passionné par
|
||||
le développement web, je maîtrise les langages
|
||||
<strong class="strong_word">HTML</strong>,
|
||||
<strong class="strong_word">CSS</strong>, me permettant la création
|
||||
d'applications web. J'apprécie également le développement
|
||||
d'applications bureau avec des langages tels que le
|
||||
<strong class="strong_word">C</strong>. Mon adaptabilité me permet
|
||||
de relever les défis techniques.
|
||||
En combinant mes compétences techniques, incluant des
|
||||
connaissances en
|
||||
<strong class="strong_word">frameworks</strong>, je suis capable
|
||||
de transformer des concepts en applications web de manière
|
||||
<strong class="strong_word">professionnelle</strong>. Pour la
|
||||
rentrée 2025, je suis à la recherche d'une
|
||||
<strong class="strong_word">alternance</strong> dans le domaine
|
||||
du développement web ou autre.
|
||||
</p>
|
||||
<div class="about-details">
|
||||
<h3>Mon parcours</h3>
|
||||
<p>Je suis actuellement étudiant en <strong class="strong_word">BUT Informatique</strong> à l'IUT de <strong class="strong_word">Clermont-Ferrand</strong>.
|
||||
Avant cela, j'ai obtenu mon baccalauréat avec les spécialités NSI (Numérique et Sciences Informatiques) et Mathématiques au lycée Albert Londres à Cusset.
|
||||
Durant mon parcours lycéen, j'ai eu l'opportunité exceptionnelle de participer à un projet innovant en partenariat avec Samsung dans le cadre du programme "Solve for Tomorrow".
|
||||
Notre équipe a fait partie des 5 groupes sélectionnés parmi plus d'un millier de groupes en France pour présenter notre projet devant un jury à Paris, une expérience enrichissante qui a renforcé mes compétences en gestion de projet.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="motivation">
|
||||
<h3>Ce qui me motive</h3>
|
||||
<p>
|
||||
J'aime créer des interfaces intuitives et esthétiques, et je cherche à rendre chaque projet innovant et unique
|
||||
pour permettre aux sites que je crée d'être facilement identifiables par leurs utilisateurs.
|
||||
</p>
|
||||
</div>
|
||||
<a href="contacts.html" class="btn" aria-label="Me contacter">Me contacter</a>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- Pied de page -->
|
||||
<footer>
|
||||
<p>© 2024 Sasha Lorenc. Tous droits réservés.</p>
|
||||
<div class="social-links">
|
||||
<a href="https://www.linkedin.com/in/sasha-lorenc-9a073b278/" target="_blank" rel="noopener" aria-label="LinkedIn">LinkedIn</a>
|
||||
<a href="https://github.com/tallko9?tab=repositories" target="_blank" rel="noopener" aria-label="GitHub">GitHub</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<button id="scroll-to-top" title="Remonter en haut" aria-label="Retourner en haut de la page">↑</button>
|
||||
|
||||
<script>
|
||||
// Gestion du défilement avec animation fluide
|
||||
const scrollToTop = document.getElementById("scroll-to-top");
|
||||
|
||||
const scrollFunction = () => {
|
||||
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
||||
scrollToTop.style.display = "block";
|
||||
} else {
|
||||
scrollToTop.style.display = "none";
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('scroll', scrollFunction);
|
||||
|
||||
scrollToTop.addEventListener('click', () => {
|
||||
const scrollToTop = () => {
|
||||
const c = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
if (c > 0) {
|
||||
window.requestAnimationFrame(scrollToTop);
|
||||
window.scrollTo(0, c - c / 8);
|
||||
}
|
||||
};
|
||||
scrollToTop();
|
||||
});
|
||||
|
||||
// Gestion des couleurs d'accentuation
|
||||
const changeAccentColor = (color) => {
|
||||
document.documentElement.style.setProperty('--accent-color', color);
|
||||
localStorage.setItem('accentColor', color);
|
||||
|
||||
// Feedback visuel
|
||||
const notification = document.createElement('div');
|
||||
notification.className = 'color-change-notification';
|
||||
document.body.appendChild(notification);
|
||||
|
||||
setTimeout(() => {
|
||||
notification.remove();
|
||||
}, 2000);
|
||||
};
|
||||
|
||||
// Application de la couleur sauvegardée
|
||||
const applyStoredColor = () => {
|
||||
const storedColor = localStorage.getItem('accentColor');
|
||||
if (storedColor) {
|
||||
document.documentElement.style.setProperty('--accent-color', storedColor);
|
||||
const radioButton = document.querySelector(`input[name="accent-color"][value="${storedColor}"]`);
|
||||
if (radioButton) radioButton.checked = true;
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
applyStoredColor();
|
||||
|
||||
const settingsIcon = document.getElementById('settings-icon');
|
||||
const colorPicker = document.getElementById('color-picker');
|
||||
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(radio => {
|
||||
radio.addEventListener('change', () => changeAccentColor(radio.value));
|
||||
});
|
||||
|
||||
if (settingsIcon && colorPicker) {
|
||||
settingsIcon.addEventListener('click', () => {
|
||||
const isExpanded = colorPicker.style.display !== 'none';
|
||||
colorPicker.style.display = isExpanded ? 'none' : 'block';
|
||||
settingsIcon.setAttribute('aria-expanded', !isExpanded);
|
||||
});
|
||||
|
||||
// Fermer le color picker en cliquant en dehors
|
||||
document.addEventListener('click', (e) => {
|
||||
if (!colorPicker.contains(e.target) && !settingsIcon.contains(e.target)) {
|
||||
colorPicker.style.display = 'none';
|
||||
settingsIcon.setAttribute('aria-expanded', 'false');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,180 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Portfolio de Sasha Lorenc - Développeur web passionné par l'innovation et le design">
|
||||
<title>Accueil - Portfolio de Sasha Lorenc</title>
|
||||
<link rel="stylesheet" href="../css/accueil_css.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<h1>Sasha Lorenc</h1>
|
||||
<ul>
|
||||
<li><a href="accueil.html" data-translate="nav-home" aria-current="page">Accueil</a></li>
|
||||
<li><a href="about.html" data-translate="nav-about">À propos</a></li>
|
||||
<li><a href="projet.html" data-translate="nav-projects">Projets</a></li>
|
||||
<li><a href="skills.html" data-translate="nav-skills">Compétences</a></li>
|
||||
<li><a href="contacts.html" data-translate="nav-contact">Contact</a></li>
|
||||
</ul>
|
||||
<button id="settings-icon" aria-label="Paramètres" aria-expanded="false" aria-controls="color-picker">⚙️</button>
|
||||
</nav>
|
||||
<div id="color-picker" class="color-picker">
|
||||
<span id="color-picker-title">Couleur d'accentuation :</span>
|
||||
<label><input type="radio" name="accent-color" value="#1abc9c" checked> Default</label>
|
||||
<label><input type="radio" name="accent-color" value="#e74c3c"> Rouge</label>
|
||||
<label><input type="radio" name="accent-color" value="#f39c12"> Orange</label>
|
||||
<label><input type="radio" name="accent-color" value="#2ecc71"> Vert</label>
|
||||
<label><input type="radio" name="accent-color" value="#e84393"> Rose</label>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<section class="intro">
|
||||
<h2 data-translate="welcome">Bienvenue sur mon portfolio !</h2>
|
||||
<p data-translate="intro-text">Développeur passionné par l'innovation et le design web, je vous invite à découvrir mes projets et compétences.</p>
|
||||
<div class="cta-buttons">
|
||||
<a href="contacts.html" class="btn secondary">Me contacter</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Section À propos -->
|
||||
<section class="about-preview">
|
||||
<h2><strong class="strong_word" data-translate="who-am-i">Qui suis-je ?</strong></h2>
|
||||
<p data-translate="about-preview">Étudiant en première année de BUT Informatique, je suis passionné par le développement web et les nouvelles technologies. Mon objectif est de créer des expériences web innovantes et accessibles.</p>
|
||||
<a href="about.html" class="btn" data-translate="learn-more">En savoir plus</a>
|
||||
</section>
|
||||
|
||||
<!-- Section Compétences -->
|
||||
<section class="skills-preview">
|
||||
<h2><strong class="strong_word" data-translate="key-skills">Mes compétences clés</strong></h2>
|
||||
<div class="skills-list">
|
||||
<div class="skill-item">
|
||||
<i class="skill-icon html-icon"></i>
|
||||
<p data-translate="skill-html-css">HTML5 & CSS3</p>
|
||||
</div>
|
||||
<div class="skill-item">
|
||||
<i class="skill-icon js-icon"></i>
|
||||
<p data-translate="skill-js">JavaScript</p>
|
||||
</div>
|
||||
<div class="skill-item">
|
||||
<i class="skill-icon c-icon"></i>
|
||||
<p data-translate="skill-c">Développement C</p>
|
||||
</div>
|
||||
<div class="skill-item">
|
||||
<i class="skill-icon responsive-icon"></i>
|
||||
<p data-translate="skill-responsive">Design responsive</p>
|
||||
</div>
|
||||
</div>
|
||||
<a href="skills.html" class="btn" data-translate="all-skills">Toutes mes compétences</a>
|
||||
</section>
|
||||
|
||||
<section class="recent-projects">
|
||||
<h2><strong data-translate="recent-projects">Projets récents</strong></h2>
|
||||
<div class="project-grid">
|
||||
<article class="project-card" tabindex="0">
|
||||
<h3 data-translate="project-1-title">Site web responsive</h3>
|
||||
<p data-translate="project-1-desc">Création d'un site web pour une association locale</p>
|
||||
<a href="projet.html#site-web" class="project-link">En savoir plus</a>
|
||||
</article>
|
||||
<article class="project-card" tabindex="0">
|
||||
<h3 data-translate="project-2-title">Application de gestion</h3>
|
||||
<p data-translate="project-2-desc">Développement d'une application en C pour la gestion de tâches</p>
|
||||
<a href="projet.html#app-gestion" class="project-link">En savoir plus</a>
|
||||
</article>
|
||||
</div>
|
||||
<a href="projet.html" class="btn" data-translate="all-projects">Tous mes projets</a>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- Pied de page -->
|
||||
<footer>
|
||||
<p>© 2024 Sasha Lorenc. <span data-translate="rights-reserved">Tous droits réservés.</span></p>
|
||||
<div class="social-links">
|
||||
<a href="https://www.linkedin.com/in/sasha-lorenc-9a073b278/" target="_blank" rel="noopener" aria-label="LinkedIn">LinkedIn</a>
|
||||
<a href="https://github.com/tallko9?tab=repositories" target="_blank" rel="noopener" aria-label="GitHub">GitHub</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<button id="scroll-to-top" title="Remonter en haut" data-translate="scroll-to-top" aria-label="Retourner en haut de la page">↑</button>
|
||||
|
||||
<script>
|
||||
const scrollToTop = document.getElementById("scroll-to-top");
|
||||
|
||||
const scrollFunction = () => {
|
||||
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
||||
scrollToTop.style.display = "block";
|
||||
} else {
|
||||
scrollToTop.style.display = "none";
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('scroll', scrollFunction);
|
||||
|
||||
scrollToTop.addEventListener('click', () => {
|
||||
const scrollToTop = () => {
|
||||
const c = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
if (c > 0) {
|
||||
window.requestAnimationFrame(scrollToTop);
|
||||
window.scrollTo(0, c - c / 8);
|
||||
}
|
||||
};
|
||||
scrollToTop();
|
||||
});
|
||||
|
||||
// Gestion des couleurs d'accentuation
|
||||
const changeAccentColor = (color) => {
|
||||
document.documentElement.style.setProperty('--accent-color', color);
|
||||
localStorage.setItem('accentColor', color);
|
||||
|
||||
// Feedback visuel
|
||||
const notification = document.createElement('div');
|
||||
notification.className = 'color-change-notification';
|
||||
document.body.appendChild(notification);
|
||||
|
||||
setTimeout(() => {
|
||||
notification.remove();
|
||||
}, 2000);
|
||||
};
|
||||
|
||||
// Application de la couleur sauvegardée
|
||||
const applyStoredColor = () => {
|
||||
const storedColor = localStorage.getItem('accentColor');
|
||||
if (storedColor) {
|
||||
document.documentElement.style.setProperty('--accent-color', storedColor);
|
||||
const radioButton = document.querySelector(`input[name="accent-color"][value="${storedColor}"]`);
|
||||
if (radioButton) radioButton.checked = true;
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
applyStoredColor();
|
||||
|
||||
const settingsIcon = document.getElementById('settings-icon');
|
||||
const colorPicker = document.getElementById('color-picker');
|
||||
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(radio => {
|
||||
radio.addEventListener('change', () => changeAccentColor(radio.value));
|
||||
});
|
||||
|
||||
if (settingsIcon && colorPicker) {
|
||||
settingsIcon.addEventListener('click', () => {
|
||||
const isExpanded = colorPicker.style.display !== 'none';
|
||||
colorPicker.style.display = isExpanded ? 'none' : 'block';
|
||||
settingsIcon.setAttribute('aria-expanded', !isExpanded);
|
||||
});
|
||||
|
||||
// Fermer le color picker en cliquant en dehors
|
||||
document.addEventListener('click', (e) => {
|
||||
if (!colorPicker.contains(e.target) && !settingsIcon.contains(e.target)) {
|
||||
colorPicker.style.display = 'none';
|
||||
settingsIcon.setAttribute('aria-expanded', 'false');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,201 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Contact - Portfolio de Sasha Lorenc</title>
|
||||
<link rel="stylesheet" href="../css/contacts_css.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<header>
|
||||
<nav>
|
||||
<h1>Sasha Lorenc</h1>
|
||||
<ul>
|
||||
<li><a href="accueil.html">Accueil</a></li>
|
||||
<li><a href="about.html">À propos</a></li>
|
||||
<li><a href="projet.html">Projets</a></li>
|
||||
<li><a href="skills.html">Compétences</a></li>
|
||||
<li><a href="contacts.html">Contact</a></li>
|
||||
</ul>
|
||||
<button id="settings-icon" aria-label="Paramètres">⚙️</button>
|
||||
</nav>
|
||||
<div id="color-picker" class="color-picker" style="display: none;">
|
||||
<span>Couleur d'accentuation :</span>
|
||||
<label><input type="radio" name="accent-color" value="#1abc9c" checked> Default</label>
|
||||
<label><input type="radio" name="accent-color" value="#e74c3c"> Rouge</label>
|
||||
<label><input type="radio" name="accent-color" value="#f39c12"> Orange</label>
|
||||
<label><input type="radio" name="accent-color" value="#2ecc71"> Vert</label>
|
||||
<label><input type="radio" name="accent-color" value="#e84393"> Rose</label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Section Contact -->
|
||||
<section class="contact">
|
||||
<h2>Contactez-moi</h2>
|
||||
<p>N'hésitez pas à me contacter pour toute question ou collaboration. Je serai ravi d'échanger avec vous !</p>
|
||||
|
||||
<form id="contactForm">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nom <span class="required">*</span></label>
|
||||
<input type="text" id="name" name="name" required minlength="2" maxlength="50"
|
||||
placeholder="Votre nom complet"
|
||||
pattern="[A-Za-zÀ-ÿ\s]+" title="Veuillez entrer un nom valide">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="email">Email <span class="required">*</span></label>
|
||||
<input type="email" id="email" name="email" required
|
||||
placeholder="exemple@email.com"
|
||||
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$">
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="subject">Sujet <span class="required">*</span></label>
|
||||
<select id="subject" name="subject" required>
|
||||
<option value="">Sélectionnez un sujet</option>
|
||||
<option value="collaboration">Proposition de collaboration</option>
|
||||
<option value="question">Question générale</option>
|
||||
<option value="projet">Discussion de projet</option>
|
||||
<option value="autre">Autre</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="message">Message <span class="required">*</span></label>
|
||||
<textarea id="message" name="message" rows="5" required minlength="10" maxlength="1000"
|
||||
placeholder="Votre message ici (10-1000 caractères)"></textarea>
|
||||
<div class="character-count"><span id="charCount">0</span>/1000</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox-container">
|
||||
<input type="checkbox" required name="privacy">
|
||||
<span class="checkmark"></span>
|
||||
J'accepte que mes données soient utilisées pour être recontacté(e)
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn">
|
||||
<span class="btn-text">Envoyer</span>
|
||||
<span class="btn-icon">📨</span>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<!-- Infos de contact -->
|
||||
<div class="contact-info">
|
||||
<p><strong>Email :</strong> sasha03.lorenc@gmail.com</p>
|
||||
<p><strong>Suivez-moi :</strong>
|
||||
<a href="https://www.linkedin.com/in/sasha-lorenc-9a073b278/" target="_blank" rel="noopener noreferrer">LinkedIn</a> |
|
||||
<a href="https://github.com/tallko9?tab=repositories" target="_blank" rel="noopener noreferrer">GitHub</a> |
|
||||
<a href="#" target="_blank" rel="noopener noreferrer">Twitter</a>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pied de page -->
|
||||
<footer>
|
||||
<p>© 2024 Sasha Lorenc. Tous droits réservés.</p>
|
||||
</footer>
|
||||
<button id="scroll-to-top" title="Remonter en haut">↑</button>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/@emailjs/browser@3/dist/email.min.js"></script>
|
||||
<script>
|
||||
window.onscroll = function() {scrollFunction()};
|
||||
|
||||
function scrollFunction() {
|
||||
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
||||
document.getElementById("scroll-to-top").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("scroll-to-top").style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById("scroll-to-top").onclick = function() {
|
||||
document.body.scrollTop = 0;
|
||||
document.documentElement.scrollTop = 0;
|
||||
};
|
||||
|
||||
// Fonction pour changer la couleur d'accentuation
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(function(radio) {
|
||||
radio.addEventListener('change', function() {
|
||||
document.documentElement.style.setProperty('--accent-color', this.value);
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Gestion du compteur de caractères
|
||||
const messageTextarea = document.getElementById('message');
|
||||
const charCount = document.getElementById('charCount');
|
||||
|
||||
messageTextarea.addEventListener('input', function() {
|
||||
charCount.textContent = this.value.length;
|
||||
});
|
||||
|
||||
// Validation et envoi du formulaire par Email.js
|
||||
const contactForm = document.getElementById('contactForm');
|
||||
|
||||
contactForm.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (this.checkValidity()) {
|
||||
const submitBtn = this.querySelector('button[type="submit"]');
|
||||
submitBtn.classList.add('sending');
|
||||
|
||||
emailjs.init("pBMgXiG4tpfVkCxhY");
|
||||
|
||||
const templateParams = {
|
||||
name: document.getElementById('name').value,
|
||||
email: document.getElementById('email').value,
|
||||
subject: document.getElementById('subject').value,
|
||||
message: document.getElementById('message').value
|
||||
};
|
||||
|
||||
emailjs.send('service_s1wv65t', 'template_391zlnl', templateParams)
|
||||
.then(function(response) {
|
||||
alert('Message envoyé avec succès !');
|
||||
contactForm.reset();
|
||||
charCount.textContent = '0';
|
||||
submitBtn.classList.remove('sending');
|
||||
}, function(error) {
|
||||
alert('Une erreur est survenue. Veuillez réessayer.');
|
||||
submitBtn.classList.remove('sending');
|
||||
console.error('Erreur:', error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Gestion des couleurs d'accentuation
|
||||
function changeAccentColor(color) {
|
||||
document.documentElement.style.setProperty('--accent-color', color);
|
||||
localStorage.setItem('accentColor', color);
|
||||
}
|
||||
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(function(radio) {
|
||||
radio.addEventListener('change', function() {
|
||||
changeAccentColor(this.value);
|
||||
});
|
||||
});
|
||||
|
||||
function applyStoredColor() {
|
||||
var storedColor = localStorage.getItem('accentColor');
|
||||
if (storedColor) {
|
||||
document.documentElement.style.setProperty('--accent-color', storedColor);
|
||||
var radioButton = document.querySelector(`input[name="accent-color"][value="${storedColor}"]`);
|
||||
if (radioButton) {
|
||||
radioButton.checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applyStoredColor();
|
||||
|
||||
var settingsIcon = document.getElementById('settings-icon');
|
||||
var colorPicker = document.getElementById('color-picker');
|
||||
if (settingsIcon && colorPicker) {
|
||||
settingsIcon.addEventListener('click', function() {
|
||||
colorPicker.style.display = colorPicker.style.display === 'none' ? 'block' : 'none';
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Compétences - Portfolio de Sasha Lorenc</title>
|
||||
<link rel="stylesheet" href="../css/skills_css.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<header>
|
||||
<nav>
|
||||
<h1>Sasha Lorenc</h1>
|
||||
<ul>
|
||||
<li><a href="accueil.html">Accueil</a></li>
|
||||
<li><a href="about.html">À propos</a></li>
|
||||
<li><a href="projet.html">Projets</a></li>
|
||||
<li><a href="skills.html">Compétences</a></li>
|
||||
<li><a href="contacts.html">Contact</a></li>
|
||||
</ul>
|
||||
<button id="settings-icon" aria-label="Paramètres">⚙️</button>
|
||||
</nav>
|
||||
|
||||
<div id="color-picker" class="color-picker" style="display: none;">
|
||||
<span>Couleur d'accentuation :</span>
|
||||
<label><input type="radio" name="accent-color" value="#1abc9c" checked> Default</label>
|
||||
<label><input type="radio" name="accent-color" value="#e74c3c"> Rouge</label>
|
||||
<label><input type="radio" name="accent-color" value="#f39c12"> Orange</label>
|
||||
<label><input type="radio" name="accent-color" value="#2ecc71"> Vert</label>
|
||||
<label><input type="radio" name="accent-color" value="#e84393"> Rose</label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Section Compétences -->
|
||||
<section class="skills">
|
||||
<h2>Mes Compétences</h2>
|
||||
|
||||
<!-- Compétences Techniques -->
|
||||
<div class="skills-section">
|
||||
<h3>Compétences Techniques</h3>
|
||||
<div class="skill">
|
||||
<p>HTML & CSS</p>
|
||||
<div class="progress-bar">
|
||||
<div class="progress" style="width: 90%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="skill">
|
||||
<p>JavaScript</p>
|
||||
<div class="progress-bar">
|
||||
<div class="progress" style="width: 80%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="skill">
|
||||
<p>PHP & MySQL</p>
|
||||
<div class="progress-bar">
|
||||
<div class="progress" style="width: 75%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="skill">
|
||||
<p>React & Node.js</p>
|
||||
<div class="progress-bar">
|
||||
<div class="progress" style="width: 70%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Compétences Générales -->
|
||||
<div class="skills-section">
|
||||
<h3>Compétences Générales</h3>
|
||||
<div class="project-list">
|
||||
<div class="project-card">
|
||||
<h3>Gestion de projet</h3>
|
||||
<p>Leadership naturel avec expérience dans la coordination d'équipes. Excellente capacité à établir des plannings réalistes et à gérer les ressources efficacement. Compétences avérées en gestion des risques et résolution de conflits.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Communication</h3>
|
||||
<p>Communication claire et persuasive en français et en anglais. Capacité à vulgariser des concepts techniques complexes. Excellente aptitude à la rédaction de documentation technique et rapports professionnels. Fort esprit d'équipe avec capacité à fédérer autour d'objectifs communs.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Résolution de problèmes</h3>
|
||||
<p>Capacité à décomposer des problèmes complexes en éléments gérables. Maîtrise des techniques de debugging et d'optimisation. Expérience en analyse de données pour la prise de décision. Capacité à anticiper les problèmes potentiels et à mettre en place des solutions préventives.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Adaptabilité</h3>
|
||||
<p>Excellente capacité d'adaptation aux changements technologiques et organisationnels. Apprentissage rapide des nouveaux outils et frameworks.Capacité à travailler efficacement dans des environnements multiculturels. Résilience face aux situations stressantes et aux deadlines serrées.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Créativité</h3>
|
||||
<p>Approche innovante dans la résolution de problèmes techniques. Capacité à concevoir des solutions efficaces. Expérience en design thinking et brainstorming créatif. Aptitude à sortir des sentiers battus pour proposer des solutions originales. Passion pour l'innovation technologique et l'amélioration continue.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Organisation</h3>
|
||||
<p>Excellence dans la gestion du temps et des priorités. Maîtrise des outils de gestion de projet et de productivité. Capacité à gérer plusieurs projets simultanément. Rigueur dans le suivi des tâches et le respect des délais.</p>
|
||||
</div>
|
||||
<div class="project-card">
|
||||
<h3>Esprit d'analyse</h3>
|
||||
<p>Capacité à analyser des situations complexes et à en tirer des conclusions pertinentes. Compétences en analyse de données et en prise de décision basée sur les faits. Approche critique et objective des problèmes.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pied de page -->
|
||||
<footer>
|
||||
<p>© 2024 Sasha Lorenc. Tous droits réservés.</p>
|
||||
<div class="social-links">
|
||||
<a href="https://www.linkedin.com/in/sasha-lorenc-9a073b278/" target="_blank">LinkedIn</a>
|
||||
<a href="https://github.com/tallko9?tab=repositories" target="_blank">GitHub</a>
|
||||
</div>
|
||||
</footer>
|
||||
<button id="scroll-to-top" title="Remonter en haut">↑</button>
|
||||
<script>
|
||||
window.onscroll = function() {scrollFunction()};
|
||||
|
||||
function scrollFunction() {
|
||||
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
||||
document.getElementById("scroll-to-top").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("scroll-to-top").style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById("scroll-to-top").onclick = function() {
|
||||
document.body.scrollTop = 0;
|
||||
document.documentElement.scrollTop = 0;
|
||||
};
|
||||
|
||||
// Fonction pour changer la couleur d'accentuation
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(function(radio) {
|
||||
radio.addEventListener('change', function() {
|
||||
document.documentElement.style.setProperty('--accent-color', this.value);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Fonction pour changer la couleur d'accentuation
|
||||
function changeAccentColor(color) {
|
||||
document.documentElement.style.setProperty('--accent-color', color);
|
||||
localStorage.setItem('accentColor', color);
|
||||
}
|
||||
|
||||
// Ajouter les écouteurs d'événements aux boutons radio
|
||||
document.querySelectorAll('input[name="accent-color"]').forEach(function(radio) {
|
||||
radio.addEventListener('change', function() {
|
||||
changeAccentColor(this.value);
|
||||
});
|
||||
});
|
||||
|
||||
// Fonction pour appliquer la couleur sauvegardée
|
||||
function applyStoredColor() {
|
||||
var storedColor = localStorage.getItem('accentColor');
|
||||
if (storedColor) {
|
||||
document.documentElement.style.setProperty('--accent-color', storedColor);
|
||||
var radioButton = document.querySelector(`input[name="accent-color"][value="${storedColor}"]`);
|
||||
if (radioButton) {
|
||||
radioButton.checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Appliquer la couleur sauvegardée au chargement de la page
|
||||
applyStoredColor();
|
||||
|
||||
// Gestion du bouton de paramètres
|
||||
var settingsIcon = document.getElementById('settings-icon');
|
||||
var colorPicker = document.getElementById('color-picker');
|
||||
if (settingsIcon && colorPicker) {
|
||||
settingsIcon.addEventListener('click', function() {
|
||||
colorPicker.style.display = colorPicker.style.display === 'none' ? 'block' : 'none';
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue