J'ai mis en place un site très basique avec une div #container qui inclut #navbar et #content. Cependant, lorsque je fais un zoom avant ou arrière, la barre de réglage #navbar se déforme, si je fais un zoom avant, les liens sont poussés l'un en dessous de l'autre au lieu d'être en ligne. Si je fais un zoom arrière, trop de bourrage est ajouté entre les liens. Comment puis-je arrêter ça?
HTML:
<div id="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="top.html">Top</a></li>
<li><strong><a href="free.html">FREE</a></strong></li>
<li><a href="photo.html">Photo</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<div id="content">
<p>Some sample text.<p>
</div>
</div>
CSS:
#container {
position: static;
background-color: #00bbee;
margin-left: 20%;
margin-right: 20%;
margin-top: 7%;
margin-bottom: 15%;
border: 2px solid red;
}
#navbar ul{
list-style: none;
}
#navbar li{
display: inline;
}
#navbar li a{
text-decoration: none;
color: #11ff11;
margin: 3%;
border: 1px dotted orange;
padding-left: 4px;
}
#navbar li a:hover {
background-color: white;
color: green;
}
#navbar {
background-color: #eeeeee;
padding-top: 2px;
padding-bottom: 5px;
border: 1px solid yellow;
}
Comment puis-je l'empêcher de se déformer?
De plus, je suis encore relativement novice en CSS, on m'a appris à utiliser% au lieu de px. Est-ce correct? Également tout ce que vous devez signaler, faites-le-moi savoir.
Merci d'avance!
Cette question ayant toujours des points de vue constants, je vais publier la solution que j'utilise actuellement.
Requêtes de médias CSS:
@media screen and (max-width: 320px) {
/*Write your css here*/
}
@media screen and (max-width: 800px) {
}
Découvrez: astuces CSS + tailles d’appareils et Requêtes multimédia
J'ai eu un problème similaire que j'ai résolu en ajoutant un div supplémentaire autour de mon menu de navigation. J'ai ensuite ajouté ce qui suit
#menu-container {
position: absolute;
white-space: nowrap;
overflow: hidden;
}
Cela l’empêcha d’emballer. Esperons que ça marche.
Pour résoudre le problème de zoom avant, essayez d’ajouter l’attribut min-width
à votre compte extérieur (#container
ou #navbar
?) . Le réglage de min-width
empêche la page Web d’essayer de réduire au-delà de la largeur spécifiée (300px). Si vous effectuez un zoom avant trop important, au lieu que les éléments à l'intérieur du <div>
sautent sur la ligne suivante, la barre de navigation cesse de se réduire et une barre de défilement apparaît en bas de la page.
Exemple (dans votre feuille de style):
#navbar {min-width:300px;}
Un autre moyen d'y parvenir consiste à appliquer l'attribut min-width au corps de la page.
Exemple (dans votre feuille de style):
body {min-width:300px;}
Enfin, si vous souhaitez que votre barre de navigation couvre toute la largeur de la page, utilisez {clear:both;}
dans la feuille de style.
Je voudrais juste définir des hauteurs et des largeurs absolues pour tous les éléments/divs de la page.
Vous pouvez également utiliser largeur minimale/maximale/largeur pour ajuster la mise en page sur différentes tailles d'écran ou lors du redimensionnement de la fenêtre du navigateur.
Vous allez vouloir utiliser une requête média css pour définir des points de rupture pour différents styles dans votre css. Qui, s’ils sont utilisés correctement, réglera les problèmes de distorsion.
Voilà, cela ressemble beaucoup aux suggestions ci-dessus, mais il a une zone de contenu de largeur fixe, si vous cherchez une largeur totale, je suis désolé (; _;)
<style>
body {
margin:0px;
}
#container {
width:990px;
background-color: #00bbee;
margin:0 auto;
border: 2px solid red;
}
#navbar ul {
list-style: none;
}
#navbar li {
display: inline;
}
#navbar li a {
text-decoration: none;
color: #11ff11;
margin: 3%;
border: 1px dotted orange;
padding-left: 4px;
}
#navbar li a:hover {
background-color: white;
color: green;
}
#navbar {
background-color: #eeeeee;
padding-top: 2px;
padding-bottom: 5px;
border: 1px solid yellow;
}
</style>
<div id="container">
<div id="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="top.html">Top</a></li>
<li><strong><a href="free.html">FREE</a></strong></li>
<li><a href="photo.html">Photo</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<div id="content">
<p>Some sample text.
<p>
</div>
</div>
C'est principalement parce que vous avez défini vos propriétés de largeur ou de marge en pourcentage. Si vous le faites, assurez-vous de fournir une largeur maximale à cet élément.
Différents navigateurs utilisent différentes techniques de zoom. Tous ont des défauts. L'utilisation de pourcentages introduira des erreurs d'arrondi. Il n'y a pas de réponses faciles.
Voir: http://www.codinghorror.com/blog/2009/01/the-two-types-of-browser-zoom.html
Hmm .... avez-vous déjà essayé d'ajouter des propriétés min-width/min-height? Vous pouvez simplement inclure ces propriétés sur votre div #container. Cela pourrait faire l'affaire.