簡體   English   中英

jQuery平滑滾動(非錨點)

[英]Jquery smooth scrolling (not anchor)

我在這里看過幾篇文章,但我找不到正確的答案。 我不是在尋找一個平滑滾動到錨點,我已經得到了,我正在尋找一個平滑滾動像這樣這樣 他們都以某種方式使用了我不知道如何實現的這個 jQuery。

我已經嘗試過這個: simplr-smoothscroll 但這並不是真正的“平滑”,當您快速滾動時,它會使您減速。

我也嘗試過: 簡單的平穩輪 但是我無法正確實現,因為我的身高設置為100%,所以在github上也有人對此表示抱怨。 除此之外,下載(不在github上)提供的演示對我也不起作用,試圖修復該演示但仍然沒有運氣。

我也嘗試使用其中之一的源: smoothwheel 但是我不是具有javascript的javascript魔術師,所以沒有辦法做到這一點。

這是我擁有的簡單jsfiddle頁面,應該在其中運行: jsfiddle

 <div id="menubar">
        <a href="#welcome">Welcome</a><a href="#welcome">Welcome</a><a href="#welcome">Welcome</a><a href="#welcome">Welcome</a>
    </div>
    <div id="container">
        <div id="content">
                <br />
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum a tortor fringilla, volutpat justo malesuada, suscipit justo. Fusce ante dui, bibendum non sapien vitae, hendrerit ultricies enim. Quisque dictum fermentum congue. Vestibulum posuere iaculis arcu, ultrices pharetra mauris ultrices finibus. Ut pulvinar sit amet justo et rhoncus. Maecenas id ante vel tortor vulputate commodo in in lacus. Nunc auctor vulputate ornare. Donec lacus odio, maximus ut massa a, finibus pulvinar justo. In facilisis quam sed pharetra aliquet. Etiam varius non eros non suscipit. Vestibulum venenatis placerat accumsan. Nulla nec consequat mauris. Etiam nisl magna, semper vel sem mollis, vehicula bibendum urna. Nunc porttitor dui sed volutpat imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pharetra ligula sit amet sapien mollis malesuada.

Sed mollis convallis risus. Duis volutpat, diam rutrum pretium scelerisque, odio nunc faucibus odio, sit amet cursus justo justo ac mi. Aenean laoreet et eros non viverra. Praesent id erat vel nisl molestie pharetra. Pellentesque eu eros nibh. Aliquam mollis, tortor eget consequat varius, metus sapien suscipit nisl, eu convallis ligula orci eu erat. Fusce et ex dignissim eros porta eleifend in quis sapien. Suspendisse potenti. Quisque non vehicula mauris, eget ornare tellus. Pellentesque aliquet massa augue, sed hendrerit massa condimentum eget. Nunc vulputate neque nunc, ac interdum velit tristique sed. Donec vestibulum nibh at tellus condimentum, sed rutrum quam pellentesque. Mauris congue blandit justo, a auctor est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse et sem vulputate, malesuada lectus ultrices, luctus elit.

Ut enim metus, lobortis in malesuada sed, fringilla sit amet velit. Phasellus nec tincidunt risus. Nam id nulla et dolor tempor consectetur elementum sit amet lacus. Nunc non felis enim. Curabitur feugiat at quam ac auctor. Duis nibh enim, consequat id sagittis vitae, pharetra nec arcu. Pellentesque vitae nisl tincidunt purus faucibus dignissim ut egestas enim. Integer gravida suscipit interdum. Nunc ac tellus urna. Proin odio quam, pulvinar sed tristique sed, viverra sed mi. Phasellus dapibus ipsum in tempor aliquet. Nam a lectus eu purus volutpat sodales eu at ante. Duis quis scelerisque lectus. Mauris interdum massa quis nisi luctus tincidunt. Etiam ut varius arcu, venenatis lacinia nulla. Cras tristique porta accumsan.

Nam dignissim risus tellus, sit amet faucibus mi dignissim eget. Sed luctus dolor et augue convallis tristique. Etiam sed urna urna. Etiam id lacinia neque. Aliquam ac sapien lacus. Ut lacus quam, efficitur a orci a, gravida porttitor dui. Nunc eget augue vehicula, congue mi ultrices, tempus neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Nullam at venenatis ante. Ut odio justo, auctor non lacinia at, sollicitudin vel augue. Pellentesque urna felis, posuere sit amet lacus fermentum, congue dignissim elit. Phasellus eleifend lectus vitae arcu tristique, et pellentesque nunc venenatis. Duis at est velit. Nullam vestibulum lorem auctor vestibulum ornare. Mauris sed libero ut libero pellentesque fermentum eget eu nisi. Nam augue dolor, mollis ut volutpat eget, vulputate sit amet nisl. Etiam at elit dapibus, laoreet est at, sagittis nisl. Pellentesque sed risus in quam pretium porta sed vitae velit. Phasellus risus odio, imperdiet vel vulputate eget, imperdiet eu nisl. Aliquam ultrices lorem nec aliquet consectetur.</p>
           <br />
      </div>
    <div id="img2">
    <img src="someImage.png" />
    </div>

CSS:

body {
min-width:800px;
margin: 0;
background-color:blue; <!--this is a image -->
background-size: 100% auto;
background-attachment:fixed;
height:100%;

}

#menubar{
position:fixed;
top:5px;
right:0;
background-color:none;
height:auto;
z-index:1;
}


#container{
position:absolute;
top:75%;
}

#content{
width:100%;
background-color:white;
margin:0;
}


#img2{
width:100%;
margin:0;
}

#img2 img{
width:100%;
}

在您給出的示例中 ,他們使用的是IntelliJ IDEA的jquery.smoothwheel

檢查此鏈接 也許正是您要尋找的效果。

希望它有用!

由OP編輯:

在@Academia給我這個小提琴后,我努力使它滿足我的需要。

我最終得到的是:

CSS:

body {
    background: url(someImage.png); 
    background-size: 100% auto;
    background-attachment:fixed;
    margin: 0 auto;
    width:100%;
    height:1000px; /*key value to make this script work, else it only scrolls smoothly when your mouse is hovering over the #container*/
    overflow:auto;
    -webkit-overflow-scrolling: touch;
    position:relative;

}

#container{
     width:100%;
    background-color:white;
    position:absolute;
    top:700px; /*I intent to scroll the content over the bg image, that was my struggle, I had it in procentage first*/
}

#content{
    width:100%;
    background-color:white;
    margin:0;
}

HTML:

<body>   

    <div id="container">
        <div id="content">
<p>some content</p>
  </div>
 </div>
</body>

現在,對於javascript,我必須添加一個函數,以將容器的top值保持與屏幕的寬度正確

平滑滾動腳本:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="js/jquery.smoothwheel.js"></script>

<script>

    $(document).ready(function () {
        $("body").smoothWheel()
    });

</script>

腳本將containertop值設為0.36,因為1920/700 = 0.36,這取決於您要具有的top值:

<script type="text/javascript">
   $(document).ready(function () {
   var jqeuryElem = jQuery("#container");
   var w = $(window).width();
   var top = w *0.36;

   jqeuryElem.css("top", top+"px");


   });
   $(window).resize(function () {
       var jqeuryElem = jQuery("#container");
       var w = $(window).width();
       var top = w * 0.36;

       jqeuryElem.css("top", top + "px");
   });
    </script>

網站建成后,我將發布結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM