J'ai donc un problème qui, je pense, est assez courant, mais je n'ai pas encore trouvé de bonne solution. Je veux faire une superposition div couvrir la page ENTIER ... PAS seulement la fenêtre. Je ne comprends pas pourquoi c'est si difficile à faire ... J'ai essayé de régler le corps, les hauteurs html à 100%, etc. mais cela ne fonctionne pas. Voici ce que j'ai jusqu'à présent:
<html>
<head>
<style type="text/css">
.OverLay { position: absolute; z-index: 3; opacity: 0.5; filter: alpha(opacity = 50); top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; background-color: Black; color: White;}
body { height: 100%; }
html { height: 100%; }
</style>
</head>
<body>
<div style="height: 100%; width: 100%; position: relative;">
<div style="height: 100px; width: 300px; background-color: Red;">
</div>
<div style="height: 230px; width: 9000px; background-color: Green;">
</div>
<div style="height: 900px; width: 200px; background-color: Blue;"></div>
<div class="OverLay">TestTest!</div>
</div>
</body>
</html>
Je serais également ouvert à une solution en JavaScript s'il en existe une, mais je préfère de loin utiliser un simple CSS.
Réponses:
La fenêtre d'affichage est tout ce qui compte, mais vous souhaitez probablement que l'ensemble du site Web reste sombre même pendant le défilement. Pour cela, vous souhaitez utiliser à la
position:fixed
place deposition:absolute
. Fixed gardera l'élément statique sur l'écran pendant que vous faites défiler, donnant l'impression que tout le corps est assombri.Exemple: http://jsbin.com/okabo3/edit
la source
<select>
élément dans iOS, cela déplace toute la fenêtre et tout casse. les éléments fixes bougent, les choses qui ne doivent pas défiler défilent, etc.la source
Tout d'abord, je pense que vous avez mal compris ce qu'est la fenêtre d'affichage. La fenêtre d'affichage est la zone qu'un navigateur utilise pour rendre les pages Web, et vous ne pouvez en aucun cas créer vos sites Web pour remplacer cette zone de quelque manière que ce soit.
Deuxièmement, il semble que la raison pour laquelle votre overlay-div ne couvrira pas la totalité de la fenêtre est que vous devez supprimer toutes les marges sur BODY et HTML.
Essayez de l'ajouter en haut de votre feuille de style - cela réinitialise toutes les marges et les rembourrages sur tous les éléments. Facilite le développement ultérieur:
Edit: Je viens de mieux comprendre votre question.
Position: fixed;
fonctionnera probablement pour vous, comme Jonathan Sampson l'a écrit.la source
*{}
et vous en verrez beaucoup plus :)J'ai eu un peu de mal car je ne voulais pas FIXER la superposition en place car je voulais que les informations à l'intérieur de la superposition puissent faire défiler le texte. J'ai utilisé:
Bien sûr, le div au milieu a besoin de contenu et probablement d'un fond gris transparent, mais je suis sûr que vous comprenez l'essentiel!
la source
J'ai regardé la réponse de Nate Barr ci-dessus, que vous avez semblé aimer. Cela ne semble pas très différent du plus simple
la source