Grid CSS no-flex
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
* {
	margin: 0;
	padding: 0;
	box-size: border-box;
}
html, body {
	height: 100%;
}
div {
  height: 25vw;
  width: 25vw; /* calc(100% /4); */
  background: tomato;
  display: inline-block;
  text-align: center;
  line-height: 25vw;
  font-size: 20vw;
  position: relative;
  margin-right: -5px;
}
div:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: inherit;
  width: inherit;
  background: rgba(200,200,200,.455);
  transition: background 320ms;
}
div:hover:before {
  background: rgba(200, 200, 200, 0);
}

// solution