0

我正在使用引导程序和 jquery 创建一个登录屏幕,其中必须集中访问卡。

问题是当垂直滚动条出现时,滚动到顶部不会显示所有内容,并且无法访问 facebook 按钮(取决于高度,google 也是)。

为了补偿导航栏的高度,我在 body 和父 div 上测试了 padding-top,但没有成功。

我还尝试在卡前添加一个带有 clearfix 的 br,但它没有用。

@charset "UTF-8";

html, body
{
  height: 100%;
  width: 100%;
}

body
{
  overflow: hidden;
  padding-top: 3.5rem;
}

.btn-with-icon
{
  position: relative;
}
.btn-with-icon > div
{
  background-color: #FFF;
  border-radius: 0.15rem;
  height: 1.9rem;
  left: 0.17rem;
  position: absolute;
  top: 0.17rem;
  width: 1.9rem;
}
.btn-with-icon > div > i
{
  height: 1.9rem !important;
  width: 1.9rem !important;;
}
.btn-with-icon > div > i::before
{
  font-size: 1.5rem;
  line-height: 1.9rem !important;
}
.btn-with-icon > div > .fa-facebook::before
{
  color: #3B5998;
}
.btn-with-icon > div > .fa-google::before
{
  color: #DB4437;
}
.btn-with-icon > span
{
  margin-left: 2rem;
}

.input-with-icon > i::before
{
  color: #C0C0C0;
  font-size: 1rem;
}
.input-with-icon > i
{
  font-size: 1.8rem;
  position: absolute;
  z-index: 1;
}
.input-with-icon > .form-control
{
  padding-left: 2rem;
}

.separator
{
  color: #C0C0C0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.horizontal-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
}
.horizontal-rule::before,
.horizontal-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  width: 1px;
}
.horizontal-rule::before
{
  margin-bottom: 0.5em;
}
.horizontal-rule::after
{
  margin-top: 0.5em;
}

.vertical-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: row;
  justify-content: center;
}
.vertical-rule::before,
.vertical-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  height: 1px;
}
.vertical-rule::before
{
  margin-right: 0.5em;
}
.vertical-rule::after
{
  margin-left: 0.5em;
}

.small-text,
.small-text *
{
  font-size: 0.8rem;
  font-weight: 400;
}
<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <title>test</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  </head>
  <body class="container-fluid">
    <div class="row h-100">
      <nav class="navbar navbar-dark bg-dark fixed-top">
        <span class="navbar-brand mb-0 h1">navbar</span>
      </nav>
      <div class="col-12 h-100 d-flex justify-content-center align-items-center overflow-auto">
        <div class="card">
          <div class="card-body">
            <form method="post" action="#">
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-facebook fa-fw"></i>
                    </div>
                    <span>Login with Facebook</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-google fa-fw"></i>
                    </div>
                    <span>Login with Google</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 separator">
                  <span class="vertical-rule">OR</span>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-at fa-fw"></i>
                  <input type="email" placeholder="e-mail" class="form-control">
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-lock fa-fw"></i>
                  <input type="password" placeholder="password" class="form-control">
                  <a href="#" class="float-right small-text">Forgotten password</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="submit" class="btn btn-success btn-block">
                    <span class="fa fa-check"></span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 text-center small-text">
                  <a href="#">Sign in</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-6 mb-0 small-text">
                  <a href="#" target="_blank">Terms</a>
                </div>
                <div class="form-group col-6 mb-0 text-right small-text">
                  <a href="#" target="_blank">Privacy policy</a>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
  </body>
</html>

4

2 回答 2

2

我已经从包含的 div 中删除了 align-items-center 并将 m-auto 添加到卡中。

@charset "UTF-8";

html, body
{
  height: 100%;
  width: 100%;
}

body
{
  overflow: hidden;
  padding-top: 3.5rem;
}

.btn-with-icon
{
  position: relative;
}
.btn-with-icon > div
{
  background-color: #FFF;
  border-radius: 0.15rem;
  height: 1.9rem;
  left: 0.17rem;
  position: absolute;
  top: 0.17rem;
  width: 1.9rem;
}
.btn-with-icon > div > i
{
  height: 1.9rem !important;
  width: 1.9rem !important;;
}
.btn-with-icon > div > i::before
{
  font-size: 1.5rem;
  line-height: 1.9rem !important;
}
.btn-with-icon > div > .fa-facebook::before
{
  color: #3B5998;
}
.btn-with-icon > div > .fa-google::before
{
  color: #DB4437;
}
.btn-with-icon > span
{
  margin-left: 2rem;
}

.input-with-icon > i::before
{
  color: #C0C0C0;
  font-size: 1rem;
}
.input-with-icon > i
{
  font-size: 1.8rem;
  position: absolute;
  z-index: 1;
}
.input-with-icon > .form-control
{
  padding-left: 2rem;
}

.separator
{
  color: #C0C0C0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.horizontal-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
}
.horizontal-rule::before,
.horizontal-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  width: 1px;
}
.horizontal-rule::before
{
  margin-bottom: 0.5em;
}
.horizontal-rule::after
{
  margin-top: 0.5em;
}

.vertical-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: row;
  justify-content: center;
}
.vertical-rule::before,
.vertical-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  height: 1px;
}
.vertical-rule::before
{
  margin-right: 0.5em;
}
.vertical-rule::after
{
  margin-left: 0.5em;
}

