Процент ширины с запасом и разными вложениями - PullRequest
0 голосов
/ 31 мая 2018

На моей веб-странице у меня есть левая и правая части, хотя они не находятся на одной и той же вложенности.Я хочу, чтобы левая часть занимала 25% страницы, а правая - всю остальную ширину.
Простое вложение 75% - это не для меня, потому что правая часть также нуждается в правильном 30px margin,Право padding не будет работать, потому что мой контент и background-color переполняются.
У вас есть идеи, как решить эту проблему?
. left (синий) и .right (желтый)div всегда должен идеально соответствовать друг другу, а .right должен поддерживать правильные 30px margin.

body {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  bottom: 0;
  overflow: hidden;
}

.main {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
  overflow: hidden;
  background-color: grey;
}

.left {
  position: absolute;
  top: 0;
  bottom: 0;
  padding-top: 0;
  padding-bottom: 0;
  left: 0;
  width: 25%;
  border-right: 1px solid #eeeeee;
  background-color: lightblue;
}

.right {
  position: absolute;
  width: 75%;
  right: 0px;
  top: 45px;
  bottom: 0;
  /*padding-right: 30px;*/
  margin-right: 30px;
  background-color: yellow;
}
<body>
  <div class="main">
    <div class="left">TEST</div>
  </div>
  <div class="right">TEST</div>
</body>

1 Ответ

0 голосов
/ 31 мая 2018

Не стоит создавать макет, используя только абсолютную позицию.Вы можете лучше положиться на flexbox, например:

body {
  height: 100vh;
  margin: 0;
  display: flex;
  background: grey;
}

.left {
  flex: 1;
  border-right: 1px solid #eeeeee;
  background-color: lightblue;
}

.right {
  flex: 4;
  margin-top: 45px;
  margin-right: 30px;
  background-color: yellow;
}
<div class="left">TEST</div>
<div class="right">TEST</div>

Но если вы хотите сохранить свой код, вам необходимо учитывать запас в расчете ширины:

body {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  bottom: 0;
  overflow: hidden;
}

.main {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
  overflow: hidden;
  background-color: grey;
}

.left {
  position: absolute;
  top: 0;
  bottom: 0;
  padding-top: 0;
  padding-bottom: 0;
  left: 0;
  width: 25%;
  border-right: 1px solid #eeeeee;
  background-color: lightblue;
}

.right {
  position: absolute;
  width: calc(75% - 30px);
  right: 0px;
  top: 45px;
  bottom: 0;
  /*padding-right: 30px;*/
  margin-right: 30px;
  background-color: yellow;
}
<body>
  <div class="main">
    <div class="left">TEST</div>
  </div>
  <div class="right">TEST</div>
</body>
...