Вопрос решается заменой строки:
$(this).css({transform: el.dataset.tr+"("+ margMin +"px)"});
на:
$(this).css({[el.dataset.tr]: margMin +"px"});
в целом скрипт:
$(function() {
var $win = $(window),
$rev = $('[data-tr]'),
winH2 = 0,
winSt = 0;
function reveal() {
winSt = $win.scrollTop();
winH2 = $win.height()/2;
$rev.each(function(i, el){
var y = el.getBoundingClientRect().top,
toMiddleMax = Math.max(0, y-winH2),
idealMarg = Math.min(+el.dataset.val, toMiddleMax),
margMin = Math.min(idealMarg, idealMarg * (toMiddleMax/winH2));
$(this).css({[el.dataset.tr]: margMin +"px"});
});
}
$win.on({
"load resize scroll" : reveal
});
});
<div class="block" data-tr="margin-left (или любое другое свойство)" data-val="300"></div>
Но теперь возникает другой вопрос: Только один браузер - Internet Explorer не понимает:
[el.dataset.tr]