Как выровнять содержимое этой страницы без горизонтальной полосы прокрутки?

Привет, я создаю простой веб-сайт с использованием CSS flexbox, но по некоторым причинам мой макет в About.vue растягивается с этой горизонтальной полосой, только этот компонент находится в mainLayout.vue, и я не могу понять, что не так, создавая эту проблему. Кто-нибудь знал, как это исправить?

Как выровнять содержимое этой страницы без горизонтальной полосы прокрутки?

MainLayout.vue

<template>
  <div class = "wrapper--main">
    <Navbar />
    <Hero />
    <main>
      <slot />
    </main>
    <Footer />
  </div>
</template>
<script lang = "ts">
import Hero from "../components/Hero.vue";
import Footer from "../components/Footer.vue";
import Navbar from "../components/Navbar.vue";
import { defineComponent } from "vue";
export default defineComponent({
  components: { Navbar, Footer, Hero },
});
</script>
<style lang = "sass">
@import "../styles/mainLayout.sass"
@import "../styles/variables.sass"
@import "../styles/utilitys.sass"
</style>

MainLayout.sass

@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap')
*,
*::before,
*::after
    box-sizing: border-box
    margin: 0px
    padding: 0px

img,
picture,
svg
    max-width: 100%
    display: block
    object-fit: cover

img
    object-fit: cover
@media (min-width: 768px)
    html
        font-size: 130%

body
    font-family: 'Lato', sans-serif
    font-weight: 400
    line-height: 1.65
    max-width: 2000px
    background-color: hsl(var(--white))
    color: hsl(var(--text))

.wrapper--main
    display: grid
    grid-template-rows: auto 1fr auto
    min-height: 100vh

main
    display: grid
    gap: var(--size-fluid-6)
    margin-bottom: var(--size-fluid-5)
    margin-top: var(--size-fluid-5)

Index.vue

<template>
  <MainLayout><About /> </MainLayout>
</template>
<script lang = "ts">
import MainLayout from "../layouts/MainLayout.vue";
import About from "../components/About.vue";
import { defineComponent } from "vue";
export default defineComponent({
  components: { MainLayout, About },
});
</script>
<style lang = "sass">
</style>

О.vue

<template>
  <div class = "about-container">
    <div class = "wrapper gap">
      <div class = "title-container--about gap--sm">
        <div class = "title-wrapper">
          <h2 class = "h2">lorem ipsum</h2>
          <p class = "title-container--sm">
            Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor
            iusto impedit molestiae quo, labore perspiciatis quia, deserunt quis
            nobis asperiores, delectus ut! Quaerat ut molestiae sunt ex
            molestias fuga quis. orem ipsum dolor sit amet consectetur,
            adipisicing elit. Dolor iusto impedit molestiae quo, labore
            perspiciatis quia, deserunt quis nobis asperiores, delectus ut!
            Quaerat ut molestiae sunt ex molestias fuga quis.
          </p>
        </div>
        <div class = "arrow--map">
          <img class = "icon--lg" src = "../icons/arrow-map.svg" alt = "" />
        </div>
        <div class = "container-about-btn-map">
          <img class = "icon--lg about-map" src = "../icons/map.svg" alt = "" />
          <button class = "btn btn--primary about-btn">lorem ipsum</button>
        </div>
      </div>
      <img class = "img-about only-desktop" src = "../img/about.jpg" alt = "" />
    </div>
  </div>
</template>
<script lang='ts'>
import { defineComponent } from "vue";
export default defineComponent({});
</script>
<style lang = "sass">
.title-container--sm
  width: var(--size-fluid-10)
  flex-grow: 0
.about-map
  margin-right: auto
.about-btn
  margin-right: auto
.container-about--btn-map
  display: flex
  flex-direction: column
  justify-content: center
  width: 200px
.gap--sm
  gap: var(--size-fluid-4)
.title-container--about
  display: flex
  flex-direction: column
.arrow--map
  display: flex
  justify-content: center
.gap
  gap: var(--size-fluid-8)
.about-container
  margin-left: var(--size-fluid-7)
  margin-right: var(--size-fluid-7)
@media (max-width: 1440px)
  .only-desktop
    display: none
</style>

Есть несколько способов скрыть полосу прокрутки, лучший способ всегда найти, откуда берется лишнее пространство, и решить проблему в корне. Поэтому мой общий совет — используйте инструменты разработчика, щелкните значок со стрелкой и посмотрите, что вызывает дополнительное пространство. В конце концов начните устранять элементы, пока они не исчезнут, вы найдете виновника :)

Cristian Traìna 16.05.2022 17:51

Я знаю это, я перестраивал этот макет семь раз, но даже после этого я не могу понять, откуда берутся эти лишние пробелы, родительский контейнер wrapper--main имеет правильную ширину, но его дочерний main тег имеет эти лишние пробелы, серьезно, я уже пытался много чего исправить. Но я вижу, что мне нужно попросить людей больше испытать их меня :(

pawel szewczyk 16.05.2022 17:59

вам не нужно перестраивать макет, вы можете просто щелкнуть правой кнопкой мыши элемент на вкладке «элементы» инструментов разработчика, а затем выбрать «удалить элемент». Если вы найдете виновника, вы заметите, что, наведя на него курсор с помощью инструмента «стрелка», вы увидите, что пустое пространство будет окрашено в соответствии с цветом, который вы можете понять, если это проблема с шириной, полем или отступом. Вы также можете отредактировать css и проверить решение без пересборки.

Cristian Traìna 16.05.2022 18:24

Дело в том, что воспроизвести проблему в наших системах очень сложно, так как у вас есть только построенная страница. Так что я дал вам подсказку, я уверен, что вы найдете решение

Cristian Traìna 16.05.2022 18:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Попробуйте добавить это:

html, body
    ...
    max-width: 2000px
    width: 100vw
    overflow-x: hidden

Хотя overflow-x должен быть последним средством, если описанный выше метод не сработает.

Объяснение того, почему это работает

Ну, свойство max-width, которое вы указали для элемента body, говорит только о том, что ширина body не должна превышать определенного значения. Ваш HTML-элемент также имеет собственную ширину, и по умолчанию это ширина области просмотра (экрана). Поэтому, если содержимое вашего тела растягивается по оси y, ваш элемент тела будет расширяться до максимального значения, которое вы установили, чтобы вместить это содержимое, что означает, что оно выйдет за пределы ширины вашего html-элемента.

Указание width: 100vw означает, что тело будет иметь ту же ширину, что и элемент html, и не должно превышать ее.

Свойство max-width вступает в игру только тогда, когда размер экрана действительно большой — например. на настольных компьютерах — и вы хотите ограничить ширину содержимого страницы. Это не то, что обычно делается, потому что все содержимое страницы будет привязано к одной стороне экрана. Я уверен, что это не ваш желаемый эффект, потому что это также означает, что элементы полной ширины, такие как ваша панель навигации, не будут растягиваться на весь экран.

Это работает для меня, спасибо :) Можете ли вы объяснить, как это работает?

pawel szewczyk 16.05.2022 20:28

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