Citations sur l’Amour – Taha-Hassine Ferhat
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
–primary-color: #e74c3c;
–primary-light: #ec7063;
–primary-dark: #c0392b;
–text-dark: #2c3e50;
–text-light: #7f8c8d;
–bg-light: #f8f9fa;
–shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
–shadow-hover: 0 8px 25px rgba(0, 0, 0, 0.15);
}
body {
font-family: ‘Segoe UI’, Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: var(–text-dark);
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
}
/* Header avec navigation */
.header {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
padding: 20px 0;
position: sticky;
top: 0;
z-index: 100;
}
.nav-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-size: 1.5rem;
font-weight: 700;
color: white;
text-decoration: none;
}
.nav-links {
display: flex;
gap: 30px;
list-style: none;
}
.nav-links a {
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
font-weight: 500;
transition: color 0.3s ease;
}
.nav-links a:hover {
color: white;
}
.breadcrumb {
background: rgba(255, 255, 255, 0.05);
padding: 15px 0;
}
.breadcrumb-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.breadcrumb-nav {
display: flex;
align-items: center;
gap: 10px;
color: rgba(255, 255, 255, 0.8);
font-size: 0.9rem;
}
.breadcrumb-nav a {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
}
.breadcrumb-nav a:hover {
color: white;
}
/* Section Hero de la catégorie */
.category-hero {
text-align: center;
padding: 60px 20px;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
}
.category-icon {
font-size: 4rem;
margin-bottom: 20px;
filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.3));
animation: pulse 2s infinite;
}
.category-title {
font-size: 3rem;
color: white;
margin-bottom: 15px;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
font-weight: 700;
}
.category-subtitle {
font-size: 1.3rem;
color: rgba(255, 255, 255, 0.9);
margin-bottom: 20px;
}
.category-count {
background: var(–primary-color);
color: white;
padding: 10px 25px;
border-radius: 30px;
font-size: 1rem;
font-weight: 600;
display: inline-block;
box-shadow: var(–shadow);
}
/* Outils de recherche et filtres */
.tools-section {
max-width: 1200px;
margin: 0 auto;
padding: 30px 20px;
}
.search-container {
display: flex;
gap: 20px;
margin-bottom: 30px;
flex-wrap: wrap;
}
.search-box {
flex: 1;
min-width: 300px;
position: relative;
}
.search-input {
width: 100%;
padding: 15px 50px 15px 20px;
border: none;
border-radius: 50px;
font-size: 1rem;
background: white;
box-shadow: var(–shadow);
outline: none;
transition: box-shadow 0.3s ease;
}
.search-input:focus {
box-shadow: var(–shadow-hover);
}
.search-icon {
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
color: var(–text-light);
font-size: 1.2rem;
}
.filter-buttons {
display: flex;
gap: 15px;
flex-wrap: wrap;
}
.filter-btn {
padding: 12px 20px;
background: white;
border: 2px solid transparent;
border-radius: 25px;
cursor: pointer;
transition: all 0.3s ease;
font-weight: 500;
box-shadow: var(–shadow);
}
.filter-btn:hover {
border-color: var(–primary-color);
transform: translateY(-2px);
}
.filter-btn.active {
background: var(–primary-color);
color: white;
}
.sort-dropdown {
padding: 12px 20px;
background: white;
border: none;
border-radius: 25px;
cursor: pointer;
font-weight: 500;
box-shadow: var(–shadow);
outline: none;
}
/* Grille des citations */
.citations-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px 50px;
}
.citations-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 30px;
margin-bottom: 50px;
}
.citation-card {
background: white;
border-radius: 20px;
padding: 30px;
box-shadow: var(–shadow);
transition: all 0.3s ease;
border-left: 5px solid var(–primary-color);
position: relative;
overflow: hidden;
opacity: 0;
transform: translateY(30px);
}
.citation-card.visible {
animation: fadeInUp 0.6s ease forwards;
}
.citation-card::before {
content: »;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, var(–primary-color), var(–primary-light));
}
.citation-card:hover {
transform: translateY(-10px);
box-shadow: var(–shadow-hover);
}
.citation-text {
font-size: 1.2rem;
line-height: 1.7;
color: var(–text-dark);
margin-bottom: 20px;
font-style: italic;
position: relative;
}
.citation-text::before {
content: ‘ »‘;
font-size: 3rem;
color: var(–primary-color);
position: absolute;
left: -15px;
top: -10px;
opacity: 0.3;
}
.citation-meta {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 15px;
}
.citation-tags {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.tag {
background: rgba(231, 76, 60, 0.1);
color: var(–primary-color);
padding: 5px 12px;
border-radius: 15px;
font-size: 0.8rem;
font-weight: 500;
}
.citation-actions {
display: flex;
gap: 10px;
}
.action-btn {
background: none;
border: none;
padding: 8px;
border-radius: 50%;
cursor: pointer;
transition: all 0.3s ease;
color: var(–text-light);
font-size: 1.1rem;
}
.action-btn:hover {
background: var(–primary-color);
color: white;
transform: scale(1.1);
}
.action-btn.favorited {
color: var(–primary-color);
}
.citation-number {
position: absolute;
top: 15px;
right: 15px;
background: var(–primary-color);
color: white;
width: 30px;
height: 30px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
font-weight: 600;
}
/* Statistiques */
.stats-section {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
padding: 40px 20px;
margin-bottom: 30px;
}
.stats-container {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 30px;
}
.stat-item {
text-align: center;
color: white;
}
.stat-number {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 10px;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
}
.stat-label {
font-size: 1rem;
opacity: 0.9;
}
/* Citations populaires sidebar */
.popular-section {
background: white;
border-radius: 20px;
padding: 30px;
margin-bottom: 30px;
box-shadow: var(–shadow);
}
.popular-title {
font-size: 1.5rem;
color: var(–text-dark);
margin-bottom: 20px;
display: flex;
align-items: center;
gap: 10px;
}
.popular-list {
list-style: none;
}
.popular-item {
padding: 15px 0;
border-bottom: 1px solid #eee;
cursor: pointer;
transition: background 0.3s ease;
}
.popular-item:last-child {
border-bottom: none;
}
.popular-item:hover {
background: rgba(231, 76, 60, 0.05);
border-radius: 10px;
padding: 15px 10px;
}
.popular-text {
font-size: 0.95rem;
color: var(–text-dark);
font-style: italic;
margin-bottom: 8px;
}
.popular-meta {
font-size: 0.8rem;
color: var(–text-light);
}
/* Empty state */
.empty-state {
text-align: center;
padding: 80px 20px;
color: white;
display: none;
}
.empty-icon {
font-size: 4rem;
margin-bottom: 20px;
opacity: 0.5;
}
.empty-title {
font-size: 1.5rem;
margin-bottom: 10px;
}
.empty-message {
opacity: 0.8;
margin-bottom: 30px;
}
/* Toast notification */
.toast {
position: fixed;
bottom: 20px;
right: 20px;
background: var(–primary-color);
color: white;
padding: 15px 20px;
border-radius: 10px;
box-shadow: var(–shadow-hover);
transform: translateX(400px);
transition: transform 0.3s ease;
z-index: 1000;
}
.toast.show {
transform: translateX(0);
}
/* Responsive */
@media (max-width: 768px) {
.category-title {
font-size: 2.2rem;
}
.nav-links {
display: none;
}
.search-container {
flex-direction: column;
}
.search-box {
min-width: auto;
}
.citations-grid {
grid-template-columns: 1fr;
gap: 20px;
}
.citation-card {
padding: 20px;
}
.filter-buttons {
justify-content: center;
}
}
/* Animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes pulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
@keyframes float {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-10px);
}
}
💕
AMOUR & RELATIONS
Découvrez la profondeur des sentiments humains
🔥
Citations les plus populaires
-
« L’amour n’est pas seulement un sentiment, c’est un art de vivre. »
1,245 vues • 89 favoris
-
« Dans le regard de l’être aimé, nous découvrons qui nous sommes vraiment. »
987 vues • 67 favoris
-
« L’amour véritable ne connaît ni début ni fin, il est éternel. »
856 vues • 54 favoris
🔍
Aucune citation trouvée
Essayez avec d’autres mots-clés ou filtres
// Données des citations
const quotesData = [
{
id: 1,
text: « L’amour n’est pas seulement un sentiment, c’est un art de vivre qui transforme chaque instant en éternité. »,
tags: [« amour », « vie », « éternité »],
category: « amour »,
favorites: 89,
views: 1245,
favorited: false
},
{
id: 2,
text: « Dans le regard de l’être aimé, nous découvrons qui nous sommes vraiment, au-delà des masques et des apparences. »,
tags: [« regard », « identité », « vérité »],
category: « couple »,
favorites: 67,
views: 987,
favorited: false
},
{
id: 3,
text: « L’amour véritable ne connaît ni début ni fin, il est comme un fleuve éternel qui traverse les âges. »,
tags: [« éternel », « temps », « fleuve »],
category: « amour »,
favorites: 54,
views: 856,
favorited: false
},
{
id: 4,
text: « Aimer, c’est offrir son cœur sans conditions, sachant qu’il pourrait être brisé mais espérant qu’il sera chéri. »,
tags: [« don », « cœur », « espoir »],
category: « passion »,
favorites: 72,
views: 934,
favorited: false
},
{
id: 5,
text: « La beauté de l’amour réside dans sa capacité à nous faire grandir, même dans la souffrance. »,
tags: [« beauté », « croissance », « souffrance »],
category: « amour »,
favorites: 45,
views: 678,
favorited: false
},
{
id: 6,
text: « Un sourire partagé vaut mille mots d’amour, car il vient directement de l’âme. »,
tags: [« sourire », « âme », « partage »],
category: « amitie »,
favorites: 38,
views: 523,
favorited: false
},
{
id: 7,
text: « L’amour maternel est la force la plus pure qui existe, capable de déplacer des montagnes. »,
tags: [« mère », « force », « pureté »],
category: « famille »,
favorites: 91,
views: 1456,
favorited: false
},
{
id: 8,
text: « Les mots d’amour chuchotés à l’oreille valent plus que tous les cris du monde. »,
tags: [« mots », « chuchoter », « intimité »],
category: « couple »,
favorites: 63,
views: 789,
favorited: false
}
];
let currentFilter = ‘all’;
let displayedQuotes = […quotesData];
// Initialisation
document.addEventListener(‘DOMContentLoaded’, function() {
renderQuotes(displayedQuotes);
animateStats();
setupEventListeners();
// Animation d’apparition progressive des cartes
setTimeout(() => {
const cards = document.querySelectorAll(‘.citation-card’);
cards.forEach((card, index) => {
setTimeout(() => {
card.classList.add(‘visible’);
}, index * 100);
});
}, 100);
});
// Configuration des écouteurs d’événements
function setupEventListeners() {
// Recherche
const searchInput = document.getElementById(‘searchInput’);
searchInput.addEventListener(‘input’, handleSearch);
// Filtres
const filterButtons = document.querySelectorAll(‘.filter-btn’);
filterButtons.forEach(button => {
button.addEventListener(‘click’, handleFilter);
});
// Trieur
const sortSelect = document.getElementById(‘sortSelect’);
sortSelect.addEventListener(‘change’, handleSort);
}
// Rendu des citations
function renderQuotes(quotes) {
const grid = document.getElementById(‘citationsGrid’);
const emptyState = document.getElementById(’emptyState’);
if (quotes.length === 0) {
grid.innerHTML = »;
emptyState.style.display = ‘block’;
return;
}
emptyState.style.display = ‘none’;
grid.innerHTML = quotes.map((quote, index) => `
${quote.id}
${quote.text}
`).join( »);
// Réanimer les cartes
setTimeout(() => {
const cards = document.querySelectorAll(‘.citation-card’);
cards.forEach((card, index) => {
setTimeout(() => {
card.classList.add(‘visible’);
}, index * 50);
});
}, 50);
}
// Gestion de la recherche
function handleSearch(e) {
const searchTerm = e.target.value.toLowerCase().trim();
let filteredQuotes = quotesData;
if (currentFilter !== ‘all’) {
filteredQuotes = filteredQuotes.filter(quote => quote.category === currentFilter);
}
if (searchTerm) {
filteredQuotes = filteredQuotes.filter(quote =>
quote.text.toLowerCase().includes(searchTerm) ||
quote.tags.some(tag => tag.toLowerCase().includes(searchTerm))
);
}
displayedQuotes = filteredQuotes;
renderQuotes(displayedQuotes);
}
// Gestion des filtres
function handleFilter(e) {
const filter = e.target.getAttribute(‘data-filter’);
currentFilter = filter;
// Mise à jour de l’interface
document.querySelectorAll(‘.filter-btn’).forEach(btn => btn.classList.remove(‘active’));
e.target.classList.add(‘active’);
// Application du filtre
const searchTerm = document.getElementById(‘searchInput’).value.toLowerCase().trim();
let filteredQuotes = quotesData;
if (filter !== ‘all’) {
filteredQuotes = filteredQuotes.filter(quote => quote.category === filter);
}
if (searchTerm) {
filteredQuotes = filteredQuotes.filter(quote =>
quote.text.toLowerCase().includes(searchTerm) ||
quote.tags.some(tag => tag.toLowerCase().includes(searchTerm))
);
}
displayedQuotes = filteredQuotes;
renderQuotes(displayedQuotes);
}
// Gestion du tri
function handleSort(e) {
const sortType = e.target.value;
let sortedQuotes = […displayedQuotes];
switch(sortType) {
case ‘popular’:
sortedQuotes.sort((a, b) => b.views – a.views);
break;
case ‘alphabetical’:
sortedQuotes.sort((a, b) => a.text.localeCompare(b.text));
break;
case ‘length’:
sortedQuotes.sort((a, b) => a.text.length – b.text.length);
break;
default: // recent
sortedQuotes.sort((a, b) => b.id – a.id);
}
displayedQuotes = sortedQuotes;
renderQuotes(displayedQuotes);
}
// Actions sur les citations
function toggleFavorite(id) {
const quote = quotesData.find(q => q.id === id);
if (quote) {
quote.favorited = !quote.favorited;
if (quote.favorited) {
quote.favorites++;
showToast(‘Citation ajoutée aux favoris ❤️’);
} else {
quote.favorites–;
showToast(‘Citation retirée des favoris’);
}
renderQuotes(displayedQuotes);
}
}
function shareQuote(id)