有沒有使用CSS3動畫滾動的方法?使用CSS3動畫滾動
這樣的事情?
@-webkit-keyframes scrolltoview
{
0% { scrollTop: 0; }
100% { scrollTop: 30%; }
}
如何在css中放置動畫的起始點?
有沒有使用CSS3動畫滾動的方法?使用CSS3動畫滾動
這樣的事情?
@-webkit-keyframes scrolltoview
{
0% { scrollTop: 0; }
100% { scrollTop: 30%; }
}
如何在css中放置動畫的起始點?
感謝您的回答。我知道這可以用JQuery來完成。 – Spiff 2012-04-21 17:33:14
如解釋here您可以使用margin-top
技巧並動態更新滾動位置。您可以檢查demo。代碼是直截了當:
// Define the variables
var easing, e, pos;
$(function(){
// Get the click event
$("#go-top").on("click", function(){
// Get the scroll pos
pos= $(window).scrollTop();
// Set the body top margin
$("body").css({
"margin-top": -pos+"px",
"overflow-y": "scroll", // This property is posed for fix the blink of the window width change
});
// Make the scroll handle on the position 0
$(window).scrollTop(0);
// Add the transition property to the body element
$("body").css("transition", "all 1s ease");
// Apply the scroll effects
$("body").css("margin-top", "0");
// Wait until the transition end
$("body").on("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd", function(){
// Remove the transition property
$("body").css("transition", "none");
});
});
});
@AndrewP基於這一理念
會有一個很好的方式來應用相同的效果,但通過使用錨點哈希像#home或使用此代碼的服務? – 2013-08-29 11:10:42
@GerbenVanDijk我在這一方面遲到了,但我建立了我認爲你所要求的功能(一個函數用於查找頁面上每個錨點的鏈接,並修改它們的點擊以通過CSS3 + margin-top滾動,向下進行測試IE 8):http://codepen.io/acusti/pen/bFBDr – 2013-11-07 17:25:44
@AndrewP遺憾的是,它不適用於Safari 7.0。它滾動但沒有動畫 – mente 2013-11-08 07:47:37
我發現了一個更好的方式來製作動畫滾動,這是使用JavaScript文檔正文翻譯提供一個很好的working example。通過翻譯保證金或位置進行動畫製作的優勢很好記錄(http://goo.gl/nA4ccd)。底線是,當動畫元素時,GPU總是會做得更好。
下面是一個例子,它從窗口頂部計算用戶的當前位置,然後平滑地回到窗口頂部。假設用戶點擊或觸摸事件觸發了backToTop功能。
看到它在行動:http://naayt.github.io/starting_point/
function whichTransitionEvent() {
var t,
el = document.createElement('fakeelement'),
transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
};
for (t in transitions){
if (el.style[t] !== undefined){
return transitions[t];
}
}
}
function backToTop() {
var pos_from_top = window.scrollY,
transitionend = whichTransitionEvent(),
body = document.querySelector("body");
function scrollEndHandler() {
window.scrollTo(0, 0);
body.removeAttribute("style");
body.removeEventListener(transitionend, scrollEndHandler);
}
body.style.overflowY = "scroll";
window.scrollTop = 0;
body.style.webkitTransition = 'all .5s ease';
body.style.transition = 'all .5s ease';
body.style.webkitTransform = "translateY(" + pos_from_top + "px)";
body.style.transform = "translateY(" + pos_from_top + "px)";
transitionend && body.addEventListener(transitionend, scrollEndHandler);
}
這是一個非常簡單的.js功能我做了動畫+滾動網頁。
var Current_scroll_Y=0;
var Target_scroll_Y=0;
var scroll_Speed = 15;
function animate_Scroll(Y)
{
Target_scroll_Y = Y;
screen_Y = Math.floor(window.scrollY);
//Scroll Down
if(screen_Y<Y)
{
var myWindowScroll = setInterval(function(){ screen_Y = screen_Y+scroll_Speed; if(screen_Y>=Target_scroll_Y){ clearInterval(myWindowScroll); return;} window.scrollTo(0, screen_Y); }, 3);
}
//Scroll Up
if(screen_Y>Y)
{
var myWindowScroll = setInterval(function(){ screen_Y = screen_Y-scroll_Speed; if(screen_Y<=Target_scroll_Y){ clearInterval(myWindowScroll); return;} window.scrollTo(0, screen_Y); }, 3);
}
}//End animate_Scroll
不,因爲你甚至不能在沒有動畫的情況下在CSS中滾動。 – noob 2012-04-21 17:19:18
你能澄清你的意思是「動畫滾動」嗎?世俗的滾動是一種動畫形式。你將如何進一步動畫? – Anthony 2012-04-21 17:22:39
@Micha你說得對,即使沒有動畫,我也做不到。 – Spiff 2012-04-21 17:26:54