Разделы перемещаются со своих позиций при уменьшении масштаба страницы

#html #css #layout #flexbox #css-position

#HTML #css #макет #flexbox #css-position

Вопрос:

Итак, в основном моя проблема заключается в том, что когда я увеличиваю или уменьшаю масштаб страницы, некоторые DIVS смещаются со своей позиции, что приводит к разрыву моего макета. Я использовал свойства position relative и absolute, а также использовал % вместо px в качестве единиц измерения при позиционировании. Я просмотрел несколько статей, в которых говорилось, что нецелесообразно использовать абсолютную позицию и что это ожидаемое поведение, но я, похоже, не смог найти ответ на свой вопрос. Я также попытался найти способ сделать это с помощью CSS Flexbox, но я не смог найти прямого ответа на свою проблему.

Мой ожидаемый макет должен быть чем-то вродеhttps://snipboard.io/Mr8sNv.jpg но, как я уже говорил ранее, он ломается при увеличении / уменьшении масштаба.

Вот мой HTML.

         <div class="Container">
            <div class="background">                  
                <div class="Space"></div>
                <p class="Branding_Design">BRANDING amp; DESIGN</p>
                <div class="Project_One">Project One</div>
                <div class="SliderBOX"></div>
                <div style="position:absolute; right: 8%; top: 59%;">
                    <div class="ProjectDetailsContainer">
                        <p class="Project_Details">PROJECT DETAILS</p>                 
                    </div>
                </div>
                <div style="position:absolute; right: 12%; top: 62.5%;">
                    <div class="ViewSlidesContainer">
                        <p class="View_Slides">VIEW SLIDES</p>                            
                    </div>
                </div>                    
             </div>                  
        </div>
  

Вот мой CSS

 .Container {
  width: 100%;
  position: relative;
  height: 721px;
}

.background {
  background: black;
  width: 100%;
  height: 100%;
}

h3 {
  text-align: center;
}

.Space {
  width: 1000px;
  height: 100px;
  background: red;
  position: relative;
  z-index: -1;
}

.SliderBOX{
    height: 525px;
    width: 50%;
    background: yellow;
    margin: 0 auto;
}
.Branding_Design {
  font-size: 10px;
  font-weight: 500;
  font-family: 'Open Sans';
  color: #f7ac53;
  letter-spacing: 0.5px;
  position: absolute;
  top: 39%;
  left: 12%;
}

.Project_One {
  color: white;
  font-family: "Merriweather";
  font-size: 39px;
  font-weight: 300;
  position: absolute;
  top: 45%;
  left: 14%;
  z-index: 1;
}

.ProjectDetailsContainer {
  position: relative;
}

.Project_Details {
  color: white;
  font-family: 'Open Sans';
  font-weight: 400;
  font-size: 11px;
}


.ViewSlidesContainer {
  position: relative;
}

.View_Slides {
  color: white;
  font-family: 'Open Sans';
  font-weight: 400;
  font-size: 11px;
}
  

Я также включил свой код в jsfiddle, чтобы упростить просмотр моего кода
https://jsfiddle.net/wa3bLx1h/22 /

Что я делаю не так?

Комментарии:

1. Каков ваш ожидаемый макет?

2. @huanfeng Это мой ожидаемый макет snipboard.io/Mr8sNv.jpg

Ответ №1:

Я думаю, что приведенный ниже код — это то, что вы ищете, правильно? Flex-box был бы решением для устранения этой проблемы. Я бы посоветовал просто пройти через руководства MDN и разобраться с каждым свойством flex-box. Ваша проблема помогла мне лучше понять родительские и дочерние контейнеры.

 <div class="container">
  <div class="background">
    <div class="space"></div>
    <div class="textCon1">
      <div class="p-text-1">
        <p class="brandingDesign"> BRANDING amp; DESIGN</p>
      </div>
      <div class="p-text-2">
        <p class="projectOne">Project One</p>
      </div>
    </div>
    <div class="sliderBox"></div>
    <div class="projectDetailContainer">
      <div class="p-text-3">
        <p class="projectDetails"> PROJECT DETAILS</p>
      </div>
      <div class="viewSlideContainer">
        <p class="viewSlides">VIEW SLIDES</p>
      </div>
    </div>
  </div>
</div>


* {
  margin: 0;
  padding: 0;
}

.container {
  height: 721px;
  width: 100%;
}
.background {
  height: 100%;
  width: 100%;
  background: black;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sliderBox {
  height: 525px;
  width: 50%;
  display: flex;
  background: yellow;
}
.textCon1 {
  display: flex;
  flex-direction: column;
  margin-right: 10px;
}
.brandingDesign {
  font-size: 10px;
  font-weight: 500;
  font-family: "Open Sans";
  color: #f7ac53;
  letter-spacing: 0.5px;
  margin-right: 100px;
  padding: 5px;
}
.projectOne {
  color: white;
  font-family: "Merriweather";
  font-size: 39px;
  font-weight: 300;
  margin-left: 50px;
  padding: 5px;
}
.projectDetailContainer {
  display: flex;
  flex-direction: column;
  margin-top: 200px;
  margin-left: 100px;
}
.projectDetails {
  color: white;
  font-family: "Open Sans";
  font-weight: 400;
  font-size: 11px;
  margin-left: 50px;
  padding: 10px;
}
.viewSlides {
  color: white;
  font-family: "Open Sans";
  font-weight: 400;
  font-size: 11px;
  padding: 5px;
}

  

Комментарии:

1. Спасибо, я думаю, что это хорошее решение проблемы.