Barre défilement verticale dans une balise iframe

Résolu/Fermé
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 5 janv. 2014 à 00:55
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 5 janv. 2014 à 16:45
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

heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
Modifié par heliconius le 5/01/2014 à 16:49
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
alexdu17200 Messages postés 1282 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 834
5 janv. 2014 à 01:46
Salut, as-tu toujours ce problème avec ce nouvel attribut pour ta classe iframe?
overflow: hidden;
0