0
divのオフセットを4つの異なる位置に動的に設定しようとしています。JQueryの.offset()が 'top'の値を設定していません
- 左上
- 右上
- 左下
- 右上
私の現在のソリューションは、入力要素の.position()に依存しています。しかし、.css()と.offset()を使用した後、私は '左'オフセットを設定することができますが、 'top'ではなく、かなり奇妙です。 $("#NumberPicker")
は、そのオフセットのために頼ることで入力されている間
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")
それでも私は私が必要なものを達成するために、異なる方法を使用しても、これを引き起こしたのか、あまりにもわから
.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が含まれていますが、それは関連しているとは限りません。 '.np-container'は入力のフォーカスの上に見えます。 –