CSSスタイルの差分を表示メモ

(Comments)

CSSスタイルの差分を表示

<script>
var styleSnapshots = [];
var classNames = {};

var styleParams = [
'height',
'width',
'margin',
'padding',
'position',
'top',
'bottom',
'lineHeight',
];

function getStyleData(element){
var data = {};
var cs = window.getComputedStyle(element);
// console.log(cs);
for(var param of styleParams){
data[param] = cs[param];
}
return data;
}


function snapshot(snapshotIndex, path, element) {
if (styleSnapshots.length <= snapshotIndex) {
styleSnapshots[snapshotIndex] = {};
}
classNames[path] = element.getAttribute('class');

styleSnapshots[snapshotIndex][path] = getStyleData(element);
var children = element.children;
for (var i = 0; i < children.length; i++) {
var child = children[i];
var tagName = child.tagName;
var path2 = `${path}${tagName}[${i}]/`;

snapshot(snapshotIndex, path2, child);

}
}

function diffSnapshot(i0, i1) {
for (var path in styleSnapshots[i1]) {
if (!styleSnapshots[i0][path]) {
console.log(`${path} before undefined`);
continue;
}
if (!styleSnapshots[i1][path]) {
console.log(`${path} after undefined`);
continue;

}
var className = classNames[path];


for (var sp of styleParams) {


if (styleSnapshots[i0][path][sp] != styleSnapshots[i1][path][sp]) {
console.log(`${path} ${className} ${sp} ${styleSnapshots[i0][path][sp]} -> ${styleSnapshots[i1][path][sp]}`);
}
}
}

}

snapshot(0, '/', document.querySelector('.navlist'));

setTimeout(function () {
snapshot(1, '/', document.querySelector('.navlist'));

diffSnapshot(0, 1);

}, 3000);
</script>
Currently unrated

Comments

Recent Tweets

  • ytyng

    ytyng @ytyng

    在宅で仕事してるので古い曲をけっこう聞いてる。久々にコーガニズムオーケストラ聞いたらめっちゃかっこいい。昔対バンして間近で見て強烈に心を持ってかれたことを思い出した。新潟古町のJunkBox。またミクスチャーやりたいわ。
    1 week, 2 days ago

  • ytyng

    ytyng @ytyng

    slack 503
    1 week, 6 days ago

  • ytyng

    ytyng @ytyng

    11:40 頃解消された。
    1 month, 1 week ago