hover zoom for Pixiv
当前为
// ==UserScript==
// @name Pixiv hover zoom
// @namespace https://github.com/rplus
// @version 0.1
// @description hover zoom for Pixiv
// @author Rplus
// @include http://www.pixiv.net/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// @grant none
// ==/UserScript==
(function() {
var phzw = $('#pixiv-hz-wrap');
var phzwCache = {};
var phzwPos = [];
var phzwToggle = function(_switch) {
phzw.toggle(_switch);
if (_switch) {
phzw.css({
'top': phzwPos[0],
'left': phzwPos[1],
'transform': 'translateX(' + phzwPos[2] + '%)'
});
}
};
var phzwUpdate = function(_html, _url) {
phzw.attr('href', _url).html(_html);
phzwToggle(true);
};
var phzwPull = function(_url) {
var _html;
var _urlID = _url.match(/id=(\d+)/).pop();
if (phzwCache[_urlID]) {
_html = phzwCache[_urlID];
phzwUpdate(_html, _url);
} else {
$.get(_url, function(data) {
_html = $('<div />').append(data).find('.works_display img')[0].outerHTML;
phzwCache[_urlID] = _html;
phzwUpdate(_html, _url);
});
}
};
if (!phzw.length) {
$('body').append('<a id="pixiv-hz-wrap" />');
phzw = $('#pixiv-hz-wrap').css({
'position': 'absolute',
'display': 'none',
'box-shadow': '0 0 5px',
'z-index': '1000'
});
}
$('._unit').on('mouseenter', '.work._work', function() {
var thisRec = this.getBoundingClientRect();
phzwPos = [thisRec.top - document.body.getBoundingClientRect().top + thisRec.height, thisRec.left, -100 * thisRec.left / document.body.getBoundingClientRect().width];
phzwPull(this.href);
});
$(document).on('click', function() {
phzwToggle(false);
});
}());