我正在嘗試使用褪色塊動畫製作滑塊,就像here。麻煩的是,在我的情況下,我試圖全屏顯示,這意味着高度和寬度將是可變的。這意味着背景位置技巧將不起作用,因爲它不會調整背景以適合屏幕,而是將其視爲「原樣」。這很容易看到here(請記住,#滑動將是高度100%和寬度100%以及.slide> img)。我已經跑出了想法來解決它,任何幫助將不勝感激。我寧願不使用jQuery,但如果有必要,它會沒事的。褪色塊動畫全屏
預先感謝您。
我的劇本至今是:
function animateBlocks(x,y,speed) {
var width = document.getElementById('slides').offsetWidth;
var height = document.getElementById('slides').offsetHeight;
var newWidth = width/x;
var newHeight = height/y;
for (var i = 0; i<(x*y); i++) {
var newDiv = document.createElement("div");
document.getElementsByClassName('active-slide')[0].appendChild(newDiv);
newDiv.className = "slide-block";
newDiv.style.width = newWidth + 'px';
newDiv.style.height = newHeight + 'px';
newDiv.style.backgroundImage = 'url("' + document.getElementsByClassName('active-slide')[0].firstElementChild.src + '")';
newDiv.style.backgroundPosition = ('-' + newDiv.offsetLeft + 'px ' + '-' + newDiv.offsetTop + 'px');
if (i == x*y-1) {
document.getElementsByClassName('active-slide')[0].firstElementChild.style.display = 'none';
}
}
}
喜歡此http://jsfiddle.net/43s4x1s5/2/ – fuyushimoya
謝謝您的回答!我認爲這正是我所期待的。不過,我已經看到你已經使用'window.innerWidth'來獲取瀏覽器,但是在我嘗試的測試中(在Firefox中)它包含了滾動條,這會破壞代碼。這是正常的行爲嗎?另外,在while和for語句之前聲明變量是否會提高性能? – minimino
這是因爲firefox在jsfiddle上的窗口寬度似乎是浮點數,我們都知道在處理float時,應該小心謹慎,就像我的情況是'644.8',而'window.innerWidth'給了我'645'。 ,它100%肯定這些街區會變寬並且破裂。我已經通過'document.documentElement.getBoundingClientRect();'改變了獲取真正寬度的方法,並且爲了使後面的分割永遠不會有更大的變化。第二,這只是因爲'var'是函數範圍,我不喜歡在循環中重新聲明它。 – fuyushimoya