Как я могу предотвратить 100-вольтовое изображение от расширения точки обзора? - PullRequest
0 голосов
/ 11 апреля 2019

Для моего #l-splash изображения возникли проблемы с расширением height: 100vh за пределы точки обзора.

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

https://jsfiddle.net/mtgcosxd/1/

header {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
  background: #fffaf0;
  position: sticky;
  width: 100%;
  top: 0;
  font-family: 'Montserrat', sans-serif;
  /*font-family: 'Gotham-Light', gotham;*/
  font-weight: 300;
  font-size: 1vw;
}

body {
  max-width: 100%;
  overflow-x: hidden;
  padding: 0px;
  margin: 0px;
  color: #fffaf0;
  font-family: 'Work Sans', sans-serif;
  font-weight: 300;
}

.nav {
  position: -webkit-sticky;
  position: sticky;
  top: 0%;
  color: #80985d;
}

.navLink {
  padding: 0 10px;
  font-weight: 300;
  text-transform: uppercase;
  cursor: pointer;
  text-align: center;
}

#logo {
  margin-top: 4px;
  margin-bottom: 4px;
  width: 4%;
  height: 4%;
  cursor: pointer;
}

.container {
  display: grid;
  grid-template-columns: [content] 1fr [images] 1fr
}

.content {
  grid-column: content;
  background: #2f6e84;
}

#l-splash {
  width: 100%;
  height: 100vh;
  overflow: auto;
}
<div class="nav">
  <header>
    <div class="navLink" id="story-scroll">Our Story</div>
    <div class="navLink" id="menu-scroll">Menu</div>
    <img src="https://placekitten.com/200/300" id="logo" lt="logo">
    <div class="navLink" id="press-scroll">Press</div>
    <div class="navLink" id="contact-scroll">Contact</div>
  </header>
</div>

<div class="container">

  <div class="content">
    <div id="splash container">
      <img id="l-splash" src="https://images.unsplash.com/photo-1526069631228-723c945bea6b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=934&q=80">
    </div>

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Вам не нужно устанавливать height: 100vh на изображении - поскольку у вас уже есть flexboxes и сетки в вашем макете, вы можете наследовать высоты с использованием столбца flexbox оболочки на body - вот изменения:

  • сделал вас body a колонка flexbox и дал высоту 100vh,

  • позволяют container заполнить оставшееся пространство, оставленное nav, используя flex: 1 на container,

  • добавить height: 100% в контейнер из img,

  • заполните изображение в контейнере, используя height: 100% и используя object-fit,

body {
  max-width: 100%;
  overflow-x: hidden;
  padding: 0px;
  margin: 0px;
  color: #fffaf0;
  font-family: 'Work Sans', sans-serif;
  font-weight: 300;
  /* made a flexbox */
  display: flex;
  flex-direction: column;
  height: 100vh; /* full-height */
}

header {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
  background: #fffaf0;
  position: sticky;
  width: 100%;
  top: 0;
  font-family: 'Montserrat', sans-serif;
  /*font-family: 'Gotham-Light', gotham;*/
  font-weight: 300;
  font-size: 1vw;
}

.nav {
  position: -webkit-sticky;
  position: sticky;
  top: 0%;
  color: #80985d;
}

.navLink {
  padding: 0 10px;
  font-weight: 300;
  text-transform: uppercase;
  cursor: pointer;
  text-align: center;
}

#logo {
  margin-top: 4px;
  margin-bottom: 4px;
  width: 4%;
  height: 4%;
  cursor: pointer;
}

.container {
  display: grid;
  grid-template-columns: [content] 1fr [images] 1fr;
  flex: 1; /* added */
}

.content {
  grid-column: content;
  background: #2f6e84;
}

.content > div {
  height: 100%; /* added */
}

#l-splash {
  width: 100%;
  /*height: 100vh;*/
  height: 100%;
  object-fit: cover; /* added */
  overflow: auto;
  display: block; /* remove inline element whitespace */
}
<div class="nav">
  <header>
    <div class="navLink" id="story-scroll">Our Story</div>
    <div class="navLink" id="menu-scroll">Menu</div>
    <img src="https://placekitten.com/200/300" id="logo" lt="logo">
    <div class="navLink" id="press-scroll">Press</div>
    <div class="navLink" id="contact-scroll">Contact</div>
  </header>
</div>
<div class="container">
  <div class="content">
    <div id="splash container">
      <img id="l-splash" src="https://images.unsplash.com/photo-1526069631228-723c945bea6b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=934&q=80">
    </div>

Но у вас все еще есть переполнение - что теперь?

См. Демо ниже:

body {
  max-width: 100%;
  overflow-x: hidden;
  padding: 0px;
  margin: 0px;
  color: #fffaf0;
  font-family: 'Work Sans', sans-serif;
  font-weight: 300;
  /* made a flexbox */
  display: flex;
  flex-direction: column;
  height: 100vh; /* full-height */
}

header {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
  background: #fffaf0;
  position: sticky;
  width: 100%;
  top: 0;
  font-family: 'Montserrat', sans-serif;
  /*font-family: 'Gotham-Light', gotham;*/
  font-weight: 300;
  font-size: 1vw;
}

.nav {
  position: -webkit-sticky;
  position: sticky;
  top: 0%;
  color: #80985d;
}

.navLink {
  padding: 0 10px;
  font-weight: 300;
  text-transform: uppercase;
  cursor: pointer;
  text-align: center;
}

#logo {
  margin-top: 4px;
  margin-bottom: 4px;
  width: 4%;
  height: 4%;
  cursor: pointer;
}

.container {
  display: grid;
  grid-template-columns: [content] 1fr [images] 1fr;
  flex: 1; /* added */
  min-height: 0; /* added */
}

.content {
  grid-column: content;
  background: #2f6e84;
  min-height: 0; /* added */
}

.content > div {
  height: 100%; /* added */
}

#l-splash {
  width: 100%;
  /*height: 100vh;*/
  height: 100%;
  object-fit: cover; /* added */
  overflow: auto;
  display: block; /* remove inline element whitespace */
}
<div class="nav">
  <header>
    <div class="navLink" id="story-scroll">Our Story</div>
    <div class="navLink" id="menu-scroll">Menu</div>
    <img src="https://placekitten.com/200/300" id="logo" lt="logo">
    <div class="navLink" id="press-scroll">Press</div>
    <div class="navLink" id="contact-scroll">Contact</div>
  </header>
</div>
<div class="container">
  <div class="content">
    <div id="splash container">
      <img id="l-splash" src="https://images.unsplash.com/photo-1526069631228-723c945bea6b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=934&q=80">
    </div>
0 голосов
/ 11 апреля 2019

Вы можете вычесть высоту nav / header из высоты #l-splash div.Например,

header { 
  ...
  height: 50px; 
  max-height: 50px; 
}

#l-splash {
  ...
  height: calc(100vh - 50px);
}

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

header { 
  ...
  height: 50px; 
  margin-bottom: 5px;
}

#l-splash {
  ...
  height: calc(100vh - 55px);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...