整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「每天學點知識」 如何實現應用跳轉

          「每天學點知識」 如何實現應用跳轉

          近有個新的需求, 需要實現應用內跳轉

          也就是點擊一個鏈接, 或者點擊一個button, 跳轉到另外一個頁面, 或者是另外一個app

          其實日常生活已經接觸很多了, 比如那種點擊廣告就打開淘寶,拼多多

          或者微信掃一掃, 打開了微信瀏覽器, 我們選擇用Safari或者安卓自帶瀏覽器打開, 下載安裝好之后, 點擊瀏覽器的鏈接, 就可以打開app了

          一般都是iOS或者Android的app, 用原生的native的方式寫的.

          但是一些app是嵌入網頁webview來操作的, 所以也就有了javascript的跳轉

          了解到需要使用scheme來跳轉

          具體怎么跳轉:

          window.location.href=taobao://path/page/xxx

          第一個是taobao, 對應的是應用的名字

          后面的path/page/xxx, 對應的具體跳轉的頁面

          app跳轉的知識點還很多, 最近做的功能涉及到這個新的知識點, 記錄下

          起html的錨點這個概念,你可能會感到會陌生,感覺自己沒有聽過。但是如果說起它的作用,你可能就恍然大悟了,就像你說起一個演員,可能不知道是誰,但是說起它演的一個角色可能立馬就知道那個人是誰了。

          那么,什么是錨點呢?

          錨點存在于html中,在默認情況下,可以快速的定位到指定元素,并將元素置于頁面最頂端。當然我們可以按照自己的需求來確定錨點的位置,不一定要讓其定位在頂部。現如今有無數多的頁面已經用上了錨點,比如Vue.js的官網,在我們點擊標題“Vue.js是什么”和標題“起步”的時候,標題都會自動移到頁面頂端。

          錨點的使用

          那接下來,我們就來看看幾種錨點的使用方法。

          • id定位

          最基本的使用方法如下,當點擊<a>標簽時,頁面會相應的將該div內容置頂

          錨點的id定位方法

          • name定位

          除了id,還可以通過name進行定位,不過需要主要的是,如果采用name屬性進行定位的話,只適用于a標簽,類似于p標簽等都不支持。

          錨點的name定位方法

          • javascript代碼進行定位

          在原生的javascript中,有一個scrollIntoView()方法,可以實現頁面的錨點

          javascript方法實現錨點

          • 一個綜合的例子

          講了三種實現方法后,接下來看一個實際運用的例子。首先是實際效果圖,在點擊左側欄時,頁面右邊會相應的顯示指定段落的內容

          錨點的實際使用

          首先看下html頁面的內容,左側的ul代碼

          左側的ul代碼

          右側的內容部分代碼

          右側內容部分代碼

          css部分的代碼

          css部分的代碼

          將上述的代碼寫在一個html文件中,便可實現左側欄點擊,右側欄顯示相應內容的效果。

          • 特殊情況

          在實際項目中,我們總會遇到這樣一種情況,在頁面頂部有固定頭內容的時候,如果直接使用上述方法,會得不到想要的效果

          直接使用錨點的效果圖

          通過該圖可以看出,第三段內容的標題被遮住了,實際應該往下再顯示一點

          那么,我們該怎么解決這個問題呢?在這里我想到了兩種方法,第一種是在每個內容div上加一個隱藏的p元素,給p元素一個定高,再向上偏移,這種方法會導致頁面出現很多個多余的p元素,不推薦使用。

          第二種是利用偽元素,偽元素可以占用實際的高度,這是推薦使用的方法

          偽元素的樣式

          通過給h3標簽添加偽元素樣式,可完美解決這個問題,效果圖如下

          使用偽元素后的效果圖

          • 總結

          今天的內容你會了么?如果還沒有掌握的話,可以按照文章中的代碼,進行實踐,代碼總是要多敲才更容易理解。

          如果喜歡的話,記得關注小編噢,小編后續會堅持出更多技術性的文章,如果有任何問題,也歡迎提問,小編都會盡力解答的。

          目中經常會出現點擊跳轉錨點的方法,比如給一個a標簽一個href=“#錨點”,然后要跳的錨點給個id=“錨點”,這樣就實現簡單的跳轉,但是這樣在url地址欄后面都會出現一個諸如www.csdn.net#錨點,然后你點擊給一次后退都是退回上一個選擇的錨點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>

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


          主站蜘蛛池模板: 精品一区二区三区中文字幕| 高清一区二区三区视频| 无码日韩AV一区二区三区| 久久一区二区精品| 国产精品视频免费一区二区三区| 色欲精品国产一区二区三区AV| 无遮挡免费一区二区三区| 精品国产AV无码一区二区三区| 日本免费一区二区在线观看| 久久精品国产第一区二区三区| 国产乱码精品一区二区三区中文 | 日韩精品一区二区三区在线观看l| 久久久99精品一区二区| 无码人妻精品一区二区三区蜜桃| 国内精品一区二区三区在线观看| 国产乱码精品一区二区三 | 无码国产精品一区二区免费I6| 精品视频一区在线观看| 亚洲乱码一区二区三区在线观看| 亚洲Av无码一区二区二三区| 色一情一乱一伦一区二区三区日本 | 国内精自品线一区91| 亚洲综合无码精品一区二区三区 | 青娱乐国产官网极品一区| 99精品一区二区免费视频 | 亚洲日本一区二区| 亚洲日本一区二区三区在线不卡| 亚洲国产精品综合一区在线| 亚洲AV无码一区二三区| 伊人色综合视频一区二区三区 | 91在线一区二区| 成人免费av一区二区三区| 精品无人乱码一区二区三区| 免费一区二区三区| 一区二区三区免费视频观看| 毛片一区二区三区| 亚洲AV综合色区无码一区| 亚洲一区二区三区免费| 好吊妞视频一区二区| 国产精品一区二区久久| 无码国产精品一区二区免费16|