Bootstrap déroulante du bouton à l'intérieur de réactif de table ne sont pas visibles en raison de défilement
J'ai un problème avec les boutons de menu déroulant à l'intérieur des tables lors de sont sensibles et faites défiler active parce que la baisse n'est pas visible à cause de overflow: auto;
de la propriété. Comment puis-je régler ce problème afin de montrer déroulante de l'option de bouton lorsque cela est effondrée? Je peux utiliser des jQuery mais après j'ai des problèmes avec défilement gauche-droite, j'ai donc décidé de trouver une autre solution.
J'ai joint une photo pour mieux comprendre.
Vous devez vous connecter pour publier un commentaire.
J'ai résolu moi-même et j'ai mis la réponse dans le champ d'application pour aider les autres utilisateurs qui ont le même problème : Nous avons un événement dans le bootstrap et nous pouvons utiliser cet événement pour définir
overflow: inherited
mais cela fonctionnera si vous n'avez pas une propriété css sur votre conteneur parent.et c'est le violon
info:
Dans ce violon exemple fonctionne étrange et je ne sais pas pourquoi mais dans mon projet fonctionne très bien.$('body') .on('show.bs.dropdown', '.table-responsive', function () { $(this).css("overflow", "visible"); }) .on('hide.bs.dropdown', '.table-responsive', function () { $(this).css("overflow", "auto"); });
.table-responsive
classe) sont complètement cachés lorsque vous essayez de modifier eux.Un CSS solution est de permettre à l'axe des y à débordement.
http://www.bootply.com/YvePJTDzI0
MODIFIER
Un autre CSS seule solution est d'en tenant compte appliquer le dépassement de capacité basée sur la fenêtre d'affichage largeur:
https://www.codeply.com/go/D3XBvspns4
J'avais pris une approche différente, j'avais pris l'élément de la mère et le mettre à la position absolue par jQuery
De travail JS fidle:
http://jsfiddle.net/s270Lyrd/
La JS solution que j'utilise.
Cette solution a très bien fonctionné pour moi :
Plus de détail: https://github.com/twbs/bootstrap/issues/15374
Pour la référence, c'est 2018 et je suis en utilisant BS4.1
Essayez d'ajouter
data-boundary="viewport"
pour le bouton qui permet d'activer la liste déroulante (l'un avec la classedropdown-toggle
). Voir https://getbootstrap.com/docs/4.1/components/dropdowns/#optionsJ'ai une solution en utilisant uniquement CSS, il suffit d'utiliser la position relative pour les listes déroulantes à l'intérieur de la table-réactif:
https://codepen.io/leocaseiro/full/rKxmpz/
mes 2¢ rapide correctif global:
Explications:
Quand un dropdown-menu à l'intérieur d'un '.table-réactif " est affichée, le calcul de la hauteur de la table et de l'étendre (avec un rembourrage) à la hauteur nécessaires à l'affichage du menu. Le menu peut être de toute taille.
Dans mon cas, ce n'est pas la table qui a le".table-réactif " la classe, c'est un emballage div:
De sorte que la table $var dans le script est en fait un div! (juste pour être clair... ou pas) 🙂
Remarque: j'ai l'envelopper dans une fonction, donc mon IDE peut effondrement de la fonction 😉 mais c'est pas obligatoire!!
Définir cette liste de propriétés. Bonne Chance!
Fortement recommandé et est la solution choisie, n'est pas toujours la meilleure solution. Malheureusement, sa la solution linkedin récemment utilisées et il crée de multiples barres de défilement sur la page en fonction de la situation.
Ma méthode est légèrement différente.
I contient la table sensibles div dans un autre div. Puis j'ai appliqué hauteur de 100%, width:100%, l'affichage du bloc et de la position absolue de sorte que la hauteur et la largeur est basé sur la taille de la page, et de définir overflow hidden.
Ensuite sur la table réactive div, j'ai ajouté un min-height de 100%
Comme vous pouvez le voir dans l'exemple ci-dessous, sans ajout de barres de défilement, pas drôle de comportement, et pratiquement aussi son à l'aide de pourcentages - il devrait fonctionner indépendamment de la taille de l'écran. Je n'ai pas tester ce pour cela cependant. Si cela échoue pour une raison quelconque, on peut le remplacer à 100% avec 100vh et 100vw respectivement.
HTML:
Nettoyé @Wazime solution un peu. Fonctionne très bien comme une solution générale.
Basé sur la accepté de répondre et la réponse de @LeoCaseiro voici ce que j'ai fini par utiliser dans mon cas :
sur les écrans géants de la liste déroulante ne seront pas cachés derrière le reponsive-table et dans le petit écran, il sera caché, mais c'est ok parce qu'il n'y est fait défiler la barre dans le mobile de toute façon.
Espère que cela aide quelqu'un.
Burebistaruler réponse ok pour moi sur ios8 (iphone4s) mais ne débite pas woks sur android qui était auparavant de travail.
Ce que j'ai donne qui Fonctionne pour moi sur ios8 (iphone4s) et andoir est:
Cela pourrait être utile pour quelqu'un d'autre. Je suis en utilisant DatatablesJS. - Je ajouter 500px à la hauteur de la table. Je le fais parce que les tables de données vous permettent d'utiliser 10, 20, etc les pages de votre table. J'ai donc besoin de calculer dinamically la table de la hauteur.
Lorsque la liste déroulante est affichée, j'ai ajouter de la hauteur.
Lorsque déroulante est invisible ils, je réinitialiser la table d'origine de la hauteur.
Et le HTML
Avant:
Après une liste déroulante s'affiche:
Nous avons résolu ce problème ici au travail en appliquant un .dropup classe à la liste déroulante lors de la liste déroulante est proche du bas de tableau.entrez la description de l'image ici
$('table tr:nth-last-child(-n+3) td').addClass('dropup')
.Cela a fonctionné pour moi dans le Bootstrap 4 car il y a différents points d'arrêt que la v3:
À l'intérieur de bootstrap.recherche css le code suivant:
...et mise à jour avec cette:
Simplement Utiliser Ce
Il fonctionne sur Chrome, mais pas IE10 ou à Bord en raison d'hériter de biens n'est pas pris en charge
Dans mon cas, cela fonctionne très bien: