gpt4 book ai didi

javascript - 如何确保 Twitter Bootstrap 弹出窗口可见?

转载 作者:行者123 更新时间:2023-12-03 08:12:03 25 4
gpt4 key购买 nike

有谁知道 twitter bootstrap 的 popover 组件的扩展,它动态更改放置选项以确保 popover 显示在屏幕上?

最佳答案

位置可以是函数而不是字符串。 编写的自动放置示例胖 然后由 移植到最新版本的 Bootstrap 哭泣者是这里项目的 github 问题之一:https://github.com/twitter/bootstrap/issues/345

这是将 CoffeeScript 编译为 JavaScript 的结果:

$("a[rel=popover]").popover({
placement: function(tip, element) {
var $element, above, actualHeight, actualWidth, below, boundBottom, boundLeft, boundRight, boundTop, elementAbove, elementBelow, elementLeft, elementRight, isWithinBounds, left, pos, right;
isWithinBounds = function(elementPosition) {
return boundTop < elementPosition.top && boundLeft < elementPosition.left && boundRight > (elementPosition.left + actualWidth) && boundBottom > (elementPosition.top + actualHeight);
};
$element = $(element);
pos = $.extend({}, $element.offset(), {
width: element.offsetWidth,
height: element.offsetHeight
});
actualWidth = 283;
actualHeight = 117;
boundTop = $(document).scrollTop();
boundLeft = $(document).scrollLeft();
boundRight = boundLeft + $(window).width();
boundBottom = boundTop + $(window).height();
elementAbove = {
top: pos.top - actualHeight,
left: pos.left + pos.width / 2 - actualWidth / 2
};
elementBelow = {
top: pos.top + pos.height,
left: pos.left + pos.width / 2 - actualWidth / 2
};
elementLeft = {
top: pos.top + pos.height / 2 - actualHeight / 2,
left: pos.left - actualWidth
};
elementRight = {
top: pos.top + pos.height / 2 - actualHeight / 2,
left: pos.left + pos.width
};
above = isWithinBounds(elementAbove);
below = isWithinBounds(elementBelow);
left = isWithinBounds(elementLeft);
right = isWithinBounds(elementRight);
if (above) {
return "top";
} else {
if (below) {
return "bottom";
} else {
if (left) {
return "left";
} else {
if (right) {
return "right";
} else {
return "right";
}
}
}
}
}
});

除了一种情况外,它对我来说效果很好:如果该项目位于右上角,则作为选项之一的弹出框没有出现的好位置,并且它部分显示在屏幕外。

关于javascript - 如何确保 Twitter Bootstrap 弹出窗口可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com