Масштабирование и сохранение пропорций

Я пытаюсь изучить HTML / CSS и работаю над панелью навигации, однако у меня возникают проблемы с масштабированием. Это сайт в полноэкранном режиме.

Это сайт немного свернут. Масштабирование и сохранение пропорций

Тогда это веб-сайт полностью свернут. Масштабирование и сохранение пропорций

Как вы можете понять, когда я масштабирую веб-сайт до разных масштабов, пропорции меняются, и вещи начинают перекрываться. Я попытался сделать детей абсолютными, а контейнеры - относительными. Я также использую em для измерения и не использую пиксели. Что я могу сделать, чтобы при масштабировании все оставалось пропорциональным?

Это рабочий пример js https://jsfiddle.net/2w1r136j/2/

HTML

<div class = "container">
  <header>
    <nav>
      <img class = "logo" src = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Westworld_Logo.svg/2000px-Westworld_Logo.svg.png" alt = "logo">
      <div class = "leftNavContainer">
        <a href = "#">Home</a>
        <a href = "#">Story</a>
      </div>
      <div class = "rightNavContainer">
        <a href = "#">Characters</a>
        <a href = "#">Create</a>
      </div>
    </nav>
  </header>
</div>

CSS

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: #222;
  font-size: 1em;
}

.container {
  width: 100%;
  height: 100%;
  position: absolute;
}

header {
  background: white;
  height: 3.5em;
}

.logo {
  height: 4.5em;
  width: 4.5em;
  position: absolute;
  left: 50%;
  margin-left: -50px !important;  /* 50% of your logo width */
  display: block;
  margin-top: 0;
}

.leftNavContainer {
  position: absolute;
  float: left;
}

.leftNavContainer a {
  position: relative;
  display: inline;
  margin-right: 2em;
  margin-left: 2em;
}

.rightNavContainer {
  float: right;
}

.rightNavContainer a {
  position: relative;
  display: inline;
  margin-right: 2em;
  margin-left: 2em;
}

Вы можете использовать медиа-запросы, в которых вы выборочно меняете CSS для элементов. Проверить css-tricks.com/css-media-queries

code-orange 04.04.2018 20:34
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать медиа-запросы для изменения размеров в точках останова бывший:

@media only screen and (max-width: 600px) {
    body {
        font-size: .7em;

    }
}

https://jsfiddle.net/2w1r136j/7/

Однако вы можете подумать об использовании медиа-запросов для включения адаптивного дизайна, который будет работать на мобильных устройствах. Распространенной идиомой является сворачивание пунктов меню в элементы полной ширины и увеличение размера шрифта.

что-то вроде: https://jsfiddle.net/2w1r136j/40/

Ответ принят как подходящий

Что ж, медиа-запросы могут работать, но гораздо лучше было бы использовать Flexbox или лучшую CSS Grid. Я обновил скрипку реализацией flexbox.

https://jsfiddle.net/khpv2azq/3/

HTML

<head>
  <title>
    Westworld
  </title>
  <link rel = "stylesheet" href = "css/style.css">
</head>
<div class = "container">
  <header>
    <nav>
      <div class = "leftNavContainer">
        <a href = "#">Home</a>
        <a href = "#">Story</a>
      </div>
       <img class = "logo" src = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Westworld_Logo.svg/2000px-Westworld_Logo.svg.png" alt = "logo">
      <div class = "rightNavContainer">
        <a href = "#">Characters</a>
        <a href = "#">Create</a>
      </div>
    </nav>
  </header>
</div>

CSS

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: #222;
  font-size: 1em;
}

nav{
  display: flex;
  justify-content: space-between;
}

.container {
  width: 100%;
  height: 100%;
}

header {
  background: white;
  height: 3.5em;
}

.logo {
  height: 4.5em;
  width: 4.5em;
  position: absolute;
  left: 50%;
  margin-left: -50px !important;
  /* 50% of your logo width */
  display: block;
  margin-top: 0;
}

.leftNavContainer {

}

.leftNavContainer a {
  position: relative;
  display: inline;
  margin: 4px;
}

.rightNavContainer {

}

.rightNavContainer a {
  position: relative;
  display: inline;
  margin: 4px;
}

Также ресурс MDN для Flex box -

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_F flexible_Box_Layout/Basic_Concepts_of_Flexbox

Надеюсь на эту помощь! ?

Спасибо, Шобхит. У меня только один вопрос: вы уменьшили поле с 70 пикселей до 4 пикселей. Я хотел сохранить расстояние между элементами около 70 пикселей. Есть ли способ сохранить эти элементы около 70 пикселей. Я изменил его обратно на 70 пикселей, но теперь, когда я масштабирую, элементы в конечном итоге накладываются друг на друга. Я пробовал поставить flex-wrap: nowrap;

Jack 04.04.2018 21:07

Привет, Джек, В идеале интервалы должны быть указаны в пропорциях (что-то вроде%). Если вы хотите иметь фиксированное поле в пикселях, возможно, вам нужно добавить медиа-запрос для размеров экрана.

Shobhit Chittora 05.04.2018 07:00

Спасибо. Я не знал, что интервал следует указывать в%.

Jack 06.04.2018 22:58

Другие вопросы по теме