js實現簡單定位的一個方法 element.scrollIntoView()

js實現簡單定位的一個方法   element.scrollIntoView()  可用讓當前元素滾動到瀏覽器窗口的可視區域內(不需要獲取滾動條位置之類的操作,使用非常簡單,但只能實現一些簡單的定位,其中element指的是要跳轉到的元素)

該方法可用傳兩種參數:

第一種是直接傳入布爾值,false或true

  • 使用如下:
  • element.scrollIntoView(true);  默認定位,效果:垂直方向start(頂端)對齊,水平方向默認nearest(就近)對齊
  • element.scrollIntoView(false);    效果:垂直方向end(底端)對齊,水平方向默認nearest(就近)對齊
  • 不傳參數的時候是 element.scrollIntoView(); 相當於 element.scrollIntoView(true);

 

第二種是一個包含幾種可選(非必選)屬性的對象

  • 使用如下:
  • element.scrollIntoView({ behavior: ''smooth", block: "end", inline: "neareat" });
var element = document.getElementById("box");

element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({behavior: "smooth", block: "end", inline: "nearest"});

其中behavior、block、inline幾個屬性都是可選的:

  • behavior  用來定義動畫過渡效果,可設置的值有“auto”或“smooth”,默認值是auto
  • block  用來定義垂直方向的對齊,可設置的值有“start”、“center”、“end”、“nearest”,默認值是“start”
  • inline  用來定義水平方向的對齊,可設置的值與block相同,默認值爲“nearest”

這裏我結合了vue裏的ref來使用了該方法

 queAddTimer(que){
    setTimeout(() => {
       let queItemArr = this.$refs.queItem; 
       let queId = 'queItem-' + que.question_id;
       queItemArr.forEach(queItem => {
           if(queItem.id == queId){
               queItem.scrollIntoView({ behavior: "smooth", block: "start"});
           }
       });
    },1000);
 }

插播一個 使用vue並且不操作dom,獲取某一個元素的方法:ref

ref的使用:

只需要在需要的元素上定義 ref="inputName",然後給這個元素添加一個id,就可以用this.$refs.inputName取到這個元素,如上圖

html中如下:

<input type="text"  ref="inputName"  id="input_id">

 

下面是這個方法的web API接口參考:

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章