J'ai un élément absolument positionné qui est "en dehors" de la page, mais je veux que les navigateurs (j'utilise Firefox 3) ne montrent pas de barres de défilement horizontales. Il semble que l'affichage d'un div positionné à gauche (par exemple, avoir "left: -20px") soit correct, et aucune barre de défilement ne soit affichée. Cependant, la même chose à droite ("droite: -20px") montre toujours la barre de défilement. Est-il possible de masquer la barre de défilement, mais de conserver le défilement standard possible? Je veux dire que je veux uniquement désactiver le défilement en raison de cet élément en position absolue, mais continuer à défiler en raison d'autres éléments (je sais que je peux désactiver complètement les barres de défilement, ce n'est pas ce que je veux).
<!DOCTYPE html>
<html>
<body>
<div id="el1" style="position: absolute; top: 0; background-color: yellow; left: -20px;">
element
</div>
<div id="el2" style="position: absolute; top: 0; background-color: yellow; right: -20px;">
element
</div>
<h1>Hello</h1>
<p>world</p>
</body>
</html>
Oui, c'est possible, sur votre balise html, tapez style="overflow-x: hidden"
. Ça fera l'affaire ...
Cela peut en fait être fait en utilisant du CSS simple sans aucune restriction sur la largeur de page, etc. Cela peut être fait par:
Le contenu de votre première div restera correctement aligné avec le contenu de votre deuxième div, mais tout son contenu qui dépassera le périmètre de la fenêtre sera tronqué.
Voici un exemple de travail qui maintient l'image dans une position fixe par rapport au reste du contenu, sans utiliser de JavaScript:
#widthfitter {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
overflow: hidden;
}
#contentWrapper {
width: 100%;
position: absolute;
text-align: center;
top: 0;
left: 0;
}
.content {
width: 600px;
position: relative;
text-align: left;
margin: auto;
}
<div id="widthfitter">
<div class="content">
<img src="https://i.stack.imgur.com/U5V5x.png" style="position:absolute; top: 240px; left: 360px" />
</div>
</div>
<div id="contentWrapper">
<div class="content">
Tested successfully on:
<ul>
<li>IE 8.0.6001.18702IS</li>
<li>Google Chrome 17.0.963.46 beta</li>
<li>Opera 10.10</li>
<li>Konqueror 4.7.4</li>
<li>Safari 5.1.5</li>
<li>Firefox 10.0</li>
</ul>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip
ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
augue duis dolore te feugait nulla facilisi.
</p>
</div>
</div>
Ce que vous devez faire est d'ajouter un wrapper en dehors de vos divs.
Voici le CSS: j'appelle ma classe 'main_body_container'
.main_body_container {
min-width: 1005px; /* your desired width */
max-width: 100%;
position: relative;
overflow-x: hidden;
overflow-y: hidden;
}
J'espère que ça aide :)
Mise à jour
Créé un stylo pour cela, voyez-le ici
Je ne sais pas trop si cela aiderait, mais vous pouvez essayer de changer le style des divs mentionnés à la place:
<div id="el1" style="position:fixed; left:-20px; top:0; background-color:yellow; z-index:-1">element</div>
<div id="el2" style="position:fixed; left:20px; top:0; background-color:yellow; z-index:-1">element</div>
En définissant la position comme fixe à la place, il "verrouille" les divs spécifiés en place tandis que le reste du contenu peut toujours défiler. Bien sûr, cela suppose que c'est dans le cas où le reste du contenu est empilé par le z-index pour être au-dessus des divs définis.
J'espère que cela t'aides.
Ajoutez ceci à votre CSS:
div {
overflow-x:hidden;
overflow-y:hidden;
}
Les styles overflow-x et -y ne sont pas reconnus par IE. Donc, si vous ne vous souciez que de Firefox 3, cela fonctionnera bien. Sinon, vous pouvez utiliser du javascript:
document.documentElement.style.overflow = 'hidden'; // firefox, chrome
document.body.scroll = "no"; // ie only
J'ai pu résoudre ce problème en changeant l'attribut de position de l'élément en fixe:
position: fixe;
Plus de défilement horizontal provoqué par cet élément mais toujours de défilement horizontal provoqué par d'autres éléments.
Mettez le style suivant
html {overflow-x:hidden;}
Je l'ai testé sur IE 8, FF et Chrome.