首页 > 解决方案 > CSS Grid,当我不应该的时候得到一个滚动条

问题描述

我有一个基本的布局。我正在尝试使用 CSS 网格创建布局。

出于某种原因,当我不应该出现滚动条时,我得到了滚动条,因为没有那么高的内容可以保证滚动条。

我已经创建了这个 codepen

HTML

<div class="l-grid">
  <header>
    <h1 class="logo"><span class="logo__brand-color">M</span>y Site</h1>
  </header>
  <main>
    <div class="quote">
      <img
        src="https://www.viva.org.uk/sites/default/files/styles/large/public/Albert%20Einstein_0.jpg?itok=A5nVyyns"
        alt="celadet"
        class="quote__image"
      />
      <p class="quote__body">
        A hundred times every day I remind myself that my inner and outer life are based on the labors of other men, living and dead, and that I must exert myself in order to give in the same measure as I have received and am still receiving.
      </p>
      <h3 class="quote__author">Albert Einstein</h3>
    </div>
    <div class="search">
      <input
        type="text"
        class="search__field"
        placeholder="Search quotes"
      />
    </div>
  </main>
  <footer>
    <ul class="footer-nav">
      <li class="footer-nav__item">
        <a href="#" class="footer-nav__link">About</a>
      </li>
      <li class="footer-nav__item footer-nav__item--separator">&middot;</li>
      <li class="footer-nav__item">
        <a href="#" class="footer-nav__link">Help</a>
      </li>
      <li class="footer-nav__item footer-nav__item--separator">&middot;</li>
      <li class="footer-nav__item">
        <a href="#" class="footer-nav__link">Contact</a>
      </li>
    </ul>
  </footer>
</div>

CSS

* {
  margin: 0;
  padding: 0;
  text-decoration: none;
  list-style: none;
  border: none;
  box-sizing: border-box;
}

:root {
  font-size: 100%;
}

html,
body {
  height: 100%;
}

body {
  background-color: #292c37;
}

.l-grid {
  display: grid;
  width: 1100px;
  margin: 0 auto;
  height: 100%;
  grid-template-columns: 1;
  grid-template-rows: auto 1fr auto;
  align-items: center;
}

.logo {
  color: #fff;
  font-family: "Satisfy", cursive;
  font-weight: 100;
}

.logo__brand-color {
  color: hsl(355, 78%, 39%, 80%);
}

.quote {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  font-size: 1rem;
  grid-gap: 50px;
}

.quote__image {
  border-radius: 50%;
  width: 140px;
  height: 140px;
  object-fit: cover;
  border: 2px solid hsl(0, 0%, 0%, 60%);
  border-style: inset;
}

.quote__body {
  font-family: "Lora", serif;
  color: hsl(0, 0%, 100%, 85%);
  line-height: 1.93em;
  font-size: 1.2em;
}

.quote__author {
  color: hsl(355, 78%, 39%, 80%);
  grid-column: span 2;
  text-align: right;
  font-size: 1.5em;
}

.search {
  background-color: #363a49;
  padding: 20px;
  border-radius: 3px;
}

.search__field {
  background-color: #292c37;
  border: none;
  border-radius: 3px;
  height: 43px;
  width: 100%;
  color: hsl(0, 0%, 100%, 60%);
  font-family: "Lora", serif;
  padding: 10px;
}

footer {
  font-size: 1rem;
}

.footer-nav {
  display: grid;
  grid-template-columns: repeat(5, 100px);
  justify-content: center;
}

.footer-nav__item {
  display: flex;
  justify-content: center;
  align-items: center;
}

.footer-nav__item,
.footer-nav__link {
  color: hsl(0, 0%, 100%, 50%);
  text-align: center;
}

.footer-nav__link {
  font-size: 1em;
  font-family: "Roboto", sans-serif;
}

.footer-nav__item--separator {
  font-size: 3em;
  line-height: 0.5em;
}

标签: htmlcsscss-grid

解决方案


我对此不是 100% 确定的。

但我认为这一切背后的罪魁祸首是css被应用于:

<li class="footer-nav__item footer-nav__item--separator">·</li>

哪个是

.footer-nav__item--separator {
   font-size: 3em;
   line-height: 0.5em;
}

默认字体大小:16px

现在要知道我们的文本需要多少高度,我们将乘以font-sizeline-heightem、rem、px 或任何其他单位与行高无关)

3em * 16px = 48px // Size of the character 
48px * .5 = 24px  // The height of the text

如您所见,字符比高度大得多,因此它会溢出并导致出现滚动条。

解决方案:

  1. 给页脚更高的高度
  2. 调整line-heightfont-size
  3. 如果它只是一页,只需隐藏溢出似乎是最简单的解决方案

推荐阅读