Modification de la position de Bootstrap popovers basé sur la liste des X de position par rapport au bord de la fenêtre?
J'ai parcouru l'Internet beaucoup et alors que je trouve cette stackoverflow post perspicace Est-il possible de changer la position de Bootstrap popovers basé sur la largeur de l'écran?, il n'a toujours pas répondu à ma question, probablement à cause de ma difficulté à comprendre la position/offset.
Voici ce que je suis en train de faire. Je veux le Twitter Bootstap Liste position à DROITE, à moins que le hotspot liste sera positionné au-delà de la fenêtre d'affichage, puis je veux qu'il soit positionné à GAUCHE. Je suis en train de faire un iPad web app, qui a des points chauds, lorsque vous appuyez sur un hotspot, l'information s'affiche mais je ne veux pas qu'il apparaisse à l'extérieur de la fenêtre d'affichage lorsque le défilement horizontal est verrouillé.
Je pense que ça serait quelque chose comme ceci:
$('.infopoint').popover({
trigger:'hover',
animation: false,
placement: wheretoplace
});
function wheretoplace(){
var myLeft = $(this).offset.left;
if (myLeft<500) return 'left';
return 'right';
}
Pensées? Merci!
Vous devez vous connecter pour publier un commentaire.
Je viens de remarquer que le placement option peut être soit une chaîne ou un fonction retourne une chaîne qui fait le calcul à chaque fois que vous cliquez sur une fenêtre pop-over-mesure lien.
De ce fait, il est très facile de reproduire ce que vous avez fait sans le $.chaque fonction:
auto
ne fonctionne pas toujours parfaitement en fonction de la mise en page et le contenu que vous mettez dans la liste.left 515
&top 110
Basée sur la documentation, vous devriez être en mesure d'utiliser
auto
en combinaison avec le placement préféré par exempleauto left
http://getbootstrap.com/javascript/#popovers: "Lorsque "auto" est spécifié, il sera dynamiquement réorienter la liste. Par exemple, si le placement est "auto" de gauche", l'info-bulle s'affichera à gauche lorsque cela est possible, sinon, il aura le droit d'affichage."
J'ai essayé de faire la même chose, et alors réalisé que cette fonctionnalité existait déjà.
viewport
si vous ne voulez pas qu'il soit calculé sur la base des éléments de parent.Pour Bootstrap 3, il est
qui est plus facile. Par défaut, il sera juste, mais si l'élément est situé dans le côté droit de l'écran, la liste sera à gauche. Il devrait donc être:
J'ai donc trouvé une façon de le faire efficacement. Pour mon projet, je suis en train de construire un iPad site web, donc je savais exactement ce que le pixel X/Y de la valeur pour atteindre le bord de l'écran. Votre thisX et béthisy valeurs varient.
Depuis les popovers sont placés en inline style de toute façon, il me suffit de saisir le haut et à gauche de valeurs pour chaque lien pour décider quelle direction la liste devrait être. Ceci est fait en ajoutant html5 données - valeurs .liste() utilise lors de l'exécution.
Les remarques/améliorations sont les bienvenus, mais de ce fait le travail, si vous êtes prêt à mettre les valeurs manuellement.
bchhun réponse m'a mis sur la bonne voie, mais je voulais vérifier pour l'espace disponible entre la source et la fenêtre d'affichage de pointe. Je voulais également respecter les données de placement attribut comme une préférence appropriée de la base s'il n'y avait pas assez d'espace. De cette façon, "droit" d'aller toujours droit à moins qu'il n'y avait pas assez d'espace pour la liste à afficher sur le côté droit, par exemple. C'était la façon dont j'ai géré ça. Il fonctionne pour moi, mais il se sent un peu lourd. Si quelqu'un a des idées pour un monde plus propre, plus concis solution, je serais intéressé de voir.
Vous pouvez également essayer celui-ci,
==> Get cible/la position de la source dans la fenêtre d'affichage
==> Vérifiez que l'espace de fond est moins que votre infobulle hauteur
==> Si l'espace de fond est moins que votre info-bulle de la hauteur, puis il suffit de faire défiler la page jusqu'
Vous pouvez utiliser la fonction auto dans le placement des données comme data-placement="auto" de gauche". Il va automatiquement ajuster selon la taille de votre écran et de placement par défaut sera de gauche.
En plus de bchhun de la grande réponse, si vous voulez absoulte de positionnement, vous pouvez le faire
J'ai résolu mon problème en AngularJS comme suit:
Cette fonction la position de Bootstrap liste flotter à la meilleure position, basée sur la position de l'élément.
Vous pouvez également essayer celui-là, si u besoin dans presque tous les endroits dans la page.
U pouvez configurer de façon générale, puis il suffit de l'utiliser.
De cette façon, vous pouvez également utiliser l'élément HTML et tout ce à quoi tu veux 🙂
JS:
HTML:
Plus
Mise à jour
Si tu veux le popup après avoir cliquez sur, u pouvez modifier le JS option pour
trigger: "click"
comme celui-U peut aussi le personnaliser en HTML ading
data-trigger="click"
comme celui-Je pense qu'il sera plus orienté de code et plus de ré-utilisable et plus utile à tous :).