Полная высота боковой панели состоит из изображений - как? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь создать боковую навигационную панель, состоящую из 7 изображений значков. У меня все изображения обернуты в div, но я хочу, чтобы они реагировали, если окно браузера уменьшается (высота). Вот что у меня так,

HTML:

<body>

<div id="sidenav">
    <div id="nav1"><img src="img/menu.png" alt=""></div>
    <div id="nav2"><img src="img/icon1.png" alt=""></div>
    <div id="nav3"><img src="img/icon2.png" alt=""></div>
    <div id="nav4"><img src="img/icon3.png" alt=""></div>
    <div id="nav5"><img src="img/icon4.png" alt=""></div>
    <div id="nav6"><img src="img/icon5.png" alt=""></div>
    <div id="nav7"><img src="img/icon6.png" alt=""></div>
</div>  

</body>

CSS:

body {
    margin: 0;
    padding: 0;
}
body, html {
    height: 100%;
}
#nav1 img, #nav2 img, #nav3 img, #nav4 img, #nav5 img, #nav6 img, #nav7 img {
    width: 100px;
}
#sidenav {
    position: fixed;
}

Так что, по сути, всякий раз, когда размер браузера изменяется по вертикали, я хочу, чтобы все изображения изменяли его размер, чтобы все 7 всегда были одинаково видимыми и квадратными. Позже я хочу сделать эти кнопки изображения, но сначала мне нужно это выяснить. Заранее спасибо за помощь! : -)

Ответы [ 4 ]

0 голосов
/ 04 января 2019

ну, я действительно выполнил это на своей странице (очень рад ответить на мой первый вопрос).

Итак, что было разделено на экран по количеству значков и получено положение для каждого значка. для меня у меня есть 5, и мне также нужен топ для других вещей. поэтому, немного поиграв с позиционированием, я решил, что хочу около 17% от vh для каждого и оставил комнату сверху. у вас есть 7, так что я бы, вероятно, начал около 14% vh (100/7 = ~ 14.2) для размещения, дав каждому значку свой собственный идентификатор CSS и класс для обработки всех изображений. так что для вас я бы сделал то же самое. чтобы держать его квадратным, вы должны будете использовать vh как для высоты, так и для ширины. (vh обозначает высоту окна просмотра, поэтому он будет регулироваться как окно просмотра.)

#sidenav img{
    height: 14vh;
    width:  14vh;
}
#nav1{
    position: fixed;
    top:0vh;
}
#nav2{
    position: fixed;
    top:14vh;
}
#nav3{
    position: fixed;
    top:28vh;
}
#nav4{
    position: fixed;
    top:42vh;
}
#nav5{
    position: fixed;
    top:56vh;
}
#nav6{
    position: fixed;
    top:70vh;
}
#nav7{
    position: fixed;
    top:84vh;
}

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

0 голосов
/ 04 января 2019

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

Вот мой код с использованием начальной загрузки:

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet"/>


<div class="container">
  <div class="row">
    <div class="col-md-12">
      <img src="https://via.placeholder.com/1000" alt="" class="img-fluid">
    </div>
    <div class="col-md-12">
      <img src="https://via.placeholder.com/1000" alt="" class="img-fluid">
    </div>
    <div class="col-md-12">
      <img src="https://via.placeholder.com/1000" alt="" class="img-fluid">
    </div>
    <div class="col-md-12">
      <img src="https://via.placeholder.com/1000" alt="" class="img-fluid">
    </div>
    <div class="col-md-12">
      <img src="https://via.placeholder.com/1000" alt="" class="img-fluid">
    </div>
  </div>
</div>

С наилучшими пожеланиями, Халед.

0 голосов
/ 04 января 2019

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

#sidenav{
  display: flex;
}

.nav-icon img{
  max-height: 50px;
}

@media (max-height: 700px){
  .nav-icon img{
    max-height: 40px;
  }
}

@media (max-height: 500px){
  .nav-icon img{
    max-height: 30px;
  }
}

@media (max-height: 300px){
  .nav-icon img{
    max-height: 20px;
  }
}
<body>
  <div id="sidenav">
    <div id="nav1" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301804.svg" alt=""></div>
    <div id="nav2" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301805.svg" alt=""></div>
    <div id="nav3" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301814.svg" alt=""></div>
    <div id="nav4" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301808.svg" alt=""></div>
    <div id="nav5" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301812.svg" alt=""></div>
    <div id="nav6" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301809.svg" alt=""></div>
    <div id="nav7" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301817.svg" alt=""></div>
  </div>
</body>

другой способ - использование vh метрик в css, чтобы высота реагировала на размер экрана.

#sidenav{
  display: flex;
}

.nav-icon img{
  height: 15vh; /* 100vh = size of window */
}
<body>
  <div id="sidenav">
    <div id="nav1" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301804.svg" alt=""></div>
    <div id="nav2" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301805.svg" alt=""></div>
    <div id="nav3" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301814.svg" alt=""></div>
    <div id="nav4" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301808.svg" alt=""></div>
    <div id="nav5" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301812.svg" alt=""></div>
    <div id="nav6" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301809.svg" alt=""></div>
    <div id="nav7" class="nav-icon"><img src="https://image.flaticon.com/icons/svg/1301/1301817.svg" alt=""></div>
  </div>
</body>
0 голосов
/ 04 января 2019

Насколько я знаю, это невозможно сделать только с помощью css.

window.onresize = function() {
  var height = document.body.clientHeight;
  var nav = document.getElementById('sidenav');
  var image = document.getElementsByTagName('img');
  nav.setAttribute('style', 'height:' + height + 'px');
  for (var i = 0; i < image.length; ++i) {
    image[i].setAttribute('style', 'height:' + height / image.length + 'px');
  }
};
<div id="sidenav">
  <div id="nav1"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav2"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav3"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav4"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav5"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav6"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
  <div id="nav7"><img src="https://images.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" alt=""></div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...