0
我試圖動態設置一個div的偏移量到四個不同的位置;JQuery .offset()沒有設置「頂部」值
- 左上
- 右上
- 左下
- 右上
我目前的解決方案依賴於輸入元素的.POSITION()。但是,使用.css()和.offset()後,我只能設置'左'偏移量,而不是'頂部',這很奇怪。
var position_picker = function() {
const container = $(".np-container");
const pos = $("#NumberPicker").position();
switch (position) {
case "top-left":
top = pos.top;
left = pos.left;
container.addClass("top-left");
break;
case "top-right":
top = parseInt(container.height());
left = parseInt($("#NumberPicker").width()) - parseInt(container.width()) + pos.left;
container.addClass("top-right");
break;
case "bottom-right":
top = pos.top + parseInt($("#NumberPicker").height());
left = parseInt($("#NumberPicker").width()) - parseInt(container.width()) + pos.left;
container.addClass("bottom-right");
break;
default:
top = pos.top + parseInt($("#NumberPicker").css("height"));
left = pos.left;
container.addClass("bottom-left");
break;
}
$(".np-container").offset({
top: top + parseInt($("#NumberPicker").css("marginTop")),
left: left + parseInt($("#NumberPicker").css("marginLeft"))
})
}
的$(".np-container")
是我試圖動態位置的元素,而$("#NumberPicker")
是它是依靠其偏移的輸入端。
爲$(".np-container")
的CSS是依然沿用
.np-container {
position: absolute;
border: 1px solid #ddd;
display: none;
margin-top: 5px;
border-radius: 3px;
}
.np-container:before {
content: '';
border: 10px solid transparent;
border-bottom-color: #ddd;
position: absolute;
}
.np-container > .np-body {
padding: 5px 3px;
overflow-y: scroll;
}
你能不能也給我們css? – Ivan
@Ivan css被包括在內,不確定它是否相關 - 除了'position:absolute;'之外。 '.np-container'在輸入的焦點上是可見的。 –