Старайтесь, чтобы ваш код был расширяемым и читаемым, поэтому, если вы позже захотите добавить, например, больше строк, вы можете легко это сделать, только изменив HTML-разметку. Возможно, мое решение не на 100% точно, но я постараюсь дать вам представление о том, как реализовать этот макет.
var rows = document.getElementsByClassName('row');
for(var i = 1; i < rows.length; i++) {
rows[i].style.transform='translate(0,-' + i + 'vw)';
}
body {background:#ff00c6;width:100vw;height:100vh;}
#icons {border:1px solid white;}
.icon {float:left;width:2vw;height:2vw;background:url('https://image.ibb.co/jDaNTn/icon_notice.png') center center no-repeat;background-size:contain;}
.row {width:100%;height:2vw;}
.small .icon {background-size:50%}
.small .icon:first-child {margin-left:1vw;}
/* EDIT: JS solution
.row:nth-child(2) {transform:translate(0,-1vw);}
.row:nth-child(3) {transform:translate(0,-2vw);}
... */
<div id="icons">
<div class="small row">
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
</div>
<div class="big row">
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
</div>
<div class="small row">
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
</div>
</div>
EDIT:
Отредактировал пост, используя трансформации, вы можете получить желаемый эффект.
Однако, таким образом, вам также нужно отредактировать CSS, потому что вам нужно
добавить еще перевод в каждую строку (-1vw, -2vw, -3vw и т. д.
на...). Может быть, лучше рассчитать их с помощью JavaScript или PHP.
Предоставлено решение JS