Barre défilement verticale dans une balise iframe

Résolu
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   -  
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   -
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 539 Date d'inscription   Statut Membre Dernière intervention   142
 
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 1302 Date d'inscription   Statut Membre Dernière intervention   836
 
Salut, as-tu toujours ce problème avec ce nouvel attribut pour ta classe iframe?
overflow: hidden;
0