JSFiddle - React, Tailwind, and code Playground
HTML
<div class="gallery">
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="2"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="3"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<a tabindex="1"><img src="http://alpatriott.ru/works/album/images/smile.jpg"></a>
<span class="closed">+</span>
<span class="closed-layer"></span>
</div>
CSS
html, body{
margin:0;
padding:0;
height:100%;
}
:focus{
outline:none;
}
.gallery{
margin:20px auto;
width:900px;
height:640px;
position:relative;
}
a{
display:inline-block;
width:200px;
height:141px;
position:relative;
border:5px solid #fff;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
a img{
display:block;
width:100%;
height:100%;
-webkit-transition-property:width, height, top, bottom, left, right, z-index;
-webkit-transition-duration:2s;
-moz-transition-property:width, height, top, bottom, left, right, z-index;
-moz-transition-duration:2s;
-o-transition-property:width, height, top, bottom, left, right, z-index;
-o-transition-duration:2s;
transition-property:width, height, top, bottom, left, right, z-index;
transition-duration:2s;
position:absolute;
z-index:1;
top:0px;
left:0px;
cursor:pointer;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
}
.closed{
position:absolute;
top:85px;
right:195px;
display:none;
text-align:center;
font-weight:bold;
font-size:70px;
color:#555;
width:20px;
height:20px;
-webkit-text-shadow:0px 0px 5px #fff;
-moz-text-shadow:0px 0px 5px #222;
text-shadow:0px 0px 5px #fff;
-moz-transform:rotate(45deg);
-o-transform:rotate(45deg);
-webkit-transform:rotate(45deg);
cursor:pointer;
z-index:30;
}
.closed-layer{
display:none;
position:absolute;
top:140px;
left:150px;
width:500px;
height:352px;
background:transparent;
z-index:30;
}
a:focus~.closed, a:focus~.closed-layer{
display:block;
}
a:focus{
border:none;
}
a:focus img{
width:250%;
height:250%;
position:absolute;
box-shadow:0 0 15px 2px #000;
-moz-box-shadow:0 0 15px 2px #000;
-webkit-box-shadow:0 0 15px 2px #000;
-webkit-transition-property:width, height, top, bottom, left, right, z-index;
-webkit-transition-duration:2s;
-moz-transition-property:width, height, top, bottom, left, right, z-index;
-moz-transition-duration:2s;
-o-transition-property:width, height, top, bottom, left, right,...