51 votes

Safari/Chrome (Webkit) - Impossible de masquer la barre de défilement verticale d'une iframe

J'ai un iframe sur www.example.com qui pointe vers support.example.com (qui est un CNAME vers un domaine étranger).

Je redimensionne automatiquement la hauteur de mon iframe afin que le cadre n'ait pas besoin de barres de défilement pour afficher la page Web qu'il contient.

Sur Firefox et IE, cela fonctionne très bien, il n'y a pas de barre de défilement car j'utilise <iframe ... scrolling="no"></iframe> . Cependant, sur les navigateurs webkit (Safari et Chrome), la barre de défilement verticale persiste même lorsqu'il y a suffisamment de place pour la page sans la barre de défilement (la barre de défilement est grisée).

Comment masquer la barre de défilement pour les navigateurs webkit ?

0 votes

Note pour la postérité : il s'agissait d'un bogue dans les navigateurs webkit qui a depuis été corrigé. Voici le rapport de bogue : bugs.webkit.org/show_bug.cgi?id=29240

2 votes

Pourquoi n'en avez-vous pas accepté ?

66voto

Tim Points 539

Je viens de rencontrer ce problème, et j'ai découvert que la solution était de définir overflow: hidden sur la balise HTML de la page à l'intérieur du iframe .

0 votes

Dans Chrome/10.0.648.133, il semble que cela fonctionne, que l'attribut overflow:hidden soit dans l'attribut <html> dans un style en ligne, ou même dans une feuille de style externe - bien que Chrome semble être un peu trop agressif en ce qui concerne la mise en cache des feuilles de style externes. Ce bogue a peut-être été corrigé au fil des ans.

0 votes

Est-ce que cela fait une différence si j'ajoute overflow:hidden; à la body au lieu de html ?

53voto

palako Points 1702

Vous pouvez masquer les barres de défilement et conserver la fonctionnalité de défilement (par pavé tactile ou molette de défilement, ou par toucher et glisser dans un téléphone mobile ou une tablette, en utilisant :

<style>
  iframe::-webkit-scrollbar {  
    display: none;
  }  
</style>

Évidemment, vous pouvez changer iframe pour qu'il corresponde à votre conception, et vous pouvez ajouter la propriété équivalente -mozilla- pour qu'il fonctionne également dans firefox.

0 votes

N'y a-t-il pas un modérateur qui puisse faire en sorte que ce soit la bonne réponse ?

0 votes

@Hendrik c'est à l'utilisateur qui a ouvert la question de choisir une réponse correcte.

0 votes

Merci @palako. Juste une remarque, si vous voulez maintenir le scroll vertical visible, utilisez simplement : iframe::-webkit-scrollbar:horizontal {display : none;} pour ne cacher que l'horizontal.

17voto

WillemLabu Points 1418
Note: this is useful if you cannot edit the CSS / HTML of the iFramed content.

C'est un peu un hack, mais j'ai résolu ce problème en enveloppant la fonction <iframe> dans un <div> en fixant le <div> Hauteur, largeur & overflow:hidden puis de régler le <iframe> pour dépasser la largeur et la hauteur de l'enveloppe. <div> .

<style>
  div {height:100px;width:100px;overflow:hidden}
  iframe {height:150px;width:150px;overflow:hidden}
</style>

<div>
  <iframe src="foo.html" scrolling="no"></iframe>
</div>

2 votes

C'est une approche de force brute qui devrait fonctionner comme une solution de contournement pour les fonctionnalités manquantes ou les bogues :)

0 votes

Il a suffi d'ajouter overflow:hidden au style de l'iframe pour que le paramètre de défilement fonctionne dans Safari, Chrome et IE.

11voto

Shpigford Points 3096

Je suppose que vous avez déjà essayé, mais avez-vous réglé le défilement sur non sur l'iframe ?

<iframe scrolling="no">

0 votes

Yup. Je n'ai pas échappé à ce drapeau dans mon message, malheureusement, donc il ne s'est pas affiché.

6voto

Simon Jackson Points 99

Pour supprimer les barres de défilement grisées, ajoutez "overflow : hidden ;" à la balise body de la page affichée dans l'Iframe, par exemple. <body style="overflow:hidden;"> Cela a bien fonctionné pour moi dans Chrome 8.0.552.215 et j'avais également "overflow : hidden" sur l'Iframe lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X