亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

項目中經常會出現點擊跳轉錨點的方法,比如給一個a標簽一個href=“#錨點”,然后要跳的錨點給個id=“錨點”,這樣就實現簡單的跳轉,但是這樣在url地址欄后面都會出現一個諸如www.solves.cm.cn#錨點,然后你點擊給一次后退都是退回上一個選擇的錨點url,這里總結一些跳轉錨點的方法。

第一種方法,也是最簡單的方法是錨點用<a>標簽,在href屬性中寫入DIV的id。如下:

<!DOCTYPE html>

<html>

<head>

<style>

div {

height: 800px;

width: 400px;

border: 2px solid black;

}

h2 {

position: fixed;

margin:50px 500px;

}

</style>

</head>

<body>

<h2>

<a href="#div1">to div1</a>

<a href="#div2">to div2</a>

<a href="#div3">to div3</a>

</h2>

<div id="div1">div1</div>

<div id="div2">div2</div>

<div id="div3">div3</div>

</body>

</html>

這種方法的缺點是點擊錨點之后,瀏覽器的URL會發生變化,如果刷新可能會出現問題。

第二種方法是在js事件中通過window.location.hash="divId"跳轉,但地址也會發生變化,感覺跟第一種方法沒區別,甚至更麻煩。

第三種方法是用animate屬性,當點擊錨點后,頁面滾動到相應的DIV。接著上面的代碼,具體添加如下代碼:

<script type="text/JAVAscript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>

<script type="text/JavaScript">

$(document).ready(function() {

$("#div1Link").click(function() {

$("html, body").animate({

scrollTop: $("#div1").offset().top }, {duration: 500,easing: "swing"});

return false;

});

$("#div2Link").click(function() {

$("html, body").animate({

scrollTop: $("#div2").offset().top }, {duration: 500,easing: "swing"});

return false;

});

$("#div3Link").click(function() {

$("html, body").animate({

scrollTop: $("#div3").offset().top }, {duration: 500,easing: "swing"});

return false;

});

});

</script>

注意:運行上面的腳本的之前,先將為錨點增加相應的id,同時去掉href屬性。

$("html, body")可以替換為響應的div,如果不起作用,試著給該div增加overflow:scroll屬性。

另外,腳本可以進一步優化,自己來試試

這樣做的好處是:URL地址不會變,同時點擊錨點時會自動響應scroll事件,不需要重新綁定。

缺點是:如果頁面復雜的話,偏移值可能會發生變化需要算法輔助。

第四種方法是用js的srollIntoView方法,直接用:

document.getElementById("divId").scrollIntoView();

比如:

document.querySelector("#roll1").onclick = function(){

document.querySelector("#roll1_top").scrollIntoView(true);

}

這里就是點擊id是#roll1的元素可以滾動到id是#roll1_top的地方,這里的#roll1和#roll1_top最好是一一對應的,

這種方法的好處,是URL不會變,同時能夠響應相應的scroll事件,不需要算法什么的。代碼如下:

<html>

<head>

<title>HTML5_ScrollInToView方法</title>

<meta charset="utf-8">

<script type="text/javascript">

window.onload = function(){

/*

如果滾動頁面也是DOM沒有解決的一個問題。為了解決這個問題,瀏覽器實現了一下方法,

以方便開發人員如何更好的控制頁面的滾動。在各種專有方法中,HTML5選擇了scrollIntoView()

作為標準方法。

scrollIntoView()可以在所有的HTML元素上調用,通過滾動瀏覽器窗口或某個容器元素,

調用元素就可以出現在視窗中。如果給該方法傳入true作為參數,或者不傳入任何參數,那么

窗口滾動之后會讓調動元素頂部和視窗頂部盡可能齊平。如果傳入false作為參數,調用元素

會盡可能全部出現在視口中(可能的話,調用元素的底部會與視口的頂部齊平。)不過頂部

不一定齊平,例如:

//讓元素可見

document.forms[0].scrollIntoView();

當頁面發生變化時,一般會用這個方法來吸引用戶注意力。實際上,為某個元素設置焦點也

會導致瀏覽器滾動顯示獲得焦點的元素。

支持該方法的瀏覽器有 IE、Firefox、Safari和Opera。

*/

document.querySelector("#roll1").onclick = function(){

document.querySelector("#roll_top").scrollIntoView(false);

}

document.querySelector("#roll2").onclick = function(){

document.querySelector("#roll_top").scrollIntoView(true);

}

}

</script>

<style type="text/css">

#myDiv{

height:900px;

background-color:gray;

}

#roll_top{

height:900px;

background-color:green;

color:#FFF;

font-size:50px;

position:relative;

}

#bottom{

position:absolute;

display:block;

left;0;bottom:0;

}

</style>

</head>

<body>

<button id="roll1">scrollIntoView(false)</button>

<button id="roll2">scrollIntoView(true)</button>

<div id="myDiv"></div>

<div id="roll_top">

scrollIntoView(ture)元素上邊框與視窗頂部齊平

<span id="bottom">scrollIntoView(false)元素下邊框與視窗底部齊平</span>

</div>

</body>

</html>

個人建議使用第四種方法。

分享到:
標簽:html
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定