jQuery根據滾動條位置載入相應的內容
1.目標:
實現jQuery根據滾動條位置載入相應的內容:向下滾動時當內容區域滾動到可視視窗高度的一半時,載入動畫內容;向上滾動到相應的內容區域時也重新載入動畫內容!
2.實現思路:
先靜態佈局好HTML結構,使用偽類:hover模擬動畫效果,再使用jQuery 控制動畫類名的切換來實現效果!主要判斷滾動的方向,以及相應方向上載入動畫的時機(即何時才載入動畫的判斷條件!關鍵點!)。
3.思維草稿圖:
向下滾動載入動畫判斷條件:(程式碼中addClass()函式)
向上滾動載入動畫判斷條件:(程式碼中addClass2()函式)
4.程式碼實現:
HTML:
<div class="header">
實現思路:先佈局好靜態佈局,再使用hover模擬動畫行為,再改為類名on等用js進行控制!
</div>
<div class="banner">
<h1>前端開發</h1>
<p>
Web前端開發是從網頁製作演變而來的,名稱上有很明顯的時代特徵。在網際網路的演化程式中,
網頁製作是Web1.0時代的產物,那時網站的主要內容都是靜態的,使用者使用網站的行為也以
瀏覽為主。
</p>
</div>
<div class="con">
<div class="con_l"><img src="images/1.jpg" alt="" /></div>
<div class="con_2"><img src="images/2.jpg" alt="" /></div>
</div>
<div class="news">news</div>
<div class="footer">footer</div>
CSS:
*{margin:0px;padding:0px;}//粗暴地清除預設邊距
body{
font-family:"Arial Microsoft Yahei";
font-size:16px;
font-weight:bold;
}
.header{
width:100%;height:500px;
background-color: #10E668;
}
.banner{
width:100%;height:600px;
background:#F7CF3B;
text-align: center;
margin:30px auto;
overflow: hidden;
}
.banner h1{
font-size:30px;
padding:50px 0;
position:relative;
top:400px;
transition:all 0.3s 0.3s linear;
}
.banner p{
font-size:18px;
width:80%;
margin:30px auto;
line-height: 1.8em;
text-align: left;
text-indent:2em;
position:relative;
top:400px;
transition:all 0.5s 0.5s linear;
}
//動畫類
.banner.on h1,.banner.on p{
top:0px;
}
.con{
width:80%;height:720px;
background:#508E5A;
margin:20px auto;
overflow: hidden;
}
.con img{
width:400px;height:auto;
}
.con_l{
float: left;
position:relative;
left:-400px;
transition:all 0.3s 0.3s linear;
}
.con_2{
float: right;
position:relative;
right:-400px;
transition:all 0.3s 0.3s linear;
}
//動畫類
.con.on .con_l{
left:0;
}
.con.on .con_2{
right:0;
}
.news{
width:100%;height:600px;
background:#CA3400;
}
.footer{
width:100%;height:600px;
background-color: #ccc;
}
jQuery:
$(function(){
/*version 0.1.0 函式封裝*/
//向下滾動時
function addClass(ele){
var winH=$(window).height()*0.5;//可視視窗的高度的一半,更改0.5可以調整滾動到底部、中部、頂部時候開始載入
var top=$(window).scrollTop();//可視視窗的滾動高度
var ele_t=$(ele).offset().top;//內容區的top
var ele_h=$(ele).height();//內容區的高
//判斷條件,看草稿圖1!
if(top<ele_t-winH){
$(ele).removeClass('on');
}else if((top>ele_t-winH)&&(top<ele_t+ele_h)){
$(ele).addClass('on');
}else{
$(ele).removeClass('on');
}
}
//向上滾動時,看草稿圖2!
function addClass2(ele){
var winH=$(window).height()*0.5;//更改0.5可以調整滾動到底部、中部、頂部時候開始載入
var top=$(window).scrollTop();//可視視窗的滾動高度
var ele_t=$(ele).offset().top;//內容區的top
var ele_h=$(ele).height();//內容區的高
//判斷條件
if(top>ele_t+ele_h){
$(ele).removeClass('on');
}else if((top<ele_t+ele_h)&&(top>ele_t-winH*2)){
$(ele).addClass('on');
}else{
$(ele).removeClass('on');
}
}
//獲取前一次的滾動高度(這裡是第一次)
var firstTop=$(window).scrollTop();
$(window).scroll(function(){
//每次滾動重新獲取滾動高度
var lastTop=$(this).scrollTop();
//後一次滾動高度大於前一次滾動高,說明向下滾動,否則想上滾動!
if(lastTop>firstTop){
//載入對應的內容區域
addClass('.banner');
addClass('.con');
}else{
addClass2('.banner');
addClass2('.con');
}
//每次都將後一次的滾動高度賦值給前一次的滾動高度
firstTop=lastTop;
});
});
5.總結:
這種效果用於模擬滾動載入動畫內容,重難點在於判斷滾動的方向、相應滾動方向上載入動畫時候的判斷條件,感覺邏輯還是有待提升的!q(≧▽≦q)
相關文章
- jQuery內容橫向拖拽滾動jQuery
- jQuery寫的文章內容頁右側浮動滾動jQuery
- css實現隱藏滾動條並可以滾動內容CSS
- 使用js控制滾動條的位置JS
- uniapp根據導航欄的標題定位到相應錨點位置APP
- 根據編號展開內容
- JavaScript 滾動條定位指定位置JavaScript
- matlab根據rgb通道值用plot畫相應顏色的線條Matlab
- 3種方法實現CSS隱藏滾動條並可以滾動內容CSS
- html/css 滾動到元素位置,顯示載入動畫HTMLCSS動畫
- react記錄頁面的滾動條位置React
- 如何隱藏scroll-Y縱向滾動條,並不影響內容滾動的方法
- 我一個div有橫向滾動條,如何讓他頁面一載入就讓他滾動到中間的位置
- 根據字典,轉成相應的進位制
- JavaScript字串物件 之 根據字元返回位置、根據位置返回字元、字串操作方法JavaScript字串物件字元
- Jquery外掛Nicescroll 製作漂亮的滾動條jQuery
- Vue 返回記住滾動條位置詳解Vue
- 根據IP定位地理位置
- SpringBoot使用JPA根據實體類自動生成相應表-mysqlSpring BootMySql
- js根據checkbox的選中轉態輸出整行內容JS
- 論移動裝置內容的橫向滾動和豎向滾動
- 根據瀏覽器的滑動條 固定導航欄瀏覽器
- Vue完美記住滾動條和實現下拉載入Vue
- RecyclerView滾動位置,滾動速度設定View
- element table的selection根據條件禁用
- 直播軟體app開發,導航條根據位置移動實現定位、顏色過渡動畫效果APP動畫
- js實現 web頁面的滾動條下拉時載入更多JSWeb
- Android文字過長時根據關鍵字省略內容EllipsizeAndroid
- 【python012】Python根據頁碼處理PDF檔案的內容Python
- 根據JavaScript中原生的XMLHttpRequest實現jQuery的AjaxJavaScriptXMLHTTPjQuery
- 分享根據《簡單微積分》製作出內含 16 個相關動畫PPT動畫
- Vue根據條件新增click事件Vue事件
- jquery製作圖片瀑布流點選按鈕載入更多內容jQuery
- tkinter 列表框內容上下移動位置
- CYmysql根據json欄位內容作為查詢條件(包括json陣列)檢索資料dvnMySqlJSON陣列
- 如何用堆疊來儲存和恢復滾動條位置
- Linux命令根據某一列對檔案內容去重Linux
- html如何根據檔案路徑顯示檔案內容(pdf)HTML
- 頁面內跳轉到相應位置的3種方法