Как остановить CSS-макет от искажения при увеличении / уменьшении масштаба?
Я создал очень простой сайт с # container div, который включает #navbar и #content. Однако, когда я увеличиваю или уменьшаю масштаб, #navbar искажается, если я увеличиваю ссылки, которые нажимаются ниже друг друга вместо того, чтобы быть встроенными. Если я уменьшу масштаб, между ссылками будет добавлено слишком много отступов. Как я могу это остановить?
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;
}
Как я могу остановить его от искажения?
кроме того, я все еще довольно новыми для CSS, меня учили использовать % вместо px. Это правда? И все остальное, что вы должны указать, пожалуйста, дайте мне знать.
спасибо заранее!
9 ответов
У меня была аналогичная проблема, которую я исправил, добавив дополнительный div вокруг моего навигационного меню. Затем я добавил следующее
#menu-container {
position: absolute;
white-space: nowrap;
overflow: hidden;
}
это предотвратило его обертывание. Надеюсь, это сработает.
поскольку этот вопрос по-прежнему получает постоянные представления, я опубликую решение, которое я использую в настоящее время.
CSS медиа запросы:
@media screen and (max-width: 320px) {
/*Write your css here*/
}
@media screen and (max-width: 800px) {
}
проверить: CSS-трюки + размеры устройств и Медиа-Запросы
чтобы устранить проблему с увеличением, попробуйте добавить min-width
атрибут внешнего countainer (#container
или #navbar
?).
Настройка min-width
предотвращает попытку веб-страницы сжаться ниже указанной ширины (т. е. 300px). Если вы увеличиваете масштаб слишком далеко, вместо элементов внутри <div>
спрыгнув на следующую строку, ваша панель навигации перестанет сжиматься, и в нижней части страницы появится полоса прокрутки.
пример (в вашем таблица стилей):
#navbar {min-width:300px;}
еще один хороший способ достичь этого-применить атрибут min-width к телу страницы.
пример (в таблицу):
body {min-width:300px;}
наконец, если вы хотите, чтобы ваш navbar охватывал всю ширину страницы, Используйте {clear:both;}
в таблице стилей.
Мда....вы уже пробовали добавить свойства min-width/min-height? Вы можете просто включить эти свойства в свой # container div. Это может сработать.
различные браузеры пользователя различные методы для увеличения. У всех есть недостатки. Использование процентов приведет к ошибкам округления. Легких ответов нет.
см.:http://www.codinghorror.com/blog/2009/01/the-two-types-of-browser-zoom.html
Я бы просто установить абсолютные высоты и ширины для всех элементов/блоков на странице.
идентификатор {высота: шириной 250 пикселей и следующий; ширина: 500px в}
или вы также можете использовать min/max-width / hight для настройки макета страницы на разных размерах экрана или при изменении размера окна браузера.
Это в основном потому, что u установили свойства ширины или маржи в процентах. Если вы это сделаете, убедитесь, что u предоставляет максимальную ширину такому элементу
здесь вы идете, это очень похоже на приведенные выше предложения, но у него есть фиксированная область содержимого ширины, если вы искали полную ширину, извините (;_;)
<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>
вы захотите использовать медиа-запрос css для установки точек останова для разных стилей в вашем css. Что при правильном использовании исправит любые проблемы искажения.