ここで使用されているエフェクトを再現したいhttp://www.ixistore.be/ . ページを下にスクロールして背景色を変更することを意味します。ウェイポイントなどを使用して、静的IDと特定の数の要素を使用してページでそれを行う方法を知っていますが、JSでIDを定義する必要があります -> 。wordpressでぜひ使ってみたいです --> 動的という意味です。各投稿には「data-bgcolor」という属性があり、それがjavascriptによって使用されると想定しています。しかし、私はそれを達成する方法がちょっとわかりません。
助けてくれてありがとう。
質問する
1754 次
1 に答える
0
これは私の論理ではありません。これらは、ボディの背景を変更するために使用しているスクリプトであり、提供したリンクから取得したものです。これはあなたを助けるかもしれません。
function scrollHandler(e)
{
refreshFocus();
}
function refreshFocus()
{
var closest_center_dist = 99999;
var $closest_block;
var max_visible_h;
var winner;
$("div.block").each(function(ind, ele)
{
var $block = $(ele);
var scrollTop = $(window).scrollTop();
var ele_y = $block.offset().top - scrollTop;
var ele_bottom_y = $block.height() + ele_y;
var ele_h = $block.height();
var ele_center_y = ele_y + ele_h/2;
var win_h = $("#win_h_ref").height()//$(window).height();
var win_center_y = win_h/2;
var ele_top_cutoff = Math.abs(Math.min(ele_y, 0));// from 0 to ..
var ele_bottom_cutoff = Math.abs(Math.max(ele_y + ele_h - win_h, 0));// from 0 to ..
var visible_ele_h = ele_h - ele_top_cutoff - ele_bottom_cutoff;
var top_center_distance = Math.abs(ele_y - win_center_y);
var bottom_center_distance = Math.abs(ele_bottom_y - win_center_y);
var shortest_center_distance = Math.min(top_center_distance, bottom_center_distance);
if(shortest_center_distance < closest_center_dist)
{
closest_center_dist = shortest_center_distance;
$closest_block = $block;
}
});
if($closest_block)
{
if($closest_block.size() > 0)
{
if($closest_block.hasClass("focus") == false)
{
$("div.block.focus").removeClass("focus");
$closest_block.addClass("focus");
$('#menu li.current').removeClass('current');
$("#menu li a").each(function()
{
if($(this).attr("href") == "#"+$closest_block.attr("id"))
{
$(this).closest("li").addClass("current");
}
});
var $bg = $($closest_block.data("background"));
var bg_clr = $bg.css("backgroundColor");
$("body").css({"backgroundColor":bg_clr});
}
}
}
}
于 2013-01-11T07:10:24.283 に答える