CSS网格,当我不应该使用滚动条时

时间:2019-10-01 11:15:06

标签: html css css-grid

我有一个basic layout。我正在尝试使用CSS网格创建布局。

由于某种原因,我不应该使用滚动条,因为没有足够高的内容可以保证滚动条。

我已经创建了this 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;
}

4 个答案:

答案 0 :(得分:2)

对此我不是100%肯定。

但是我认为所有这些背后的罪魁祸首是被应用于CSS的

fxMessage()

哪个

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

默认字体大小:.footer-nav__item--separator { font-size: 3em; line-height: 0.5em; }

现在要知道文本需要多少高度,我们将16px乘以font-size(em,rem,px或任何其他单位对行高无关)< / p>

line-height

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

解决方案:

  1. 赋予页脚更多的高度
  2. 调整3em * 16px = 48px // Size of the character 48px * .5 = 24px // The height of the text line-height
  3. 如果只有一页,只是隐藏溢出似乎是最简单的解决方案

答案 1 :(得分:0)

您需要更新grid-template-rows: auto; CSS以删除滚动条。

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

答案 2 :(得分:0)

尝试一下:

body{
   overflow-y:hidden;
}

这可能对您有帮助!

答案 3 :(得分:-1)

您可以这样做: 从.l-grid CSS移除高度或添加height:auto

   

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