当屏幕较小时,组件不居中

发布于 2025-01-28 19:54:57 字数 5283 浏览 3 评论 0原文

我正在制作一个网站,该网站必须兼容所有设备(笔记本电脑,平板电脑,电话),并且在较小的屏幕上似乎无法使我的天气API组件变得更小。我主要是在尝试用宽度支柱进行调整,在这里我一直在使用%。我还注意到,当我更多地减小宽度时,我的很多组件都会在左侧消失。

我已经尝试过:

  • 在我的代码中到处检查边距,填充和差距,
  • 将小部件放在父级(并居中 +调整大小)
  • 宽度中,以%的宽度,最大范围
  • 减少/删除填充和差距以及其他Div的

外观。所有设备:
“它在所有设备上应该如何看”

平板电脑视图:
“

let date_now;
let icon_now;
let cmt_now;
let temp_now;
let wind_now;

let day0_icon;
let day0_day;
let day0_cmt;
let day0_max;
let day0_min;

let day1_icon;
let day1_day;
let day1_cmt;
let day1_max;
let day1_min;

let day2_icon;
let day2_day;
let day2_cmt;
let day2_max;
let day2_min;

let day3_icon;
let day3_day;
let day3_cmt;
let day3_max;
let day3_min;

let loading;

let weather = async() => {
  loading = false;

  let data = await fetch(
    `https://weatherdbi.herokuapp.com/data/weather/oslo`
  );

  let json = await data.json();

  date_now = json.currentConditions.dayhour;
  icon_now = json.currentConditions.iconURL;
  cmt_now = json.currentConditions.comment;
  temp_now = json.currentConditions.temp.c;
  wind_now = json.currentConditions.wind.km;

  day0_icon = json.next_days[1].iconURL;
  day0_day = json.next_days[1].day;
  day0_cmt = json.next_days[1].comment;
  day0_max = json.next_days[1].max_temp.c;
  day0_min = json.next_days[1].min_temp.c;

  day1_icon = json.next_days[2].iconURL;
  day1_day = json.next_days[2].day;
  day1_cmt = json.next_days[2].comment;
  day1_max = json.next_days[2].max_temp.c;
  day1_min = json.next_days[2].min_temp.c;

  day2_icon = json.next_days[3].iconURL;
  day2_day = json.next_days[3].day;
  day2_cmt = json.next_days[3].comment;
  day2_max = json.next_days[3].max_temp.c;
  day2_min = json.next_days[3].min_temp.c;

  day3_icon = json.next_days[4].iconURL;
  day3_day = json.next_days[4].day;
  day3_cmt = json.next_days[4].comment;
  day3_max = json.next_days[4].max_temp.c;
  day3_min = json.next_days[4].min_temp.c;

  loading = true;
};

weather();
.widget {
  display: flex;
  flex-direction: row;
  justify-content: center;
  place-items: center;
  width: 100%;
}

.lane {
  padding: 2rem;
  text-align: center;
}