.small-text,
.small-text *
{
  font-size: 0.8rem;
  font-weight: 400;
}
<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <title>test</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  </head>
  <body class="container-fluid">
    <div class="row h-100">
      <nav class="navbar navbar-dark bg-dark fixed-top">
        <span class="navbar-brand mb-0 h1">navbar</span>
      </nav>
      <div class="col-12 h-100 d-flex justify-content-center overflow-auto">
        <div class="card m-auto">
          <div class="card-body">
            <form method="post" action="#">
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-facebook fa-fw"></i>
                    </div>
                    <span>Login with Facebook</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-google fa-fw"></i>
                    </div>
                    <span>Login with Google</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 separator">
                  <span class="vertical-rule">OR</span>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-at fa-fw"></i>
                  <input type="email" placeholder="e-mail" class="form-control">
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-lock fa-fw"></i>
                  <input type="password" placeholder="password" class="form-control">
                  <a href="#" class="float-right small-text">Forgotten password</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="submit" class="btn btn-success btn-block">
                    <span class="fa fa-check"></span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 text-center small-text">
                  <a href="#">Sign in</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-6 mb-0 small-text">
                  <a href="#" target="_blank">Terms</a>
                </div>
                <div class="form-group col-6 mb-0 text-right small-text">
                  <a href="#" target="_blank">Privacy policy</a>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
  </body>
</html>

于 2020-08-11T13:30:00.553 回答
0

现在我添加了一个新的类,以防止卡片在设置最大高度的情况下扩展太多,HTMl 中的类和新的 CSS 标有注释。我将尝试进一步研究并找出发生这种情况的确切原因,但您可以尝试一下,看看它是否解决了您页面上的问题。在片段中它确实如此。

@charset "UTF-8";

html, body
{
  height: 100%;
  width: 100%;
}

body
{
  overflow: hidden;
  padding-top: 3.5rem;
}

.btn-with-icon
{
  position: relative;
}
.btn-with-icon > div
{
  background-color: #FFF;
  border-radius: 0.15rem;
  height: 1.9rem;
  left: 0.17rem;
  position: absolute;
  top: 0.17rem;
  width: 1.9rem;
}
.btn-with-icon > div > i
{
  height: 1.9rem !important;
  width: 1.9rem !important;;
}
.btn-with-icon > div > i::before
{
  font-size: 1.5rem;
  line-height: 1.9rem !important;
}
.btn-with-icon > div > .fa-facebook::before
{
  color: #3B5998;
}
.btn-with-icon > div > .fa-google::before
{
  color: #DB4437;
}
.btn-with-icon > span
{
  margin-left: 2rem;
}

.input-with-icon > i::before
{
  color: #C0C0C0;
  font-size: 1rem;
}
.input-with-icon > i
{
  font-size: 1.8rem;
  position: absolute;
  z-index: 1;
}
.input-with-icon > .form-control
{
  padding-left: 2rem;
}

.separator
{
  color: #C0C0C0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.horizontal-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
}
.horizontal-rule::before,
.horizontal-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  width: 1px;
}
.horizontal-rule::before
{
  margin-bottom: 0.5em;
}
.horizontal-rule::after
{
  margin-top: 0.5em;
}

.vertical-rule
{
  align-items: center;
  display: flex;
  flex: 1;
  flex-direction: row;
  justify-content: center;
}
.vertical-rule::before,
.vertical-rule::after
{
  background: #C0C0C0;
  content: '';
  flex: 1;
  height: 1px;
}
.vertical-rule::before
{
  margin-right: 0.5em;
}
.vertical-rule::after
{
  margin-left: 0.5em;
}

.small-text,
.small-text *
{
  font-size: 0.8rem;
  font-weight: 400;
}
/*This is the new CSS*/
.display-area{
  max-height: 80%;
}
<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <title>test</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  </head>
  <body class="container-fluid">
    <div class="row h-100">
      <nav class="navbar navbar-dark bg-dark fixed-top">
        <span class="navbar-brand mb-0 h1">navbar</span>
      </nav>
      <div class="col-12 h-100 d-flex justify-content-center align-items-center overflow-auto">
      <!-- added a new class here -->
        <div class="card display-area">
          <div class="card-body">
            <form method="post" action="#">
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-facebook fa-fw"></i>
                    </div>
                    <span>Login with Facebook</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="button" class="btn btn-secondary btn-block text-left btn-with-icon">
                    <div>
                      <i class="fa fa-google fa-fw"></i>
                    </div>
                    <span>Login with Google</span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 separator">
                  <span class="vertical-rule">OR</span>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-at fa-fw"></i>
                  <input type="email" placeholder="e-mail" class="form-control">
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 input-with-icon">
                  <i class="fa fa-lock fa-fw"></i>
                  <input type="password" placeholder="password" class="form-control">
                  <a href="#" class="float-right small-text">Forgotten password</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12">
                  <button type="submit" class="btn btn-success btn-block">
                    <span class="fa fa-check"></span>
                  </button>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-12 text-center small-text">
                  <a href="#">Sign in</a>
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-6 mb-0 small-text">
                  <a href="#" target="_blank">Terms</a>
                </div>
                <div class="form-group col-6 mb-0 text-right small-text">
                  <a href="#" target="_blank">Privacy policy</a>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
  </body>
</html>

于 2020-08-11T13:24:34.160 回答