Answer 2
HTML
<div class="container-1">
<div class="grid">
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
<div class="grid-unit"></div>
</div>
<div class="container-2">
<div class="box box-1"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
CSS
html {
font-size: 36px;
}
body {
margin: 0;
}
.container-1 {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: 100%;
height: 100%;
}
.grid {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
width: 100%;
height: 100%;
}
.grid-unit {
width: 8rem;
height: 1rem;
border-right: 1px solid #000;
border-bottom: 1px solid #000;
border-left: 1px solid #000;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.container-2 {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.box {
height: 1rem;
width: 1rem;
margin-bottom: 1rem;
background-color: blue;
}
JavaScript
function snapFunction() {
var box = document.querySelector('.box-1');
var rect = box.getBoundingClientRect();
var bottomOrig = rect.bottom;
var htmlRoot = document.querySelector('html');
var style = getComputedStyle(htmlRoot);
var remValue = parseInt(style.getPropertyValue('font-size'), 10);
var bottomNew = Math.floor(bottomOrig / remValue) * remValue;
var fix = bottomOrig - bottomNew;
console.log("bottomOrig: " + bottomOrig )
console.log("remValue: " + remValue)
console.log("bottomNew: " + bottomNew )
$('.container-2').css("margin-bottom", fix + "px");
console.log( $('.container-2'))
console.log( "fix + 'px'")
console.log( $('.container-2').css("margin-bottom"))
}
(function() {
snapFunction();
})();
$( window ).resize(function() {
snapFunction();
});