.conditions {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.lane2 {
  display: flex;
  flex-direction: row;
  gap: 2rem;
}

.icon {
  width: 8rem;
}

.temp-high {
  color: red;
}

.temp-low {
  color: lightskyblue;
}

.loading {
  text-align: center;
  font-size: 2.5rem;
}


/* =================== MEDIA (medium devices) =================== */

@media screen and (max-width: 1024px) {
  .widget {
    width: 50%;
  }
}


/* =================== MEDIA (small devices) =================== */

@media screen and (max-width: 600px) {}
<section id="Weather">
  <h1>Weather in Oslo</h1>
  <p>Is it time to skate?</p>
  <div class="widget">
    {#if loading}
    <div class="lane">
      <h1>{date_now}</h1>
      <div class="lane2">
        <div class="icon">
          <img src={icon_now} alt="icon" class="icon" />
          <p>{cmt_now}</p>
        </div>
        <div class="conditions">
          <h2>{temp_now} &#176;C</h2>
          <p>&#128168; {(wind_now / 3.6).toFixed(1)} m/s</p>
        </div>
      </div>
    </div>
    <div class="lane">
      <h1>{day0_day}</h1>
      <div class="info">
        <img src={day0_icon} alt="icon" class="icon" />
        <p>{day0_cmt}</p>
        <p class="temp-high">{day0_max} &#176;C</p>
        <p class="temp-low">{day0_min} &#176;C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day1_day}</h1>
      <div class="info">
        <img src={day1_icon} alt="icon" class="icon" />
        <p>{day1_cmt}</p>
        <p class="temp-high">{day1_max} &#176;C</p>
        <p class="temp-low">{day1_min} &#176;C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day2_day}</h1>
      <div class="info">
        <img src={day2_icon} alt="icon" class="icon" />
        <p>{day2_cmt}</p>
        <p class="temp-high">{day2_max} &#176;C</p>
        <p class="temp-low">{day2_min} &#176;C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day3_day}</h1>
      <div class="info">
        <img src={day3_icon} alt="icon" class="icon" />
        <p>{day3_cmt}</p>
        <p class="temp-high">{day3_max} &#176;C</p>
        <p class="temp-low">{day3_min} &#176;C</p>
      </div>
    </div>
    {:else}
    <p class="loading">Loading...</p>
    {/if}
  </div>
</section>

I am making a website which has to be compatible for all devices (laptop, tablet, phone) and can't seem to get my weather API component to become smaller when on smaller screens. I have mainly been trying to resize it with the width prop, and here I've been using %. I also noticed when I reduce the width even more, a lot of my component disappears to the left.

I have tried:

  • checked everywhere in my code for margin, padding and gap's
  • putting the widget in a parent div (and centering + resizing it)
  • width in %, max-content
  • reducing/removing padding and gap from other div's

How it should look on all devices:
How it should look on all devices

Tablet view:
Tablet view

let date_now;
let icon_now;
let cmt_now;
let temp_now;
let wind_now;

let day0_icon;
let day0_day;
let day0_cmt;
let day0_max;
let day0_min;

let day1_icon;
let day1_day;
let day1_cmt;
let day1_max;
let day1_min;

let day2_icon;
let day2_day;
let day2_cmt;
let day2_max;
let day2_min;

let day3_icon;
let day3_day;
let day3_cmt;
let day3_max;
let day3_min;

let loading;

let weather = async() => {
  loading = false;

  let data = await fetch(
    `https://weatherdbi.herokuapp.com/data/weather/oslo`
  );

  let json = await data.json();

  date_now = json.currentConditions.dayhour;
  icon_now = json.currentConditions.iconURL;
  cmt_now = json.currentConditions.comment;
  temp_now = json.currentConditions.temp.c;
  wind_now = json.currentConditions.wind.km;

  day0_icon = json.next_days[1].iconURL;
  day0_day = json.next_days[1].day;
  day0_cmt = json.next_days[1].comment;
  day0_max = json.next_days[1].max_temp.c;
  day0_min = json.next_days[1].min_temp.c;

  day1_icon = json.next_days[2].iconURL;
  day1_day = json.next_days[2].day;
  day1_cmt = json.next_days[2].comment;
  day1_max = json.next_days[2].max_temp.c;
  day1_min = json.next_days[2].min_temp.c;

  day2_icon = json.next_days[3].iconURL;
  day2_day = json.next_days[3].day;
  day2_cmt = json.next_days[3].comment;
  day2_max = json.next_days[3].max_temp.c;
  day2_min = json.next_days[3].min_temp.c;

  day3_icon = json.next_days[4].iconURL;
  day3_day = json.next_days[4].day;
  day3_cmt = json.next_days[4].comment;
  day3_max = json.next_days[4].max_temp.c;
  day3_min = json.next_days[4].min_temp.c;

  loading = true;
};

weather();
.widget {
  display: flex;
  flex-direction: row;
  justify-content: center;
  place-items: center;
  width: 100%;
}

.lane {
  padding: 2rem;
  text-align: center;
}

.conditions {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.lane2 {
  display: flex;
  flex-direction: row;
  gap: 2rem;
}

.icon {
  width: 8rem;
}

.temp-high {
  color: red;
}

.temp-low {
  color: lightskyblue;
}

.loading {
  text-align: center;
  font-size: 2.5rem;
}


/* =================== MEDIA (medium devices) =================== */

@media screen and (max-width: 1024px) {
  .widget {
    width: 50%;
  }
}


/* =================== MEDIA (small devices) =================== */

@media screen and (max-width: 600px) {}
<section id="Weather">
  <h1>Weather in Oslo</h1>
  <p>Is it time to skate?</p>
  <div class="widget">
    {#if loading}
    <div class="lane">
      <h1>{date_now}</h1>
      <div class="lane2">
        <div class="icon">
          <img src={icon_now} alt="icon" class="icon" />
          <p>{cmt_now}</p>
        </div>
        <div class="conditions">
          <h2>{temp_now} °C</h2>
          <p>💨 {(wind_now / 3.6).toFixed(1)} m/s</p>
        </div>
      </div>
    </div>
    <div class="lane">
      <h1>{day0_day}</h1>
      <div class="info">
        <img src={day0_icon} alt="icon" class="icon" />
        <p>{day0_cmt}</p>
        <p class="temp-high">{day0_max} °C</p>
        <p class="temp-low">{day0_min} °C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day1_day}</h1>
      <div class="info">
        <img src={day1_icon} alt="icon" class="icon" />
        <p>{day1_cmt}</p>
        <p class="temp-high">{day1_max} °C</p>
        <p class="temp-low">{day1_min} °C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day2_day}</h1>
      <div class="info">
        <img src={day2_icon} alt="icon" class="icon" />
        <p>{day2_cmt}</p>
        <p class="temp-high">{day2_max} °C</p>
        <p class="temp-low">{day2_min} °C</p>
      </div>
    </div>
    <div class="lane">
      <h1>{day3_day}</h1>
      <div class="info">
        <img src={day3_icon} alt="icon" class="icon" />
        <p>{day3_cmt}</p>
        <p class="temp-high">{day3_max} °C</p>
        <p class="temp-low">{day3_min} °C</p>
      </div>
    </div>
    {:else}
    <p class="loading">Loading...</p>
    {/if}
  </div>
</section>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文