<li id="49det"><tbody id="49det"></tbody></li>
<rt id="49det"><noframes id="49det">

    <label id="49det"></label>
  1. \n \n
    \n
    \n\n\n\n

    Key Components:
    \nHeader:<\/p>\n\n

    Logo and Title: Incorporates a Font Awesome icon for a professional touch.
    \nSearch Bar: Allows users to search through your projects in real-time.
    \nTheme Toggle: Enables users to switch between dark and light modes.
    \nNavigation Filters: Buttons to filter projects by category.
    \nGallery:<\/p>\n\n

    Gallery Items: Each project is encapsulated within a gallery-item div, containing an image and an overlay with the project title and description.
    \nLightbox Modal:<\/p>\n\n

    Lightbox Structure: Displays an enlarged view of the project image along with detailed information when a gallery item is clicked.
    \nFooter:<\/p>\n\n

    Social Links: Provides links to your social media profiles and websites with corresponding icons.
    \nStyling with CSS
    \nTo achieve a modern and elegant look, we'll utilize CSS Grid for the gallery layout, flexbox for the header and navigation, and CSS variables for easy theming. We'll also implement responsive design to ensure the portfolio looks great on all devices.
    \n<\/p>\n\n

    \/* =====================================================================\n   1. CSS Variables for Theme Management\n   ===================================================================== *\/\n\n\/* Light Theme Colors *\/\n:root {\n  --color-bg-light: #f0f2f5;\n  --color-text-light: #333333;\n  --color-header-bg-light: #ffffff;\n  --color-header-text-light: #333333;\n  --color-overlay-light: rgba(0, 0, 0, 0.7);\n  --color-footer-bg-light: #ffffff;\n  --color-footer-text-light: #333333;\n  --color-button-bg-light: #e0e0e0;\n  --color-button-hover-light: #333333;\n  --color-button-text-light: #333333;\n  --color-button-hover-text-light: #ffffff;\n\n  \/* Font Sizes *\/\n  --font-size-base: 16px;\n  --font-size-large: 2.5rem;\n  --font-size-medium: 1.2rem;\n  --font-size-small: 0.9rem;\n\n  \/* Transition Duration *\/\n  --transition-duration: 0.3s;\n}\n\n\/* Dark Theme Colors *\/\nbody.dark-mode {\n  --color-bg-dark: #121212;\n  --color-text-dark: #e0e0e0;\n  --color-header-bg-dark: #1e1e1e;\n  --color-header-text-dark: #e0e0e0;\n  --color-overlay-dark: rgba(0, 0, 0, 0.85);\n  --color-footer-bg-dark: #1e1e1e;\n  --color-footer-text-dark: #e0e0e0;\n  --color-button-bg-dark: #333333;\n  --color-button-hover-dark: #ffffff;\n  --color-button-text-dark: #ffffff;\n  --color-button-hover-text-dark: #333333;\n}\n\n\/* =====================================================================\n   2. Reset and Base Styles\n   ===================================================================== *\/\n\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nbody {\n  font-family: 'Roboto', sans-serif;\n  background-color: var(--color-bg-light);\n  color: var(--color-text-light);\n  transition: background-color var(--transition-duration), color var(--transition-duration);\n  line-height: 1.6;\n}\n\n\/* Dark Mode Background and Text *\/\nbody.dark-mode {\n  background-color: var(--color-bg-dark);\n  color: var(--color-text-dark);\n}\n\n\/* =====================================================================\n   3. Header Styles\n   ===================================================================== *\/\n\nheader {\n  background-color: var(--color-header-bg-light);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n  position: sticky;\n  top: 0;\n  z-index: 1000;\n  transition: background-color var(--transition-duration), box-shadow var(--transition-duration);\n}\n\nbody.dark-mode header {\n  background-color: var(--color-header-bg-dark);\n  box-shadow: 0 2px 8px rgba(255, 255, 255, 0.1);\n}\n\n.header-container {\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 1.5rem 2rem;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n\nheader h1 {\n  font-size: var(--font-size-large);\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  color: var(--color-header-text-light);\n  transition: color var(--transition-duration);\n}\n\nbody.dark-mode .header-container h1 {\n  color: var(--color-header-text-dark);\n}\n\n.header-controls {\n  margin-top: 1rem;\n  display: flex;\n  gap: 1rem;\n  align-items: center;\n}\n\n#searchBar {\n  padding: 0.6rem 1.2rem;\n  border: 1px solid #ccc;\n  border-radius: 30px;\n  width: 250px;\n  transition: border-color var(--transition-duration), background-color var(--transition-duration), color var(--transition-duration);\n}\n\n#searchBar:focus {\n  border-color: #555;\n  outline: none;\n}\n\nbody.dark-mode #searchBar {\n  background-color: #2c2c2c;\n  color: #e0e0e0;\n  border: 1px solid #555;\n}\n\nbody.dark-mode #searchBar::placeholder {\n  color: #aaa;\n}\n\n#themeToggle {\n  background: none;\n  border: none;\n  cursor: pointer;\n  font-size: 1.5rem;\n  color: var(--color-button-text-light);\n  transition: color var(--transition-duration);\n}\n\nbody.dark-mode #themeToggle {\n  color: var(--color-button-text-dark);\n}\n\n#themeToggle:hover {\n  color: var(--color-button-hover-text-light);\n}\n\nbody.dark-mode #themeToggle:hover {\n  color: var(--color-button-hover-text-dark);\n}\n\n\/* =====================================================================\n   4. Navigation Styles\n   ===================================================================== *\/\n\nnav ul {\n  list-style: none;\n  display: flex;\n  justify-content: center;\n  gap: 1rem;\n  margin-top: 1rem;\n}\n\nnav .filter-btn {\n  padding: 0.6rem 1.2rem;\n  border: none;\n  background-color: var(--color-button-bg-light);\n  cursor: pointer;\n  transition: background-color var(--transition-duration), color var(--transition-duration), transform var(--transition-duration);\n  border-radius: 30px;\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: var(--font-size-medium);\n}\n\nnav .filter-btn:hover {\n  background-color: var(--color-button-hover-light);\n  color: var(--color-button-hover-text-light);\n  transform: translateY(-3px);\n}\n\nnav .filter-btn.active {\n  background-color: #333333;\n  color: #ffffff;\n}\n\nbody.dark-mode nav .filter-btn {\n  background-color: var(--color-button-bg-dark);\n  color: var(--color-button-text-dark);\n}\n\nbody.dark-mode nav .filter-btn:hover {\n  background-color: var(--color-button-hover-dark);\n  color: var(--color-button-hover-text-dark);\n}\n\nbody.dark-mode nav .filter-btn.active {\n  background-color: #ffffff;\n  color: #333333;\n}\n\n\/* =====================================================================\n   5. Gallery Styles\n   ===================================================================== *\/\n\n.gallery {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n  gap: 2rem;\n  padding: 3rem 2rem;\n  max-width: 1400px;\n  margin: 0 auto;\n}\n\n.gallery-item {\n  position: relative;\n  overflow: hidden;\n  border-radius: 20px;\n  cursor: pointer;\n  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.1);\n  transition: transform var(--transition-duration), box-shadow var(--transition-duration);\n}\n\n.gallery-item:hover {\n  transform: translateY(-15px);\n  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);\n}\n\n.gallery-item img {\n  width: 100%;\n  height: auto;\n  display: block;\n  transition: transform var(--transition-duration);\n}\n\n.gallery-item:hover img {\n  transform: scale(1.1);\n}\n\n.overlay {\n  position: absolute;\n  bottom: 0;\n  background: var(--color-overlay-light);\n  color: #ffffff;\n  width: 100%;\n  transform: translateY(100%);\n  transition: transform var(--transition-duration), background-color var(--transition-duration);\n  padding: 1.2rem;\n  text-align: center;\n}\n\n.gallery-item:hover .overlay {\n  transform: translateY(0);\n}\n\nbody.dark-mode .overlay {\n  background: var(--color-overlay-dark);\n}\n\n.overlay h3 {\n  margin-bottom: 0.6rem;\n  font-size: var(--font-size-medium);\n  font-weight: 700;\n}\n\n.overlay p {\n  font-size: var(--font-size-small);\n  line-height: 1.4;\n}\n\n\/* =====================================================================\n   6. Lightbox Styles\n   ===================================================================== *\/\n\n.lightbox {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0, 0, 0, 0.95);\n  display: none;\n  justify-content: center;\n  align-items: center;\n  z-index: 2000;\n  animation: fadeIn 0.3s ease;\n}\n\n.lightbox.active {\n  display: flex;\n}\n\n.lightbox-content {\n  position: relative;\n  max-width: 80%;\n  max-height: 80%;\n  background-color: #ffffff;\n  border-radius: 15px;\n  overflow: hidden;\n  animation: slideDown 0.3s ease;\n  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);\n}\n\nbody.dark-mode .lightbox-content {\n  background-color: #1e1e1e;\n  color: #e0e0e0;\n}\n\n.lightbox img {\n  width: 100%;\n  height: auto;\n  display: block;\n}\n\n.lightbox-caption {\n  padding: 1.5rem;\n  background-color: #f9f9f9;\n  transition: background-color var(--transition-duration), color var(--transition-duration);\n}\n\nbody.dark-mode .lightbox-caption {\n  background-color: #2c2c2c;\n}\n\n.lightbox-caption h3 {\n  margin-bottom: 0.8rem;\n  font-size: var(--font-size-medium);\n}\n\n.lightbox-caption p {\n  font-size: var(--font-size-small);\n  line-height: 1.5;\n}\n\n\/* Close Button Styles *\/\n.close {\n  position: absolute;\n  top: 20px;\n  right: 25px;\n  color: #ffffff;\n  font-size: 2rem;\n  cursor: pointer;\n  transition: color var(--transition-duration), transform var(--transition-duration);\n}\n\n.close:hover {\n  color: #cccccc;\n  transform: scale(1.1);\n}\n\nbody.dark-mode .close {\n  color: #e0e0e0;\n}\n\nbody.dark-mode .close:hover {\n  color: #ffffff;\n}\n\n\/* =====================================================================\n   7. Footer Styles\n   ===================================================================== *\/\n\nfooter {\n  text-align: center;\n  padding: 2rem 1rem;\n  background-color: var(--color-footer-bg-light);\n  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\n  margin-top: 3rem;\n  transition: background-color var(--transition-duration), box-shadow var(--transition-duration);\n}\n\nbody.dark-mode footer {\n  background-color: var(--color-footer-bg-dark);\n  box-shadow: 0 -2px 8px rgba(255, 255, 255, 0.1);\n}\n\nfooter p {\n  font-size: var(--font-size-small);\n  color: var(--color-footer-text-light);\n  transition: color var(--transition-duration);\n}\n\nbody.dark-mode footer p {\n  color: var(--color-footer-text-dark);\n}\n\nfooter a {\n  color: inherit;\n  text-decoration: none;\n  margin: 0 0.5rem;\n  transition: color var(--transition-duration), transform var(--transition-duration);\n}\n\nfooter a:hover {\n  color: #0073e6;\n  transform: scale(1.05);\n}\n\nbody.dark-mode footer a:hover {\n  color: #1e90ff;\n}\n\n\/* =====================================================================\n   8. Responsive Design Adjustments\n   ===================================================================== *\/\n\n@media (max-width: 768px) {\n  header h1 {\n    font-size: 2rem;\n  }\n\n  .header-controls {\n    flex-direction: column;\n    gap: 0.5rem;\n  }\n\n  #searchBar {\n    width: 200px;\n  }\n\n  nav ul {\n    flex-direction: column;\n    gap: 0.5rem;\n  }\n\n  .gallery {\n    padding: 2rem 1rem;\n    gap: 1.5rem;\n  }\n\n  .lightbox-content {\n    max-width: 90%;\n    max-height: 90%;\n  }\n}\n\n@media (max-width: 480px) {\n  header h1 {\n    font-size: 1.8rem;\n  }\n\n  #searchBar {\n    width: 180px;\n  }\n\n  .gallery-item {\n    border-radius: 10px;\n  }\n\n  .overlay h3 {\n    font-size: 1rem;\n  }\n\n  .overlay p {\n    font-size: 0.8rem;\n  }\n\n  .lightbox-caption {\n    padding: 1rem;\n  }\n\n  .lightbox-caption h3 {\n    font-size: 1rem;\n  }\n\n  .lightbox-caption p {\n    font-size: 0.8rem;\n  }\n\n  footer p {\n    font-size: 0.8rem;\n  }\n}\n\n\/* =====================================================================\n   9. Keyframe Animations\n   ===================================================================== *\/\n\n@keyframes fadeIn {\n  from { opacity: 0; }\n  to { opacity: 1; }\n}\n\n@keyframes slideDown {\n  from { transform: translateY(-30px); opacity: 0; }\n  to { transform: translateY(0); opacity: 1; }\n}\n<\/pre>\n\n\n\n

    ?? ?? ??:
    \n?? ??? ?? CSS ??:<\/p>\n\n

    ?? ?? ? ??? ?? ??: CSS ??? ???? ?? ??????? ??? ?? ???? ??? ??? ??? ? ????.
    \n???? ?????? ? ????:<\/p>\n\n

    ?? ?? ? ? ??: ??? ?? ??? ?? ??? ??? ???? ???? ?????.
    \n?? ??? ? ??: ??? ??? ???? ?? ???? ??? ??? ?????.
    \n??? ???:<\/p>\n\n

    ??? ??: ?????? ??? ?? ??? ???? ???? ??? ??, ???, ?????? ??? ?? ??? ????? ?????.
    \n????? ??:<\/p>\n\n

    ?? ??: ??? ?? ?? ? ??? ???? ?? ??? ?? ????? ????? ?????.
    \n???? ??: ?? ?? ? ????? ?????? ?? ??? ????? ????? ????? ???.
    \n??? ?? ??:<\/p>\n\n

    ?? ??: ???? ?? ???? ??? ??? ??? ??????.
    \n????? ?? ?? ??: ??? ????? ??? ??? ?? ???? ?? ?? ??? ? ??? ???? ?????.
    \nJavaScript? ???? ??
    \nJavaScript? ???? ???, ????? ??, ?? ??? ??? ?? ? ?? ?? ??? ?? ??? ???? ?????? ??? ??????.
    \n<\/p>\n\n

    \/\/ =====================================================================\n\/\/ 1. Selecting Elements\n\/\/ =====================================================================\n\nconst filterButtons = document.querySelectorAll('.filter-btn');\nconst galleryItems = document.querySelectorAll('.gallery-item');\nconst searchBar = document.getElementById('searchBar');\n\nconst lightbox = document.getElementById('lightbox');\nconst lightboxImg = document.getElementById('lightbox-img');\nconst lightboxTitle = document.getElementById('lightbox-title');\nconst lightboxDescription = document.getElementById('lightbox-description');\nconst closeBtn = document.querySelector('.close');\n\nconst themeToggleBtn = document.getElementById('themeToggle');\nconst body = document.body;\nconst header = document.querySelector('header');\nconst galleryItemsArray = Array.from(galleryItems);\nconst lightboxContent = document.querySelector('.lightbox-content');\nconst overlayElements = document.querySelectorAll('.overlay');\nconst filterBtns = document.querySelectorAll('.filter-btn');\n\n\/\/ =====================================================================\n\/\/ 2. Filtering Functionality\n\/\/ =====================================================================\n\nfunction filterGallery() {\n  const activeFilter = document.querySelector('.filter-btn.active').getAttribute('data-filter');\n  const searchQuery = searchBar.value.toLowerCase();\n\n  galleryItems.forEach(item => {\n    const itemCategory = item.getAttribute('data-category');\n    const itemTitle = item.querySelector('.overlay h3').textContent.toLowerCase();\n\n    if (\n      (activeFilter === 'all' || itemCategory === activeFilter) &&\n      itemTitle.includes(searchQuery)\n    ) {\n      item.style.display = 'block';\n    } else {\n      item.style.display = 'none';\n    }\n  });\n}\n\n\/\/ Event Listeners for Filter Buttons\nfilterButtons.forEach(button => {\n  button.addEventListener('click', () => {\n    \/\/ Remove 'active' class from all buttons\n    filterButtons.forEach(btn => btn.classList.remove('active'));\n    \/\/ Add 'active' class to the clicked button\n    button.classList.add('active');\n\n    \/\/ Filter the gallery based on the selected category\n    filterGallery();\n  });\n});\n\n\/\/ Event Listener for Search Bar\nsearchBar.addEventListener('input', () => {\n  filterGallery();\n});\n\n\/\/ =====================================================================\n\/\/ 3. Lightbox Functionality\n\/\/ =====================================================================\n\n\/\/ Function to Open Lightbox\nfunction openLightbox(item) {\n  const imgSrc = item.querySelector('img').src;\n  const title = item.querySelector('.overlay h3').textContent;\n  const description = item.querySelector('.overlay p').textContent;\n\n  lightboxImg.src = imgSrc;\n  lightboxTitle.textContent = title;\n  lightboxDescription.textContent = description;\n\n  lightbox.classList.add('active');\n  body.style.overflow = 'hidden'; \/\/ Prevent background scrolling\n}\n\n\/\/ Event Listeners for Gallery Items\ngalleryItems.forEach(item => {\n  item.addEventListener('click', () => {\n    openLightbox(item);\n  });\n});\n\n\/\/ Function to Close Lightbox\nfunction closeLightbox() {\n  lightbox.classList.remove('active');\n  body.style.overflow = 'auto'; \/\/ Restore background scrolling\n}\n\n\/\/ Event Listener for Close Button\ncloseBtn.addEventListener('click', () => {\n  closeLightbox();\n});\n\n\/\/ Event Listener for Clicking Outside Lightbox Content\nwindow.addEventListener('click', (e) => {\n  if (e.target === lightbox) {\n    closeLightbox();\n  }\n});\n\n\/\/ =====================================================================\n\/\/ 4. Theme Toggle Functionality\n\/\/ =====================================================================\n\n\/\/ Retrieve Saved Theme from Local Storage\nconst savedTheme = localStorage.getItem('theme') || 'light-mode';\n\n\/\/ Function to Apply Theme\nfunction applyTheme(theme) {\n  if (theme === 'dark-mode') {\n    body.classList.add('dark-mode');\n    header.classList.add('dark-mode');\n    lightbox.classList.add('dark-mode');\n    lightboxContent.classList.add('dark-mode');\n    overlayElements.forEach(el => el.classList.add('dark-mode'));\n    galleryItemsArray.forEach(item => item.classList.add('dark-mode'));\n    filterBtns.forEach(btn => btn.classList.add('dark-mode'));\n\n    \/\/ Change Icon to Sun\n    themeToggleBtn.querySelector('i').classList.remove('fa-moon');\n    themeToggleBtn.querySelector('i').classList.add('fa-sun');\n  } else {\n    body.classList.remove('dark-mode');\n    header.classList.remove('dark-mode');\n    lightbox.classList.remove('dark-mode');\n    lightboxContent.classList.remove('dark-mode');\n    overlayElements.forEach(el => el.classList.remove('dark-mode'));\n    galleryItemsArray.forEach(item => item.classList.remove('dark-mode'));\n    filterBtns.forEach(btn => btn.classList.remove('dark-mode'));\n\n    \/\/ Change Icon to Moon\n    themeToggleBtn.querySelector('i').classList.remove('fa-sun');\n    themeToggleBtn.querySelector('i').classList.add('fa-moon');\n  }\n}\n\n\/\/ Apply Saved Theme on Page Load\napplyTheme(savedTheme);\n\n\/\/ Event Listener for Theme Toggle Button\nthemeToggleBtn.addEventListener('click', () => {\n  if (body.classList.contains('dark-mode')) {\n    applyTheme('light-mode');\n    localStorage.setItem('theme', 'light-mode');\n  } else {\n    applyTheme('dark-mode');\n    localStorage.setItem('theme', 'dark-mode');\n  }\n});\n<\/pre>\n\n\n\n

    ?? ??:
    \n???? ???:<\/p>\n\n

    ???? ?? ???: ???? ? ???, ??? ???, ??? ?? ?????? ????? ???? ? ????.
    \n??? ??: ???? ??? ???? ????? ????? ??? ??? ??????.
    \n????? ??:<\/p>\n\n

    ??? ??: ????? ???? ? ? ???? ??? ??? ???? ??? ????.
    \n??? ??: ???? ?? ??? ????? ??? ?? ??? ???? ??? ?? ?? ? ????.
    \n??\/??? ?? ??:<\/p>\n

    ??? ?? ??: ???? ?? ??? ?? ???? ?? localStorage? ?? ??? ???? ??? ??? ?? ?? ??? ??? ? ????.
    \n??? ??: ?? ?? ???? ?? ??? ???? ???? ?????.
    \n??\/??? ?? ??
    \n?? ??? ???? ?? ??? ??? ?? ??? ??? ????? ???? ???? ??????. ?????? ???\/?? ?? ??? ???? ??? ??? ????.<\/p>\n\n

    CSS ??: ?? ??? ??? ??? ?? ??? ?? ??????.
    \nJavaScript ??: script.js? ?? ?? ???? ?? ? ??? ???? ?? ?? ??? ?????.
    \n???? ??? ?? ??: localStorage? ???? ???? ?? ?? ??? ???? ?? ?? ? ?????.
    \n??? ?? ??: ?? ? ???
    \n?? ???? ??? ???? ?? ???? ????? ?? ??? ? ????.<\/p>\n\n

    ????? ???: ???? ?? ??? ???? ?? ???? ?? ????? ? ? ????.
    \n??? ??: ???? ???? ???? ?? ??? ?? ????? ????? ????? ???? ???? ?????.
    \n???? ???? ?? ???
    \n??? ?????? ???? ???? ?? ???? ??? ? ??? ???.<\/p>\n\n

    ??? ???:<\/p>\n\n

    ??? ????: CSS Grid? Flexbox? ???? ???? ??? ?? ??? ?? ?????.
    \n??? ??: ??? ??? ?? ?? ??? ?? ?? ??, ?? ? ????? ?????.
    \n???:<\/p>\n\n

    ???? ?? ???: ???? ?? ??? ?? ??? ???? ??????.
    \n??? ??: ???? ?? ?? ??? ??? ??? ? ??? ?????.
    \n?? ??: ???? ?? ???? ?? ??? ?? ?? ??? ?????.
    \n????? ??
    \n?????? ?????? ?? ? ??? ? ? ??? ??? ?????.<\/p>\n\n

    ??? ???:<\/p>\n\n

    GitHub ???: ?? ????? ?? ?? ??? ???
    \nNetlify: ??? ??? ???? ???? ??? ?? ???? ?????.
    \nVercel: ????? ????? ??? ??? ?????.
    \n?? ???:<\/p>\n\n

    ? ????? ??? ?? ?????? ???? ?? ???? ?????.
    \nSEO ???:<\/p>\n\n

    ?? ?? ?? ??, ??, ??? ?????.
    \n???? ???? CSS\/JS ??? ???? ?? ??? ??????.
    \n????? ??
    \n?? ?????? ??? ?? ? ?? ??? ?????. ???? ?? ???? ??? ? ????.<\/p>\n\n

    ?? ???:<\/p>\n\n

    LinkedIn, Twitter, Facebook ?? ????? ?????? ?????.
    \n?? ????? ???? ???? ????.
    \n????:<\/p>\n\n

    Reddit, Stack Overflow ?? Dribbble?? ????? ?????.
    \n?? ?? ???? ???? ???? ???? ??? ??? ?????.
    \nSEO ? ??? ???:<\/p>\n

    ??? ??? ??? ???? ???? ???? ???? ?????.
    \n?? ???? ???? ?? ??? ?? ?????? ??????.
    \n??? ??:<\/p>\n\n

    ??? ??? ????? ??? ???? ????? ?????.
    \n??
    \n??? ????? ????? ???? ??? ?? ????? ???? ???? ??? ??? ????? ???? ?? ?? ?????. HTML5, CSS3 ? JavaScript? ???? ??? ???? ?? ?? ??? ? ?? ?????? ??? ? ????.<\/p>\n\n

    ? ?? ? ????:
    \n????: ??? ?? ???
    \nGladiatorsBattle: Gladiatorsbattle.com
    \nDiv?: divweb.fr
    \n???: @GladiatorsBT
    \nJeanFernandsEtti: jeanfernandsetti.fr
    \nXavierFlabat: xavier-flabat.com
    \n? ?? ??? ??? ?? ????? ? ????? ???? ? ????? ???? ?? ??? ?????. ?? ?? ??? ??? ??? ?? ????!<\/p>\n\n

    ??? ??? ???? ?????? ??? ???? ????! ??<\/p>\n\n

    ????
    \nPierre-Romain Lopez? ?? ??? ?? ??? ??? ????? ??? ???? ??? ??? ??? ?? ???? ???? ? ????? ???????. ? ???, ??? ???, ??? ???? ??? ?????? ?? Pierre-Romain? ??? ???? ?? ???? ??? ???? ? ??? ??? ?????.<\/p>\n\n\n \n\n \n "}

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    ? ? ????? JS ???? HTMLCSS ? JavaScript? ???? ??? ??? ????? ??? ??

    HTMLCSS ? JavaScript? ???? ??? ??? ????? ??? ??

    Nov 17, 2024 pm 09:25 PM

    Building an Elegant Interactive Portfolio Gallery with HTMLCSSand JavaScript

    ???? ??? ??? ?????? ???? ?? ??? ???. ??? ? ???, ??? ????, ???? ?? ?? ???? ????? ???? ??? ??? ?????? ??? ??? ???? ?? ????? ??? ??? ???? ?? ???? ???? ??? ? ????. ? ??????? HTML5, CSS3 ? JavaScript? ???? ???? ??? ?????? ??? ??? ?????. ?????? ?? ???, ??? ?? ?, ??/??? ?? ??, ????? ????? ??? ? ?? ???? ????? ??? ?? ??? ???? ?? ? ????.

    ?? 1: ??? ????? ????? ??? ????

    ??

    1. ????? ?????? ??? ??
    2. ????
    3. ???? ?? ??
    4. HTML ?? ??
    5. CSS? ??? ????
    6. JavaScript? ???? ??
    7. ??/??? ?? ??
    8. ??? ?? ??: ?? ? ???
    9. ???? ??? ???
    10. ????? ??
    11. ????? ??
    12. ??
    13. ????? ?????? ??? ??
    14. ??? ?????? ??? ????? ???? ? ??? ??? ???. ???? ??? ???? ??? ???? ??? ????? ????? ????? ?????? ??? ??? ?????. ???, ?? ?, ???/?? ??? ?? ??? ??? ??? ??? ???? ?? ??? ?? ? ?? ??? ?? ???? ?????.

    ????
    ????? ??? ???? ?? ?? ??? ?????.

    HTML, CSS, JavaScript? ?? ?? ??: ?? ??? ???? ?? ?????.
    ?? ???: Visual Studio Code, Sublime Text, Atom? ?? ??? ?????.
    ? ????: ??? ??? ?? Google Chrome ?? Mozilla Firefox? ?? ?? ????.
    ???? ???: ??? ??? ? ?? ??? ?????.
    ???? ?? ??
    ?? ???? ???? ?? ???? ??? ????? ?????.

    ????? ???/

    ├── index.html
    ├──styles.css
    ├── script.js
    └── ??/
    └── ???/
    ├── web-project1.jpg
    ├── graphic-project1.jpg
    └── photography-project1.jpg
    index.html: ?? HTML ?????.
    styles.css: ?? CSS ???? ?????.
    script.js: ????? ?? JavaScript ??? ?????.
    ??/???/: ???? ???? ???????.
    HTML ?? ??
    ?????? ?? ??? HTML ??? ??? ??? ?????. ??? ??? ?? ??? ?????? ??? ??????? SEO? ????? ????.

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>Elegant Interactive Portfolio Gallery</title>
      <!-- Font Awesome for Icons -->
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
      <!-- Google Fonts for Typography -->
      <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
      <!-- Stylesheet -->
      <link rel="stylesheet" href="styles.css">
    </head>
    <body>
      <!-- Header Section -->
      <header>
        <div>
    
    
    
    <p>Key Components:<br>
    Header:</p>
    
    <p>Logo and Title: Incorporates a Font Awesome icon for a professional touch.<br>
    Search Bar: Allows users to search through your projects in real-time.<br>
    Theme Toggle: Enables users to switch between dark and light modes.<br>
    Navigation Filters: Buttons to filter projects by category.<br>
    Gallery:</p>
    
    <p>Gallery Items: Each project is encapsulated within a gallery-item div, containing an image and an overlay with the project title and description.<br>
    Lightbox Modal:</p>
    
    <p>Lightbox Structure: Displays an enlarged view of the project image along with detailed information when a gallery item is clicked.<br>
    Footer:</p>
    
    <p>Social Links: Provides links to your social media profiles and websites with corresponding icons.<br>
    Styling with CSS<br>
    To achieve a modern and elegant look, we'll utilize CSS Grid for the gallery layout, flexbox for the header and navigation, and CSS variables for easy theming. We'll also implement responsive design to ensure the portfolio looks great on all devices.<br>
    </p>
    
    <pre class="brush:php;toolbar:false">/* =====================================================================
       1. CSS Variables for Theme Management
       ===================================================================== */
    
    /* Light Theme Colors */
    :root {
      --color-bg-light: #f0f2f5;
      --color-text-light: #333333;
      --color-header-bg-light: #ffffff;
      --color-header-text-light: #333333;
      --color-overlay-light: rgba(0, 0, 0, 0.7);
      --color-footer-bg-light: #ffffff;
      --color-footer-text-light: #333333;
      --color-button-bg-light: #e0e0e0;
      --color-button-hover-light: #333333;
      --color-button-text-light: #333333;
      --color-button-hover-text-light: #ffffff;
    
      /* Font Sizes */
      --font-size-base: 16px;
      --font-size-large: 2.5rem;
      --font-size-medium: 1.2rem;
      --font-size-small: 0.9rem;
    
      /* Transition Duration */
      --transition-duration: 0.3s;
    }
    
    /* Dark Theme Colors */
    body.dark-mode {
      --color-bg-dark: #121212;
      --color-text-dark: #e0e0e0;
      --color-header-bg-dark: #1e1e1e;
      --color-header-text-dark: #e0e0e0;
      --color-overlay-dark: rgba(0, 0, 0, 0.85);
      --color-footer-bg-dark: #1e1e1e;
      --color-footer-text-dark: #e0e0e0;
      --color-button-bg-dark: #333333;
      --color-button-hover-dark: #ffffff;
      --color-button-text-dark: #ffffff;
      --color-button-hover-text-dark: #333333;
    }
    
    /* =====================================================================
       2. Reset and Base Styles
       ===================================================================== */
    
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    body {
      font-family: 'Roboto', sans-serif;
      background-color: var(--color-bg-light);
      color: var(--color-text-light);
      transition: background-color var(--transition-duration), color var(--transition-duration);
      line-height: 1.6;
    }
    
    /* Dark Mode Background and Text */
    body.dark-mode {
      background-color: var(--color-bg-dark);
      color: var(--color-text-dark);
    }
    
    /* =====================================================================
       3. Header Styles
       ===================================================================== */
    
    header {
      background-color: var(--color-header-bg-light);
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
      position: sticky;
      top: 0;
      z-index: 1000;
      transition: background-color var(--transition-duration), box-shadow var(--transition-duration);
    }
    
    body.dark-mode header {
      background-color: var(--color-header-bg-dark);
      box-shadow: 0 2px 8px rgba(255, 255, 255, 0.1);
    }
    
    .header-container {
      max-width: 1200px;
      margin: 0 auto;
      padding: 1.5rem 2rem;
      display: flex;
      flex-direction: column;
      align-items: center;
    }
    
    header h1 {
      font-size: var(--font-size-large);
      display: flex;
      align-items: center;
      gap: 0.5rem;
      color: var(--color-header-text-light);
      transition: color var(--transition-duration);
    }
    
    body.dark-mode .header-container h1 {
      color: var(--color-header-text-dark);
    }
    
    .header-controls {
      margin-top: 1rem;
      display: flex;
      gap: 1rem;
      align-items: center;
    }
    
    #searchBar {
      padding: 0.6rem 1.2rem;
      border: 1px solid #ccc;
      border-radius: 30px;
      width: 250px;
      transition: border-color var(--transition-duration), background-color var(--transition-duration), color var(--transition-duration);
    }
    
    #searchBar:focus {
      border-color: #555;
      outline: none;
    }
    
    body.dark-mode #searchBar {
      background-color: #2c2c2c;
      color: #e0e0e0;
      border: 1px solid #555;
    }
    
    body.dark-mode #searchBar::placeholder {
      color: #aaa;
    }
    
    #themeToggle {
      background: none;
      border: none;
      cursor: pointer;
      font-size: 1.5rem;
      color: var(--color-button-text-light);
      transition: color var(--transition-duration);
    }
    
    body.dark-mode #themeToggle {
      color: var(--color-button-text-dark);
    }
    
    #themeToggle:hover {
      color: var(--color-button-hover-text-light);
    }
    
    body.dark-mode #themeToggle:hover {
      color: var(--color-button-hover-text-dark);
    }
    
    /* =====================================================================
       4. Navigation Styles
       ===================================================================== */
    
    nav ul {
      list-style: none;
      display: flex;
      justify-content: center;
      gap: 1rem;
      margin-top: 1rem;
    }
    
    nav .filter-btn {
      padding: 0.6rem 1.2rem;
      border: none;
      background-color: var(--color-button-bg-light);
      cursor: pointer;
      transition: background-color var(--transition-duration), color var(--transition-duration), transform var(--transition-duration);
      border-radius: 30px;
      display: flex;
      align-items: center;
      gap: 0.5rem;
      font-size: var(--font-size-medium);
    }
    
    nav .filter-btn:hover {
      background-color: var(--color-button-hover-light);
      color: var(--color-button-hover-text-light);
      transform: translateY(-3px);
    }
    
    nav .filter-btn.active {
      background-color: #333333;
      color: #ffffff;
    }
    
    body.dark-mode nav .filter-btn {
      background-color: var(--color-button-bg-dark);
      color: var(--color-button-text-dark);
    }
    
    body.dark-mode nav .filter-btn:hover {
      background-color: var(--color-button-hover-dark);
      color: var(--color-button-hover-text-dark);
    }
    
    body.dark-mode nav .filter-btn.active {
      background-color: #ffffff;
      color: #333333;
    }
    
    /* =====================================================================
       5. Gallery Styles
       ===================================================================== */
    
    .gallery {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 2rem;
      padding: 3rem 2rem;
      max-width: 1400px;
      margin: 0 auto;
    }
    
    .gallery-item {
      position: relative;
      overflow: hidden;
      border-radius: 20px;
      cursor: pointer;
      box-shadow: 0 6px 18px rgba(0, 0, 0, 0.1);
      transition: transform var(--transition-duration), box-shadow var(--transition-duration);
    }
    
    .gallery-item:hover {
      transform: translateY(-15px);
      box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
    }
    
    .gallery-item img {
      width: 100%;
      height: auto;
      display: block;
      transition: transform var(--transition-duration);
    }
    
    .gallery-item:hover img {
      transform: scale(1.1);
    }
    
    .overlay {
      position: absolute;
      bottom: 0;
      background: var(--color-overlay-light);
      color: #ffffff;
      width: 100%;
      transform: translateY(100%);
      transition: transform var(--transition-duration), background-color var(--transition-duration);
      padding: 1.2rem;
      text-align: center;
    }
    
    .gallery-item:hover .overlay {
      transform: translateY(0);
    }
    
    body.dark-mode .overlay {
      background: var(--color-overlay-dark);
    }
    
    .overlay h3 {
      margin-bottom: 0.6rem;
      font-size: var(--font-size-medium);
      font-weight: 700;
    }
    
    .overlay p {
      font-size: var(--font-size-small);
      line-height: 1.4;
    }
    
    /* =====================================================================
       6. Lightbox Styles
       ===================================================================== */
    
    .lightbox {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.95);
      display: none;
      justify-content: center;
      align-items: center;
      z-index: 2000;
      animation: fadeIn 0.3s ease;
    }
    
    .lightbox.active {
      display: flex;
    }
    
    .lightbox-content {
      position: relative;
      max-width: 80%;
      max-height: 80%;
      background-color: #ffffff;
      border-radius: 15px;
      overflow: hidden;
      animation: slideDown 0.3s ease;
      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    }
    
    body.dark-mode .lightbox-content {
      background-color: #1e1e1e;
      color: #e0e0e0;
    }
    
    .lightbox img {
      width: 100%;
      height: auto;
      display: block;
    }
    
    .lightbox-caption {
      padding: 1.5rem;
      background-color: #f9f9f9;
      transition: background-color var(--transition-duration), color var(--transition-duration);
    }
    
    body.dark-mode .lightbox-caption {
      background-color: #2c2c2c;
    }
    
    .lightbox-caption h3 {
      margin-bottom: 0.8rem;
      font-size: var(--font-size-medium);
    }
    
    .lightbox-caption p {
      font-size: var(--font-size-small);
      line-height: 1.5;
    }
    
    /* Close Button Styles */
    .close {
      position: absolute;
      top: 20px;
      right: 25px;
      color: #ffffff;
      font-size: 2rem;
      cursor: pointer;
      transition: color var(--transition-duration), transform var(--transition-duration);
    }
    
    .close:hover {
      color: #cccccc;
      transform: scale(1.1);
    }
    
    body.dark-mode .close {
      color: #e0e0e0;
    }
    
    body.dark-mode .close:hover {
      color: #ffffff;
    }
    
    /* =====================================================================
       7. Footer Styles
       ===================================================================== */
    
    footer {
      text-align: center;
      padding: 2rem 1rem;
      background-color: var(--color-footer-bg-light);
      box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
      margin-top: 3rem;
      transition: background-color var(--transition-duration), box-shadow var(--transition-duration);
    }
    
    body.dark-mode footer {
      background-color: var(--color-footer-bg-dark);
      box-shadow: 0 -2px 8px rgba(255, 255, 255, 0.1);
    }
    
    footer p {
      font-size: var(--font-size-small);
      color: var(--color-footer-text-light);
      transition: color var(--transition-duration);
    }
    
    body.dark-mode footer p {
      color: var(--color-footer-text-dark);
    }
    
    footer a {
      color: inherit;
      text-decoration: none;
      margin: 0 0.5rem;
      transition: color var(--transition-duration), transform var(--transition-duration);
    }
    
    footer a:hover {
      color: #0073e6;
      transform: scale(1.05);
    }
    
    body.dark-mode footer a:hover {
      color: #1e90ff;
    }
    
    /* =====================================================================
       8. Responsive Design Adjustments
       ===================================================================== */
    
    @media (max-width: 768px) {
      header h1 {
        font-size: 2rem;
      }
    
      .header-controls {
        flex-direction: column;
        gap: 0.5rem;
      }
    
      #searchBar {
        width: 200px;
      }
    
      nav ul {
        flex-direction: column;
        gap: 0.5rem;
      }
    
      .gallery {
        padding: 2rem 1rem;
        gap: 1.5rem;
      }
    
      .lightbox-content {
        max-width: 90%;
        max-height: 90%;
      }
    }
    
    @media (max-width: 480px) {
      header h1 {
        font-size: 1.8rem;
      }
    
      #searchBar {
        width: 180px;
      }
    
      .gallery-item {
        border-radius: 10px;
      }
    
      .overlay h3 {
        font-size: 1rem;
      }
    
      .overlay p {
        font-size: 0.8rem;
      }
    
      .lightbox-caption {
        padding: 1rem;
      }
    
      .lightbox-caption h3 {
        font-size: 1rem;
      }
    
      .lightbox-caption p {
        font-size: 0.8rem;
      }
    
      footer p {
        font-size: 0.8rem;
      }
    }
    
    /* =====================================================================
       9. Keyframe Animations
       ===================================================================== */
    
    @keyframes fadeIn {
      from { opacity: 0; }
      to { opacity: 1; }
    }
    
    @keyframes slideDown {
      from { transform: translateY(-30px); opacity: 0; }
      to { transform: translateY(0); opacity: 1; }
    }
    

    ?? ?? ??:
    ?? ??? ?? CSS ??:

    ?? ?? ? ??? ?? ??: CSS ??? ???? ?? ??????? ??? ?? ???? ??? ??? ??? ? ????.
    ???? ?????? ? ????:

    ?? ?? ? ? ??: ??? ?? ??? ?? ??? ??? ???? ???? ?????.
    ?? ??? ? ??: ??? ??? ???? ?? ???? ??? ??? ?????.
    ??? ???:

    ??? ??: ?????? ??? ?? ??? ???? ???? ??? ??, ???, ?????? ??? ?? ??? ????? ?????.
    ????? ??:

    ?? ??: ??? ?? ?? ? ??? ???? ?? ??? ?? ????? ????? ?????.
    ???? ??: ?? ?? ? ????? ?????? ?? ??? ????? ????? ????? ???.
    ??? ?? ??:

    ?? ??: ???? ?? ???? ??? ??? ??? ??????.
    ????? ?? ?? ??: ??? ????? ??? ??? ?? ???? ?? ?? ??? ? ??? ???? ?????.
    JavaScript? ???? ??
    JavaScript? ???? ???, ????? ??, ?? ??? ??? ?? ? ?? ?? ??? ?? ??? ???? ?????? ??? ??????.

    // =====================================================================
    // 1. Selecting Elements
    // =====================================================================
    
    const filterButtons = document.querySelectorAll('.filter-btn');
    const galleryItems = document.querySelectorAll('.gallery-item');
    const searchBar = document.getElementById('searchBar');
    
    const lightbox = document.getElementById('lightbox');
    const lightboxImg = document.getElementById('lightbox-img');
    const lightboxTitle = document.getElementById('lightbox-title');
    const lightboxDescription = document.getElementById('lightbox-description');
    const closeBtn = document.querySelector('.close');
    
    const themeToggleBtn = document.getElementById('themeToggle');
    const body = document.body;
    const header = document.querySelector('header');
    const galleryItemsArray = Array.from(galleryItems);
    const lightboxContent = document.querySelector('.lightbox-content');
    const overlayElements = document.querySelectorAll('.overlay');
    const filterBtns = document.querySelectorAll('.filter-btn');
    
    // =====================================================================
    // 2. Filtering Functionality
    // =====================================================================
    
    function filterGallery() {
      const activeFilter = document.querySelector('.filter-btn.active').getAttribute('data-filter');
      const searchQuery = searchBar.value.toLowerCase();
    
      galleryItems.forEach(item => {
        const itemCategory = item.getAttribute('data-category');
        const itemTitle = item.querySelector('.overlay h3').textContent.toLowerCase();
    
        if (
          (activeFilter === 'all' || itemCategory === activeFilter) &&
          itemTitle.includes(searchQuery)
        ) {
          item.style.display = 'block';
        } else {
          item.style.display = 'none';
        }
      });
    }
    
    // Event Listeners for Filter Buttons
    filterButtons.forEach(button => {
      button.addEventListener('click', () => {
        // Remove 'active' class from all buttons
        filterButtons.forEach(btn => btn.classList.remove('active'));
        // Add 'active' class to the clicked button
        button.classList.add('active');
    
        // Filter the gallery based on the selected category
        filterGallery();
      });
    });
    
    // Event Listener for Search Bar
    searchBar.addEventListener('input', () => {
      filterGallery();
    });
    
    // =====================================================================
    // 3. Lightbox Functionality
    // =====================================================================
    
    // Function to Open Lightbox
    function openLightbox(item) {
      const imgSrc = item.querySelector('img').src;
      const title = item.querySelector('.overlay h3').textContent;
      const description = item.querySelector('.overlay p').textContent;
    
      lightboxImg.src = imgSrc;
      lightboxTitle.textContent = title;
      lightboxDescription.textContent = description;
    
      lightbox.classList.add('active');
      body.style.overflow = 'hidden'; // Prevent background scrolling
    }
    
    // Event Listeners for Gallery Items
    galleryItems.forEach(item => {
      item.addEventListener('click', () => {
        openLightbox(item);
      });
    });
    
    // Function to Close Lightbox
    function closeLightbox() {
      lightbox.classList.remove('active');
      body.style.overflow = 'auto'; // Restore background scrolling
    }
    
    // Event Listener for Close Button
    closeBtn.addEventListener('click', () => {
      closeLightbox();
    });
    
    // Event Listener for Clicking Outside Lightbox Content
    window.addEventListener('click', (e) => {
      if (e.target === lightbox) {
        closeLightbox();
      }
    });
    
    // =====================================================================
    // 4. Theme Toggle Functionality
    // =====================================================================
    
    // Retrieve Saved Theme from Local Storage
    const savedTheme = localStorage.getItem('theme') || 'light-mode';
    
    // Function to Apply Theme
    function applyTheme(theme) {
      if (theme === 'dark-mode') {
        body.classList.add('dark-mode');
        header.classList.add('dark-mode');
        lightbox.classList.add('dark-mode');
        lightboxContent.classList.add('dark-mode');
        overlayElements.forEach(el => el.classList.add('dark-mode'));
        galleryItemsArray.forEach(item => item.classList.add('dark-mode'));
        filterBtns.forEach(btn => btn.classList.add('dark-mode'));
    
        // Change Icon to Sun
        themeToggleBtn.querySelector('i').classList.remove('fa-moon');
        themeToggleBtn.querySelector('i').classList.add('fa-sun');
      } else {
        body.classList.remove('dark-mode');
        header.classList.remove('dark-mode');
        lightbox.classList.remove('dark-mode');
        lightboxContent.classList.remove('dark-mode');
        overlayElements.forEach(el => el.classList.remove('dark-mode'));
        galleryItemsArray.forEach(item => item.classList.remove('dark-mode'));
        filterBtns.forEach(btn => btn.classList.remove('dark-mode'));
    
        // Change Icon to Moon
        themeToggleBtn.querySelector('i').classList.remove('fa-sun');
        themeToggleBtn.querySelector('i').classList.add('fa-moon');
      }
    }
    
    // Apply Saved Theme on Page Load
    applyTheme(savedTheme);
    
    // Event Listener for Theme Toggle Button
    themeToggleBtn.addEventListener('click', () => {
      if (body.classList.contains('dark-mode')) {
        applyTheme('light-mode');
        localStorage.setItem('theme', 'light-mode');
      } else {
        applyTheme('dark-mode');
        localStorage.setItem('theme', 'dark-mode');
      }
    });
    

    ?? ??:
    ???? ???:

    ???? ?? ???: ???? ? ???, ??? ???, ??? ?? ?????? ????? ???? ? ????.
    ??? ??: ???? ??? ???? ????? ????? ??? ??? ??????.
    ????? ??:

    ??? ??: ????? ???? ? ? ???? ??? ??? ???? ??? ????.
    ??? ??: ???? ?? ??? ????? ??? ?? ??? ???? ??? ?? ?? ? ????.
    ??/??? ?? ??:

    ??? ?? ??: ???? ?? ??? ?? ???? ?? localStorage? ?? ??? ???? ??? ??? ?? ?? ??? ??? ? ????.
    ??? ??: ?? ?? ???? ?? ??? ???? ???? ?????.
    ??/??? ?? ??
    ?? ??? ???? ?? ??? ??? ?? ??? ??? ????? ???? ???? ??????. ?????? ???/?? ?? ??? ???? ??? ??? ????.

    CSS ??: ?? ??? ??? ??? ?? ??? ?? ??????.
    JavaScript ??: script.js? ?? ?? ???? ?? ? ??? ???? ?? ?? ??? ?????.
    ???? ??? ?? ??: localStorage? ???? ???? ?? ?? ??? ???? ?? ?? ? ?????.
    ??? ?? ??: ?? ? ???
    ?? ???? ??? ???? ?? ???? ????? ?? ??? ? ????.

    ????? ???: ???? ?? ??? ???? ?? ???? ?? ????? ? ? ????.
    ??? ??: ???? ???? ???? ?? ??? ?? ????? ????? ????? ???? ???? ?????.
    ???? ???? ?? ???
    ??? ?????? ???? ???? ?? ???? ??? ? ??? ???.

    ??? ???:

    ??? ????: CSS Grid? Flexbox? ???? ???? ??? ?? ??? ?? ?????.
    ??? ??: ??? ??? ?? ?? ??? ?? ?? ??, ?? ? ????? ?????.
    ???:

    ???? ?? ???: ???? ?? ??? ?? ??? ???? ??????.
    ??? ??: ???? ?? ?? ??? ??? ??? ? ??? ?????.
    ?? ??: ???? ?? ???? ?? ??? ?? ?? ??? ?????.
    ????? ??
    ?????? ?????? ?? ? ??? ? ? ??? ??? ?????.

    ??? ???:

    GitHub ???: ?? ????? ?? ?? ??? ???
    Netlify: ??? ??? ???? ???? ??? ?? ???? ?????.
    Vercel: ????? ????? ??? ??? ?????.
    ?? ???:

    ? ????? ??? ?? ?????? ???? ?? ???? ?????.
    SEO ???:

    ?? ?? ?? ??, ??, ??? ?????.
    ???? ???? CSS/JS ??? ???? ?? ??? ??????.
    ????? ??
    ?? ?????? ??? ?? ? ?? ??? ?????. ???? ?? ???? ??? ? ????.

    ?? ???:

    LinkedIn, Twitter, Facebook ?? ????? ?????? ?????.
    ?? ????? ???? ???? ????.
    ????:

    Reddit, Stack Overflow ?? Dribbble?? ????? ?????.
    ?? ?? ???? ???? ???? ???? ??? ??? ?????.
    SEO ? ??? ???:

    ??? ??? ??? ???? ???? ???? ???? ?????.
    ?? ???? ???? ?? ??? ?? ?????? ??????.
    ??? ??:

    ??? ??? ????? ??? ???? ????? ?????.
    ??
    ??? ????? ????? ???? ??? ?? ????? ???? ???? ??? ??? ????? ???? ?? ?? ?????. HTML5, CSS3 ? JavaScript? ???? ??? ???? ?? ?? ??? ? ?? ?????? ??? ? ????.

    ? ?? ? ????:
    ????: ??? ?? ???
    GladiatorsBattle: Gladiatorsbattle.com
    Div?: divweb.fr
    ???: @GladiatorsBT
    JeanFernandsEtti: jeanfernandsetti.fr
    XavierFlabat: xavier-flabat.com
    ? ?? ??? ??? ?? ????? ? ????? ???? ? ????? ???? ?? ??? ?????. ?? ?? ??? ??? ??? ?? ????!

    ??? ??? ???? ?????? ??? ???? ????! ??

    ????
    Pierre-Romain Lopez? ?? ??? ?? ??? ??? ????? ??? ???? ??? ??? ??? ?? ???? ???? ? ????? ???????. ? ???, ??? ???, ??? ???? ??? ?????? ?? Pierre-Romain? ??? ???? ?? ???? ??? ???? ? ??? ??? ?????.

    ? ??? HTMLCSS ? JavaScript? ???? ??? ??? ????? ??? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

    ? ????? ??
    ? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

    ? AI ??

    Undresser.AI Undress

    Undresser.AI Undress

    ???? ?? ??? ??? ?? AI ?? ?

    AI Clothes Remover

    AI Clothes Remover

    ???? ?? ???? ??? AI ?????.

    Video Face Swap

    Video Face Swap

    ??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

    ???

    ??? ??

    ???++7.3.1

    ???++7.3.1

    ???? ?? ?? ?? ???

    SublimeText3 ??? ??

    SublimeText3 ??? ??

    ??? ??, ???? ?? ????.

    ???? 13.0.1 ???

    ???? 13.0.1 ???

    ??? PHP ?? ?? ??

    ???? CS6

    ???? CS6

    ??? ? ?? ??

    SublimeText3 Mac ??

    SublimeText3 Mac ??

    ? ??? ?? ?? ?????(SublimeText3)

    ???

    ??? ??

    ??? ????
    1597
    29
    PHP ????
    1488
    72
    ???
    node.js?? HTTP ????? ??? node.js?? HTTP ????? ??? Jul 13, 2025 am 02:18 AM

    Node.js?? HTTP ??? ???? ? ?? ???? ??? ????. 1. ?? ????? ????? ??? ??? ? ?? ????? ?? ?? ? https.get () ??? ?? ??? ??? ? ?? ????? ?? ??? ?????. 2.axios? ??? ???? ? ?? ??????. ??? ??? ??? ??? ??? ??? ???/???, ?? JSON ??, ???? ?? ?????. ??? ?? ??? ????? ?? ????. 3. ?? ??? ??? ??? ??? ???? ???? ??? ??? ???? ?????.

    JavaScript ??? ?? : ?? ? ?? JavaScript ??? ?? : ?? ? ?? Jul 13, 2025 am 02:43 AM

    JavaScript ??? ??? ?? ?? ? ?? ???? ????. ?? ???? ???, ??, ??, ?, ???? ?? ? ??? ?????. ?? ????? ?? ?? ? ? ??? ????? ?? ??? ??? ????. ??, ?? ? ??? ?? ?? ??? ??? ??? ???? ??? ??? ???? ??? ?? ??? ????. ?? ? ????? ??? ???? ? ??? ? ??? TypeofNull? ??? ?????? ??? ? ????. ? ? ?? ??? ???? ?????? ????? ???? ??? ???? ? ??? ? ? ????.

    REACT vs Angular vs Vue : ?? JS ??? ??? ?? ????? REACT vs Angular vs Vue : ?? JS ??? ??? ?? ????? Jul 05, 2025 am 02:24 AM

    ?? JavaScript ??? ??? ??? ?????? ?? ??? ?? ?? ??? ?? ???? ????. 1. ??? ???? ???? ?? ??? ?? ? ? ???? ??? ??? ?? ? ?? ????? ?????. 2. Angular? ?????? ??? ?? ???? ? ?? ?? ??? ??? ??? ???? ?????. 3. VUE? ???? ?? ??? ???? ?? ?? ??? ?????. ?? ?? ?? ??, ? ??, ???? ???? ? SSR? ???? ??? ??? ??? ???? ? ??? ?????. ???, ??? ??? ??? ????? ????. ??? ??? ??? ??? ?? ????.

    JavaScript Time Object, ??? Google Chrome? EACTEXE, ? ?? ? ???? ?????. JavaScript Time Object, ??? Google Chrome? EACTEXE, ? ?? ? ???? ?????. Jul 08, 2025 pm 02:27 PM

    ?????, JavaScript ???! ?? ? JavaScript ??? ?? ?? ?????! ?? ?? ??? ??? ??? ? ????. Deno?? Oracle? ?? ??, ??? JavaScript ?? ??? ????, Google Chrome ???? ? ??? ??? ???? ?????. ?????! Deno Oracle? "JavaScript"??? ????? Oracle? ?? ??? ??? ??????. Node.js? Deno? ??? ? Ryan Dahl? ??? ?????? ???? ????? JavaScript? ??? ???? Oracle? ????? ???? ?????.

    ?? API? ???? ??? ???? ??? ?????? ?? API? ???? ??? ???? ??? ?????? Jul 08, 2025 am 02:43 AM

    Cacheapi? ?????? ?? ???? ??? ???? ???, ?? ??? ??? ?? ???? ? ??? ?? ? ???? ??? ??????. 1. ???? ????, ??? ??, ?? ?? ?? ???? ???? ??? ? ????. 2. ??? ?? ?? ??? ?? ? ? ????. 3. ?? ?? ?? ?? ?? ??? ??? ?? ?????. 4. ??? ???? ?? ?? ???? ?? ?? ?? ?? ?? ???? ?? ?? ??? ??? ? ????. 5. ?? ???? ??, ??? ??? ? ??? ??, ?? ??? ? ?? ???? ???? ???? ? ?? ?????. 6.?? ??? ?? ?? ?? ??, ???? ?? ? HTTP ?? ????? ?????? ???????.

    ?? ??? : JavaScript? ??, ?? ?? ? ?? ????? ?? ??? : JavaScript? ??, ?? ?? ? ?? ????? Jul 08, 2025 am 02:40 AM

    ??? JavaScript?? ??? ??? ?????? ?? ???????. ?? ??, ?? ?? ? ??? ??? ?? ????? ????? ?????. 1. ?? ??? ??? ????? ???? ??. ()? ?? ??? ??? ?????. ?. ()? ?? ??? ?? ??? ??? ?? ? ? ????. 2. ?? ??? .catch ()? ???? ?? ??? ??? ?? ??? ??????, ??? ???? ???? ????? ??? ? ????. 3. Promise.all ()? ?? ????? (?? ?? ?? ? ??????? ??), Promise.Race () (? ?? ??? ?? ?) ? Promise.AllSettled () (?? ??? ???? ??)

    ??? ??. ?? ????? ??? ????? ??? ?? ?? ??? ??. ?? ????? ??? ????? ??? ?? ?? Jul 06, 2025 am 02:36 AM

    .map (), .filter () ? .reduce ()? ?? JavaScript ?? ?? ???? ??? ??? ??? ? ? ????. 1) .map ()? ??? ??? ??? ???? ? ??? ???? ? ?????. 2) .filter ()? ???? ??? ????? ? ?????. 3) .reduce ()? ???? ?? ??? ???? ? ?????. ???? ??? ????? ??? ?? ?? ??? ?????.

    JS Roundup : JavaScript ??? ??? ?? ?? ??? JS Roundup : JavaScript ??? ??? ?? ?? ??? Jul 08, 2025 am 02:24 AM

    JavaScript? ??? ??? ?? ??, ? ? ? ?? ???? ???? ??? ??? ?????. 1. ?? ??? ?? ??? ???? ??? ??? ??? ??? ?? WebAPI? ?????. 2. WebAPI? ??????? ??? ?? ? ? ??? ?? ??? (??? ?? ?? ???? ??)? ????. 3. ??? ??? ?? ??? ?? ??? ?????. ?? ??? ??? ????? ??? ??? ?? ? ???? ?????. 4. ???? ?? (? : Promise. 5. ??? ??? ???? ?? ???? ???? ?? ?? ?? ??? ????? ? ??????.

    See all articles