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