New York Times Fashion Weekページで使用されているデカルト歪み効果を再現しようとしています。しかし、彼らは我々が行うプロジェクト全体がD3 V4であるので、D3バージョン4CSSによるデカルト歪み効果
では動作しませんD3jsのためのD3バージョン3と魚眼レンズプラグインを使用して、私は3
はありD3のバージョンにダウングレードすることはできませんCSSとjqueryを使ってこの効果を達成する他の方法は?私がこれまでに得たところ、私はこれを試してみました
は次のとおりです。preview
window.onload = run;
function run() {
if ($('.overlayDiv').css('display') != 'none') {
var container = d3.select('.overlayDiv');
container.empty();
var val = parseInt(5);
var overlayWidth = $(".overlayDiv").width();
var vwidth = (overlayWidth/(val));
console.log(vwidth);
for (i = 0; i < val; ++i) {
var div = container.append("div").style("width", vwidth + "px")
.style("height", "100%")
.style("background", "rgb(75, 123, 175)")
.style("float", "left")
var year = div.text(i)
.attr("class", "summary")
.style("text-align", "center")
.style("font-size", "32px")
.style("font-weight", "bold")
.style("line-height", "100px").style("color", "white")
.on('mouseover', function() {
d3.select(this)
.transition().style('width', $(".overlayDiv").width()/2 + "px")
.style("background", "rgba(90, 90, 90, 0.78)")
$('.summary').not(this).each(function() {
$(this).css("width", (overlayWidth/3)/(val));
});
})
.on('mouseout', function() {
d3.select(this)
.transition().style('width', vwidth + "px")
.style("background", "rgb(75, 123, 175)")
$('.summary').not(this).each(function() {
$(this).css("width", vwidth);
});
})
}
$('.overlayDiv').show();
//$('.overlayDiv').text(this.firstChild.nextSibling.innerHTML);
$('.overlayDiv').addClass("overlayActive");
$('.overlayDiv').removeClass("overlayInactive");
} else {
var container = d3.select('.overlayDiv');
container.empty();
$('.overlayDiv').hide();
$('.overlayDiv').text("");
$('.overlayDiv').removeClass("overlayActive");
$('.overlayDiv').addClass("overlayInactive");
}
}
これを改善し、NYタイムズで見られる効果を達成するためにどのように?
あなただけのD3使用する必要がありますか?同じ効果はCSSだけを使って達成することができます。 – Aslam
こちらをご覧くださいhttp://codepen.io/hunzaboy/pen/qrRpzZ – Aslam
@hunzaboyありがとうございます。それはします。 D3はデータに基づいた動的なdivの作成に使用されますが、D3 v4で効果を出すことができれば良いでしょうが、この問題では私はCSSソリューションを探していました。 – devN