Как предотвратить искажение макета CSS при увеличении / уменьшении масштаба? - PullRequest
16 голосов
/ 14 марта 2012

Я создал очень простой сайт с #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 ]

5 голосов
/ 16 марта 2013

У меня была похожая проблема, которую я исправил, добавив дополнительный div в меню навигации. Затем я добавил следующее

#menu-container {
    position: absolute;
    white-space: nowrap;
    overflow: hidden;

}

Это не позволило ему обернуться. Надеюсь, что это работает.

3 голосов
/ 15 мая 2015

Поскольку этот вопрос по-прежнему получает постоянные представления, я опубликую решение, которое я использую в настоящее время.

CSS Media Queries:

@media screen and (max-width: 320px) { 

/*Write your css here*/

}

@media screen and (max-width: 800px) { 

}

Проверить: CSS-хитрости + размеры устройств и Media Queries

1 голос
/ 27 июня 2013

Чтобы устранить проблему с увеличением, попробуйте добавить атрибут min-width в свой внешний движок (#container или #navbar?). Настройка min-width предотвращает попытку сокращения веб-страницы за пределы указанной ширины (то есть 300 пикселей). Если вы увеличите масштаб слишком сильно, вместо элементов внутри <div>, спрыгивающих на следующую строку, ваша панель навигации прекратит уменьшаться, и полоса прокрутки появится внизу страницы.

Пример (в вашей таблице стилей):

#navbar {min-width:300px;}

Еще один хороший способ добиться этого - применить атрибут min-width к телу страницы.

Пример (в вашей таблице стилей):

body {min-width:300px;}

Наконец, если вы хотите, чтобы ваша панель навигации занимала всю ширину страницы, используйте {clear:both;} в таблице стилей.

0 голосов
/ 18 февраля 2015

Вы захотите использовать медиа-запрос CSS, чтобы установить точки останова для разных стилей в CSS.Который при правильном использовании исправит любые искажения.

0 голосов
/ 10 октября 2014

Итак, это очень похоже на приведенные выше предложения, но у него есть область содержимого фиксированной ширины, если вы искали полную ширину, извините (; _;)

<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>
0 голосов
/ 07 октября 2014

Это в основном потому, что вы задали свойства width или margin в процентах.Если вы сделаете это, убедитесь, что вы указали максимальную ширину для такого элемента

0 голосов
/ 10 мая 2014

Я бы просто установил абсолютные высоты и ширины для всех элементов / элементов на странице.

id {height: 250px; ширина: 500 пикселей}

Или вы также можете использовать минимальную / максимальную ширину / высоту для настройки макета страницы на экранах разных размеров или при изменении размера окна браузера.

0 голосов
/ 21 марта 2012

Хмм .... Вы уже пытались добавить свойства min-width / min-height? Вы можете просто включить эти свойства в ваш #container div. Это может просто помочь.

0 голосов
/ 14 марта 2012

Различные браузеры используют разные приемы увеличения. Все они имеют недостатки. Использование процентов приведет к ошибкам округления. Нет простых ответов.

См .: http://www.codinghorror.com/blog/2009/01/the-two-types-of-browser-zoom.html

...