CSS
*, *:before, *:after {
box-sizing: border-box;
}
.loader {
width: 50px;
height: 24px;
padding: 4px 0;
background: #222;
border-top: 2px solid #111;
border-bottom: 2px solid #111;
position: fixed;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%) scale(2);
transform: translate(-50%, -50%) scale(2); // масштабируем, чтобы выглядело лучше
}
.loader::before, .loader::after {
content: '';
position: absolute;
top: 0;
height: 2px;
width: 2px;
}
.loader::before {
box-shadow: -2px 0px 0 #111, -4px 2px 0 #111, -6px 4px 0 #111, -6px 6px 0 #111, -6px 8px 0 #111, -6px 10px 0 #111, -6px 12px 0 #111, -6px 14px 0 #111, -4px 16px 0 #111, -2px 18px 0 #111, -2px 2px 0 #222, -2px 4px 0 #222, -2px 6px 0 #222, -2px 8px 0 #222, -2px 10px 0 #222, -2px 12px 0 #222, -2px 14px 0 #222, -2px 16px 0 #222, -4px 4px 0 #222, -4px 6px 0 #222, -4px 8px 0 #222, -4px 10px 0 #222, -4px 12px 0 #222, -4px 14px 0 #222; // левая рамка
}
.loader::after {
right: 0;
box-shadow: 2px 0px 0 #111, 4px 2px 0 #111, 6px 4px 0 #111, 6px 6px 0 #111, 6px 8px 0 #111, 6px 10px 0 #111, 6px 12px 0 #111, 6px 14px 0 #111, 4px 16px 0 #111, 2px 18px 0 #111, 2px 2px 0 #222, 2px 4px 0 #222, 2px 6px 0 #222, 2px 8px 0 #222, 2px 10px 0 #222, 2px 12px 0 #222, 2px 14px 0 #222, 2px 16px 0 #222, 4px 4px 0 #222, 4px 6px 0 #222, 4px 8px 0 #222, 4px 10px 0 #222, 4px 12px 0 #222, 4px 14px 0 #222; // правая рамка
}
.heart {
display: inline-block;
vertical-align: top;
margin-left: 12px;
height: 2px;
width: 2px;
box-shadow: 6px 2px 0 #fff, 2px 0px 0 #fff, 4px 0px 0 #fff, 0px 2px 0 #fff, 0px 4px 0 #fff, 2px 6px 0 #fff, 4px 8px 0 #fff, 6px 10px 0 #fff, 8px 0px 0 #fff, 10px 0px 0 #fff, 12px 2px 0 #fff, 12px 4px 0 #fff, 10px 6px 0 #fff, 8px 8px 0 #fff;
}
.heart::before, .heart::after {
content: '';
position: absolute;
height: 2px;
width: 2px;
visibility: hidden;
-webkit-animation: ani 3s 2s infinite;
animation: ani 3s/*продолжительность*/...