CSS - Galeri imej

Selamat datang, para pemula desainer web! Hari ini, kita akan melihat dunia yang menarik dari Galeri Imej CSS. Sebagai guru komputer di lingkungan yang ramah, saya sangat gembira untuk mengorbit anda dalam perjalanan ini. Mari kita ubah imej statik yang membosankan menjadi galeri interaktif dan menarik yang akan membuat laman web anda nampak menarik!

CSS - Image Gallery

Galeri Imej Ringkas

Mari kita mulakan dengan dasar. Galeri imej ringkas adalah seperti mengatur foto di dinding anda - ia tentang presentasi. Berikut adalah cara untuk membuatnya menggunakan CSS:

<div class="gallery">
<img src="image1.jpg" alt="Imej 1">
<img src="image2.jpg" alt="Imej 2">
<img src="image3.jpg" alt="Imej 3">
</div>
.gallery {
display: flex;
flex-wrap: wrap;
justify-content: center;
}

.gallery img {
width: 200px;
height: 200px;
margin: 10px;
object-fit: cover;
}

Dalam contoh ini, kita menggunakan flexbox untuk membuat susun atur yang responsif. Properti flex-wrap: wrap memastikan imej kita akan lipat ke baris berikutnya jika ruang tidak cukup. justify-content: center mengcantulkan imej secara horisontal.

Galeri Imej Dengan Kesan Hover

Sekarang, mari kita tambahkan sedikit interaktiviti! Kesan hover boleh membuat galeri anda lebih menarik. Itu seperti menambah pesan rahasia yang hanya muncul ketika anda melihat dekat.

<div class="gallery">
<div class="image-container">
<img src="image1.jpg" alt="Imej 1">
<div class="overlay">
<div class="text">Hello World</div>
</div>
</div>
<!-- Ulangi untuk imej lain -->
</div>
.image-container {
position: relative;
width: 200px;
height: 200px;
}

.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
opacity: 0;
transition: 0.5s ease;
background-color: rgba(0,0,0,0.5);
}

.image-container:hover .overlay {
opacity: 1;
}

.text {
color: white;
font-size: 20px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}

CSS ini membuat penutup yang muncul saat anda hover di atas imej. Properti transition memberikan kesan pemudar yang halus.

Galeri Imej Responsif Menggunakan Media Query

Dalam dunia multi-peranti hari ini, responsif adalah kunci. Mari kita buat galeri yang menyesuaikan saiz skrin berbeza:

.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 10px;
}

@media screen and (max-width: 600px) {
.gallery {
grid-template-columns: repeat(2, 1fr);
}
}

@media screen and (max-width: 400px) {
.gallery {
grid-template-columns: 1fr;
}
}

CSS ini menggunakan CSS Grid untuk membuat susun atur yang responsif. Fungsi minmax memastikan imej adalah sekurang-kurangnya 200px lebarnya, tetapi boleh besar jika ruang membolehkan. Media query menyesuaikan susun atur untuk skrin yang lebih kecil.

Sintaks

Mari kitaambil sedikit masa untuk memahami sintaks yang kita gunakan. Properti CSS mengikuti struktur berikut:

selector {
property: value;
}

Berikut adalah jadual properti CSS umum yang digunakan dalam galeri imej:

Properti Keterangan Contoh
display Nyatakan tingkah laku paparan display: flex;
width Tetapkan lebarnya elemen width: 200px;
height Tetapkan tingginya elemen height: 200px;
margin Tetapkan marjin elemen margin: 10px;
object-fit Nyatakan bagaimana imej hendak diubah saiz object-fit: cover;
position Nyatakan jenis kaedah penempatan position: relative;
opacity Tetapkan tahap kelegapan elemen opacity: 0;
transition Nyatakan kesan perubahan transition: 0.5s ease;

Galeri Imej Dengan Skrol Horizontal

kadang-kadang, anda mahu galeri anda skrol secara horisontal. Itu seperti gulungan foto yang anda boleh geser:

<div class="gallery-container">
<div class="gallery-scroll">
<img src="image1.jpg" alt="Imej 1">
<img src="image2.jpg" alt="Imej 2">
<!-- Tambahkan lagi imej jika diperlukan -->
</div>
</div>
.gallery-container {
width: 100%;
overflow-x: auto;
}

.gallery-scroll {
display: flex;
width: max-content;
}

.gallery-scroll img {
width: 200px;
height: 200px;
margin-right: 10px;
object-fit: cover;
}

CSS ini membuat galeri yang boleh skrol secara horisontal. Properti overflow-x: auto menambahkan scrollbar horisontal jika diperlukan.

Galeri Imej Dengan Skrol Vertikal

Galeri skrol vertikal adalah idea untuk menunjukkan banyak imej dalam ruang kecil:

<div class="gallery-vertical">
<img src="image1.jpg" alt="Imej 1">
<img src="image2.jpg" alt="Imej 2">
<!-- Tambahkan lagi imej jika diperlukan -->
</div>
.gallery-vertical {
height: 400px;
overflow-y: scroll;
display: flex;
flex-direction: column;
align-items: center;
}

