Barre défilement verticale dans une balise iframe

[Résolu/Fermé]
Signaler
Messages postés
499
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
27 avril 2021
-
Messages postés
499
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
27 avril 2021
-
Bonsoir,

J'ai une page qui contient une balise iframe

<iframe src="tarifcat.php?cat=6"
name="tarifcat"
width="800"
height="370"
frameborder="0"></iframe>

La page tarifcat.php affiche ici les tarifs de la catégorie de produits n° 6 mais elle peut aussi bien afficher une autre catégorie de produits. Certaines catégories contiennent peu de produits, d'autres beaucoup.

iframe me place systématiquement une barre de défilement verticale, même s'il n'y a que deux produits à afficher. Dans ce cas, la barre de défilement verticale est inutile.

J'aimerais que cette barre de défilement verticale ne soit affichée qu'en cas de nécessité. J'ai lu sur une doc qu'on pouvait ajouter l'attribut scrolling="no|yes|auto".

scrolling="auto" est inopérant.

En effet, le W3C ( https://www.w3schools.com/tags/tag_iframe.asp ) précise que l'attribut scrolling n'est pas supporté en HTML5.

J'ai lu par ailleurs d'autres propositions CSS telles que overflow:hidden. La barre disparait et c'est bien mais le défilement, lorsqu'il est nécessaire, est impossible. Il y a l'attribut CSS overflow-y: hidden|scroll mais pas auto.

Mon souhait :
- si la page affichée dans l'iframe est courte -> pas de barre de défilement verticale
- si la page affichée dans l'iframe est longue -> affichage de cette barre de défilement.

Quelqu'un a-t-il une solution ? (avec iframe ou un autre moyen)

Merci beaucoup pour votre aide et vos réponses



2 réponses

Messages postés
499
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
27 avril 2021
115
Bonjour,

J'ai indiqué cela dans mon message initial. "overflow: hidden" fait disparaître cette barre de défilement. Mais...

Supposons que, pour rester dans l'espace de la page, l'iframe doive afficher 20 lignes au maximum. Si le nombre d'articles dans la catégorie de produit est inférieur à 20, tout va très bien puisque "overflow: hidden" fait disparaître cette barre de défilement qui devient inutile puisque tout est affiché. Il n'y a effectivement pas besoin de faire défiler.

En revanche, si le nombre d'article est supérieur à 20 (admettons 30 pour l'exemple), seuls les 20 premiers seront affichés et, puisque "overflow: hidden" fait disparaître cette barre de défilement, je n'ai alors plus le moyen de faire défiler le cadre dans l'iframe pour voir les 10 derniers articles.

J'ai trouvé la solution là : https://www.zonecss.fr/proprietes-css/overflow-css.html

"overflow : auto" ne fonctionne pas avec iframe mais avec une div dimensionnée. Volià la solution trouvée et fonctionnelle :

<div style="display:block; width:800px; height:370px; overflow:auto">
<table border="0" cellspacing="0" cellpadding="0" width="750">
...
PHP: Production des lignes d'articles de la catégorie
...
</table>
</div>

Finalement, pour ce que je voulais faire, c'est nettement mieux qu'une iframe ; ça m'évite un fichier php "producteur de lignes" pour alimenter l'iframe. Tout est dans la page.

Un problème sans solution est un problème mal posé. (Albert Einstein)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
1281
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
7 mars 2016
808
Salut, as-tu toujours ce problème avec ce nouvel attribut pour ta classe iframe?
overflow: hidden;