Safari / Chrome (Webkit) - ne peut pas cacher iframe vertical scrollbar

j'ai un iframe sur www.example.com ce qui indique support.example.com (qui est un CNAME vers un domaine étranger).

je redimensionne automatiquement la hauteur de mon iframe de sorte que le cadre n'aura pas besoin de barres de défilement pour afficher la page Web contenue.

sur Firefox et IE cela fonctionne très bien, il n'y a pas de scrollbar depuis que j'utilise <iframe ... scrolling="no"></iframe> . Cependant, sur les navigateurs webkit (Safari et Chrome), le scrollbar vertical persiste même lorsqu'il disposer d'un espace suffisant pour la page sans la barre de défilement (scrollbar est grisé).

Comment puis-je cacher la barre de défilement pour les navigateurs webkit?

48
demandé sur James Donnelly 2009-11-07 06:26:20

17 réponses

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

61
répondu Tim 2013-03-20 22:10:34

vous pouvez masquer les barres de défilement et maintenir la fonctionnalité de défilement (par touchpad ou scroll wheel, ou touch and drag dans un téléphone mobile ou une tablette, en utilisant:

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

évidemment, vous pouvez changer iframe à tout ce qui correspond à votre conception, et vous pouvez ajouter la propriété-mozilla - équivalente pour obtenir le travail dans firefox aussi bien.

52
répondu palako 2012-02-08 23:19:49
Note: this is useful if you cannot edit the CSS / HTML of the iFramed content.

c'est un peu un piratage, mais j'ai résolu ce problème en enveloppant le <iframe> dans un <div> , en réglant le <div> 'S Hauteur, Largeur & overflow:hidden , puis en réglant le" 151920920 'S Largeur & height pour réellement déborder l'emballage <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>

Espérons que cette aide.

16
répondu Labu 2011-05-10 16:53:13

je suppose que vous avez essayé, mais avez-vous mis le défilement à non sur l'iframe?

<iframe scrolling="no">
11
répondu Shpigford 2009-11-08 05:30:13

pour se débarrasser des barres de défilement grisées, mettez "débordement: caché;" sur la balise de corps de la page étant affiché dans L'Iframe par exemple <body style="overflow:hidden;"> cela a bien fonctionné pour moi dans Chrome 8.0.552.215 et j'ai également eu "débordement: caché" sur l'Iframe elle-même

6
répondu Simon Jackson 2010-12-10 16:15:08

est-ce que ça aide? Fonctionne sur Chrome, IE, FF...

<style type="text/css">
html { overflow:hidden; }
#test { position:absolute; top:50; left:50; right:50; bottom:50; height:2000px; }
</style>

<body scroll="no">
<div id="test">content</div>
</body>
3
répondu tpeck 2010-01-15 13:21:59

pouvez-vous définir la propriété CSS overflow-y pour L'IFRAME à visible ou hidden ?

2
répondu JasonWyatt 2009-11-07 04:38:04

vérifiez si le rouleau est réel à partir de l'iframe, peut-être qu'il vient du HTML ou du corps.

Pour faire défiler dans un iframe

<iframe scrolling="no">

dans css

iframe { overflow:hidden; }

or 

iframe { overflow-x:hidden; overflow-y:hidden}
2
répondu Razielblood 2009-12-21 13:21:07

je viens de le résoudre sur mon blog avec scrolling=" no " après l'étiquette de style.

par exemple:

iframe src="asdf.html" style="overflow: hidden;" scrolling="no"

j'ai laissé l'attribut style là-dedans parce que c'est plus approprié et ça a bien fonctionné sur Firefox.

2
répondu Giles Bowkett 2010-07-12 21:46:58

utilisant Chrome 8.0.552.224 bêta sous Ubuntu 10.10 montre toujours les barres de défilement fantômes sur ce site: http://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_iframe_scrolling . J'ai essayé tous les trucs ce qui fonctionne dans tous les navigateurs, mais pas dans le navigateur basé sur WebKit. Par conséquent, le bogue ne semble pas être corrigé complètement.

2
répondu harald 2010-12-26 09:51:00
document.body.addEventListener('touchmove', function(e){ e.preventDefault(); });

cela fonctionne, aucun des autres ne semblait fonctionner, y compris le e.preventDefault() pour touchstart.

2
répondu foopanda 2012-12-14 09:13:29

essayez ceci...

iframe { overflow:hidden; }
1
répondu Josh Stodola 2009-11-09 19:51:42

n'utilisez pas d'étiquette de défilement du tout sur l'iframe et ajoutez le style comme style= " overflow-x: hidden;overflow-y: auto;" cela va supprimer le rouleau horizontal et il devrait fonctionner dans l'autre sens aussi.

- Jai

1
répondu Jai 2009-12-21 14:06:13

paramétrant l'attribut de défilement de l'iframe à" no " devrait corriger ceci, mais il semble y avoir un bug dans webkit: https://bugs.webkit.org/show_bug.cgi?id=29240

tim's work-around ( Safari/Chrome (Webkit) - Cannot hide iframe vertical scrollbar ) semble corriger le problème -- aussi longtemps que vous avez la possibilité d'éditer le document contenu par l'iframe...

1
répondu Rudi 2017-05-23 10:31:22

cacher iframe scrolling dans google chrome, mettre le corps de la balise comme ceci

<body style="margin:0px; padding:0px; overflow:hidden;"></body>
1
répondu Vaidehi 2012-12-10 11:10:47
<iframe> <body style="overflow-x: hidden"> </body> </iframe>
0
répondu Teoman shipahi 2014-07-02 16:31:23

1.lorsque vous changez le défilement d'iframe oui ou non, la barre de défilement d'iframe ne s'affiche pas immédiatement, vous devez rafraîchir l'iframe.

2.le code html du robinet trop-plein dans l'iframe colud influence de l'iframe de la barre de défilement

3.dans L'IE, vous devez effacer le src d'iframe, puis rafraîchir iframe ,il sera de travail

4.donc, vous montrer le code

html

<iframe id="main_ifrm" class="main"  frameborder="0" scrolling="no" src="new.html" ></iframe>
<button id="btn1">scrolling yes</button>

javascript

var ifrm = document.getElementById("main_ifrm");
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
    $(ifrm).prop("scrolling","no");
    $(ifrm.contentWindow.document).find("html").css("overflow","hidden")
    var src = $(ifrm).prop("src");
    $(ifrm).prop("src","");
    $(ifrm).prop("src",src);
}
0
répondu kuminson 2017-03-10 06:08:49