Skip to content

Commit 1e75d2f

Browse files
committed
wesbos#20 javascript practice
1 parent c9c7929 commit 1e75d2f

File tree

1 file changed

+86
-1
lines changed

1 file changed

+86
-1
lines changed

20 - CSS Grid Image Gallery/image-gallery-START.html

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</div>
1919

2020
<section class="gallery">
21+
<h1>Hello</h1>
2122
</section>
2223

2324

@@ -52,7 +53,49 @@
5253
}
5354

5455
.gallery {
55-
56+
display: grid;
57+
grid-template-columns: repeat(auto-fill, 100px);
58+
grid-auto-rows: 100px;
59+
grid-auto-flow: dense;
60+
}
61+
62+
.item {
63+
overflow: hidden;
64+
display: grid;
65+
grid-template-columns: 1fr;
66+
grid-template-rows: 1fr;
67+
}
68+
69+
.item img {
70+
grid-column: 1 / -1;
71+
grid-row: 1 / -1;
72+
width: 100%;
73+
height: 100%;
74+
object-fit: cover;
75+
}
76+
77+
.item.v2 {
78+
grid-row: span 2;
79+
}
80+
81+
.item.v3 {
82+
grid-row: span 3;
83+
}
84+
85+
.item.v4 {
86+
grid-row: span 4;
87+
}
88+
89+
.item.h2 {
90+
grid-column: span 2;
91+
}
92+
93+
.item.h3 {
94+
grid-column: span 3;
95+
}
96+
97+
.item.h4 {
98+
grid-column: span 4;
5699
}
57100

58101

@@ -84,6 +127,48 @@
84127
</style>
85128

86129
<script>
130+
const gallery = document.querySelector(".gallery");
131+
const overlay = document.querySelector('.overlay');
132+
const overlayImage = overlay.querySelector('img');
133+
134+
function randomNumber(lim) {
135+
return Math.floor(Math.random()*lim)+1
136+
}
137+
// gallery.addEventListener('click', () => {
138+
// alert('hello world')
139+
// })
140+
function generateHTML([h, v]) {
141+
return `
142+
<div class="item h${h} v${v}">
143+
<img src="images/${randomNumber(12)}.jpg">
144+
<div class="item__overlay">
145+
<button>View →</button>
146+
</div>
147+
</div>
148+
`;
149+
}
150+
151+
const digits = Array.from({ length: 50 }, () => [randomNumber(4), randomNumber(4)]).concat([[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]])
152+
153+
const html = digits.map(generateHTML).join('');
154+
gallery.innerHTML = html;
155+
156+
const items = document.querySelectorAll('.item');
157+
158+
function handleClick(e) {
159+
const src = e.currentTarget.querySelector('img').src;
160+
overlayImage.src = src;
161+
overlay.classList.add('open');
162+
}
163+
164+
items.forEach(item => item.addEventListener('click', handleClick));
165+
166+
function close() {
167+
overlay.classList.remove('open');
168+
}
169+
170+
overlayClose.addEventListener('click', close)
171+
87172
</script>
88173
</body>
89174

0 commit comments

Comments
 (0)