.gallery-vertical img {
width: 200px;
height: 200px;
margin-bottom: 10px;
object-fit: cover;
}

CSS ini membuat galeri yang boleh skrol secara vertikal. Properti overflow-y: scroll menambahkan scrollbar vertikal.

Galeri Imej Menggunakan CSS Grid

CSS Grid adalah alat kuat untuk membuat susun atur kompleks. Mari kita gunakan itu untuk membuat galeri dinamik:

<div class="grid-gallery">
<img src="image1.jpg" alt="Imej 1">
<img src="image2.jpg" alt="Imej 2">
<img src="image3.jpg" alt="Imej 3">
<img src="image4.jpg" alt="Imej 4">
<img src="image5.jpg" alt="Imej 5">
</div>
.grid-gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 10px;
}

.grid-gallery img {
width: 100%;
height: 200px;
object-fit: cover;
}

.grid-gallery img:nth-child(4) {
grid-column: span 2;
}

.grid-gallery img:nth-child(5) {
grid-row: span 2;
}

CSS ini membuat susun atur grid di mana beberapa imej melintasi beberapa kolom atau baris, mencipta susun atur yang lebih dinamik.

Galeri Imej Dengan Tab

Galeri tab adalah cara bagus untuk mengatur set imej berbeza:

<div class="tab">
<button class="tablinks" onclick="openTab(event, 'Nature')">Nature</button>
<button class="tablinks" onclick="openTab(event, 'City')">City</button>
</div>

<div id="Nature" class="tabcontent">
<img src="nature1.jpg" alt="Nature 1">
<img src="nature2.jpg" alt="Nature 2">
</div>

<div id="City" class="tabcontent">
<img src="city1.jpg" alt="City 1">
<img src="city2.jpg" alt="City 2">
</div>
.tab {
overflow: hidden;
border: 1px solid #ccc;
background-color: #f1f1f1;
}

.tab button {
background-color: inherit;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: 0.3s;
}

.tab button:hover {
background-color: #ddd;
}

.tab button.active {
background-color: #ccc;
}

.tabcontent {
display: none;
padding: 6px 12px;
border: 1px solid #ccc;
border-top: none;
}

CSS ini membuat antara muka tab. Anda akan memerlukan JavaScript untuk menjadikannya berfungsi:

function openTab(evt, tabName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(tabName).style.display = "block";
evt.currentTarget.className += " active";
}

Slideshow CSS

Mari kita buat slideshow ringkas:

<div class="slideshow-container">
<div class="mySlides fade">
<img src="img1.jpg" style="width:100%">
</div>
<div class="mySlides fade">
<img src="img2.jpg" style="width:100%">
</div>
<div class="mySlides fade">
<img src="img3.jpg" style="width:100%">
</div>
</div>
.slideshow-container {
max-width: 1000px;
position: relative;
margin: auto;
}

.mySlides {
display: none;
}

.fade {
animation-name: fade;
animation-duration: 1.5s;
}

@keyframes fade {
from {opacity: .4}
to {opacity: 1}
}

Anda akan memerlukan JavaScript untuk mengawal slideshow:

var slideIndex = 0;
showSlides();

function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
slides[slideIndex-1].style.display = "block";
setTimeout(showSlides, 2000); // Ubah imej setiap 2 saat
}

Galeri Slideshow Dengan Thumbnail

Akhirnya, mari kita gabungkan slideshow dengan thumbnail untuk pengalaman interaktif yang lebih:

<div class="slideshow-container">
<div class="mySlides fade">
<img src="img1.jpg" style="width:100%">
</div>
<div class="mySlides fade">
<img src="img2.jpg" style="width:100%">
</div>
<div class="mySlides fade">
<img src="img3.jpg" style="width:100%">
</div>
</div>

<div class="row">
<div class="column">
<img class="demo cursor" src="img1.jpg" style="width:100%" onclick="currentSlide(1)">
</div>
<div class="column">
<img class="demo cursor" src="img2.jpg" style="width:100%" onclick="currentSlide(2)">
</div>
<div class="column">
<img class="demo cursor" src="img3.jpg" style="width:100%" onclick="currentSlide(3)">
</div>
</div>
.row {
display: flex;
}

.column {
flex: 33.33%;
padding: 5px;
}

.demo {
opacity: 0.6;
}

.active,
.demo:hover {
opacity: 1;
}

Anda akan perlu mengubah JavaScript untuk mengawal klik thumbnail:

function currentSlide(n) {
showSlides(slideIndex = n);
}

function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("demo");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
}

Dan begitu juga, kita sudah meliputi banyak teknik galeri imej CSS. Ingat, latihan membuat sempurna. Cobalah untuk menggabungkan teknik ini untuk membuat galeri unik anda sendiri. Selamat berkoding!

Credits: Image by storyset