Introduce
Create creative, automated photo galleries with just CSS rotating through images in simple 3D space without using javascript. Below are the steps. You can refer to this codepen:
Steps to be taken
- Create HTML and add images to create an image list frame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> rotator <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 1.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 2.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 3.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 4.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 5.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 6.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 7.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 8.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> items <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 9.jpg <span class="token punctuation">"</span></span> <span class="token attr-name">alt</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Image Alt <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> |
- Styles for rotating photo gallery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <span class="token selector">.rotator</span> <span class="token punctuation">{</span> <span class="token property">position</span> <span class="token punctuation">:</span> absolute <span class="token punctuation">;</span> <span class="token property">left</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">right</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">margin</span> <span class="token punctuation">:</span> auto <span class="token punctuation">;</span> <span class="token property">width</span> <span class="token punctuation">:</span> 55% <span class="token punctuation">;</span> <span class="token property">height</span> <span class="token punctuation">:</span> 150px <span class="token punctuation">;</span> <span class="token property">transform-style</span> <span class="token punctuation">:</span> preserve-3d <span class="token punctuation">;</span> <span class="token property">animation</span> <span class="token punctuation">:</span> roter 17s linear infinite <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.rotator:hover</span> <span class="token punctuation">{</span> <span class="token property">animation-play-state</span> <span class="token punctuation">:</span> paused <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token atrule"><span class="token rule">@keyframes</span> roter</span> <span class="token punctuation">{</span> <span class="token selector">from</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> 0deg <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">to</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> 360deg <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token selector">.items</span> <span class="token punctuation">{</span> <span class="token property">position</span> <span class="token punctuation">:</span> absolute <span class="token punctuation">;</span> <span class="token property">height</span> <span class="token punctuation">:</span> 100% <span class="token punctuation">;</span> <span class="token property">width</span> <span class="token punctuation">:</span> 100% <span class="token punctuation">;</span> <span class="token property">overflow</span> <span class="token punctuation">:</span> hidden <span class="token punctuation">;</span> <span class="token property">border</span> <span class="token punctuation">:</span> 2px solid #333 <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:hover img</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">scale</span> <span class="token punctuation">(</span> 1.2 <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items img</span> <span class="token punctuation">{</span> <span class="token property">height</span> <span class="token punctuation">:</span> 100% <span class="token punctuation">;</span> <span class="token property">width</span> <span class="token punctuation">:</span> 100% <span class="token punctuation">;</span> <span class="token property">transition</span> <span class="token punctuation">:</span> all 3s ease <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
- Determine the initial position of each image
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <span class="token selector">.items:first-child</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 1 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(2)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 2 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(3)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 3 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(4)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 4 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(5)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 5 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(6)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 6 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(7)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 7 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(8)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 8 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">.items:nth-child(9)</span> <span class="token punctuation">{</span> <span class="token property">transform</span> <span class="token punctuation">:</span> <span class="token function">rotateY</span> <span class="token punctuation">(</span> <span class="token function">calc</span> <span class="token punctuation">(</span> 40deg * 9 <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">translateZ</span> <span class="token punctuation">(</span> 300px <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Conclusion
Simple, just 3 simple steps, you have a very creative photo library