0

我目前正在做 The Odin Project,我的任务是制作 Google 主页。我遇到了一个我不知道如何解决的问题。我想通过添加 box-sizing:borderbox; 页面不会比使用curenlty的屏幕更大。换句话说,我的谷歌页面非常宽。这是我在 github 上的项目:https ://github.com/JohnEnglund/google-homepage

4

2 回答 2

0

问题不在于边框属性,而在于内部元素的宽度。主要问题是您定位元素的方法。您应该避免以像素为单位定义顶部、右侧等位置。如果它们是一个问题,请使用边距并尝试减少元素的宽度:以下是我所做的一些修改:

  • 样式.css
header {
  display: flex;
  /* width: 90%; */
  height: 4.8vh;
  /* margin: auto; */
  /* align-items: center; */
  margin: 10px;
  position: relative;
}

.profile-pic {
  /* position: relative; */
  /* left: 92%; */
  border-radius: 50%;
  height: 4.8vh;
}

/* .burger-menu {
  position: relative;
  left: 1080px;
}
nav {
  position: relative;
  left: 1072px; 
} */

.logo img {
  height: 92px;
  width: 272px;
  margin:auto;
  /* text-align: center; */
}

.logo {
  padding-top: 47px;
  /* position: relative; */
  text-align: center;
  /* left: 500px; */
  top: 25px;
}

.language {
  font-size: small;
  position: relative;
  /* left: 590px; */
  text-align: center;
}

.ending {
  display: flex;
  list-style: none;
  position: relative;
  /* right: 880px; */
  flex: 2;
  padding-left : 50px;
}
.btm-navlinks {
  margin-right: 30px;
  color: rgba(0, 0, 0, 0.54);
}

在标题元素周围添加一个 div 包装器以将它们向右移动:

  • 索引.html
    <header>
      <div class="header-wrap">
        <nav>
          <ul class="nav-links">
            <li><a class="nav-link1" href="#">Gmail</a></li>
            <li><a class="nav-link2" href="#">Bilder</a></li>
          </ul>
        </nav>
        <div class="burger-menu">
          <a href="#"
            ><img
              class="burger-menulink"
              src="./Pictures/Skärmavbild 2020-07-07 kl. 17.33.43.png"
              alt="burger-menu"
          /></a>
        </div>
        <div class="profile-pic">
          <a href="#"
            ><img
              class="profile-pic"
              src="https://lh3.googleusercontent.com/ogw/ADGmqu_I3j_aWjRLGl97SmvJwotO5yAsUOC4AmXnL7MK=s192-c-mo"
              alt="profile picture"
          /></a>
        </div>
      </div>
    </header>
  • 样式.css
.header-wrap{
  position: absolute;
  right:2%;
  display: flex;
  align-items: center;
}

此外,在输入文本上从外部添加图像也不是一个好习惯,请尝试使用背景属性

  • 样式.css
.form-control-search {
  display: flex;
  border: 1px solid #dfe1e5;
  box-shadow: none;
  border-radius: 24px;
  z-index: 3;
  height: 44px;
  margin: 0 auto;
  width: 50%;
  outline: none;
  margin-top: 40px;
  font-size: 17px;
  background-image: url(./Pictures/mglass.svg), url(./Pictures/voice_icon.svg);
  background-position: left, right;
  background-repeat: no-repeat,no-repeat;
  padding:0 4% ;
}
.form-control-search:hover {
  box-shadow: 0 0 11px #dfe1e5;
}

/* .mglass-pic svg {
  height: 3vh;
}
.mglass-pic {
  position: relative;
  bottom: 90px;
  left: 360px;
  width: 3vh;
} */

/* .icon svg {
  height: 5vh;
}
.icon svg {
  position: relative;
  bottom: 122px;
  left: 890px;
  width: 4vh;
} */

删除图像的 div,并在按钮周围添加一个按钮包装器:-

  • 索引.html
      <form
        action="https://www.google.com/search"
        class="search-form"
        method="get"
        name="serachform"
        target="_blank"
      >
        <input name="sitesearch" type="hidden" />
        <input
          type="text"
          autocomplete="on"
          class="form-control-search"
          name="q"
          required
        />
        <div class="button-wrap">
          <button class="button" type="submit">Sök på Google</button>
          <button class="button" type="submit">Jag har tur</button>
        </div>  
      </form>
<!-- <div class="mglass-pic">
        <svg
          focusable="false"
          xmlns="http://www.w3.org/2000/svg"
          viewBox="0 0 24 24"
        >
          <path
            d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"
          ></path>
        </svg>
      </div>
      <div class="icon">
        <svg
          class="HPVvwb"
          focusable="false"
          viewBox="0 0 24 24"
          xmlns="http://www.w3.org/2000/svg"
        >
          <path
            d="m12 15c1.66 0 3-1.31 3-2.97v-7.02c0-1.66-1.34-3.01-3-3.01s-3 1.34-3 3.01v7.02c0 1.66 1.34 2.97 3 2.97z"
            fill="#4285f4"
          ></path>
          <path d="m11 18.08h2v3.92h-2z" fill="#34a853"></path>
          <path
            d="m7.05 16.87c-1.27-1.33-2.05-2.83-2.05-4.87h2c0 1.45 0.56 2.42 1.47 3.38v0.32l-1.15 1.18z"
            fill="#f4b400"
          ></path>
          <path
            d="m12 16.93a4.97 5.25 0 0 1 -3.54 -1.55l-1.41 1.49c1.26 1.34 3.02 2.13 4.95 2.13 3.87 0 6.99-2.92 6.99-7h-1.99c0 2.92-2.24 4.93-5 4.93z"
            fill="#ea4335"
          ></path>
        </svg>
      </div> -->
  • 样式.css
.button-wrap{
  margin: 10px auto;
  width: fit-content;
}

还将两个 svg 图像保存在 Pictures 文件夹中,名为 mglass.svg 和 voice_icon.svg

你很高兴去......

PS :-position:relative仅在需要时使用

于 2020-07-08T14:05:47.677 回答
0

box-sizing: borderbox;物业的运作方式与您想象的不同。根据W3

box-sizing 属性定义了如何计算元素的宽度和高度:它们是否包括填充和边框。

边框框:宽度和高度属性(以及最小/最大属性)包括内容、填充和边框

所以,将这个属性添加到你的 CSS 中只是让浏览器能够(来自MDN):

考虑您为元素的宽度和高度指定的值中的任何边框和填充。如果您将元素的宽度设置为 100 像素,则该 100 像素将包括您添加的任何边框或填充,并且内容框将缩小以吸收额外的宽度。这通常会使调整元素大小变得容易得多。

最后,如果您的页面超宽是因为您的 CSS 文件中的一些错误配置。尝试在元素中添加背景颜色以查看它们的宽度。这是一个很好的 CSS 调试工具。

于 2020-07-08T13:04:59.543 回答