Авторизация / Регистрация на той же странице - PullRequest
0 голосов
/ 14 июля 2020

В настоящее время у меня есть такая форма входа в систему Вот как она выглядит :

<body>
    
    <div class="wrapper fadeInDown">
        <div id="formContent">
    <!-- Tabs Titles -->
    <h2 class="active"> Sign In </h2>
    <h2 class="inactive underlineHover">Sign Up </h2>

    <!-- Icon -->
    <div class="fadeIn first">
      <img src="abc-logo.png" id="icon" alt="User Icon" style='height: 25%; width: 25%; object-fit: contain' />
    </div>

    <!-- Login Form -->
    <form>
      <input type="text" id="login" class="fadeIn second" name="login" placeholder="login">
      <input type="text" id="password" class="fadeIn third" name="login" placeholder="password">
      <input type="submit" class="fadeIn fourth" value="Log In">
    </form>

    <!-- Remind Passowrd -->
    <div id="formFooter">
      <a class="underlineHover" href="#">Forgot Password?</a>
    </div>

  </div>
</div>
    
</body>

Как я могу добавить какую-то «функцию переключения (?)», Когда Пользователь нажимает "Зарегистрироваться", появляется ли поле для регистрации?

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Вы можете сделать это так, используя Javascript:

Под формой входа в систему вы добавляете блоки div вокруг элементов форм входа и регистрации, а для формы регистрации вы добавляете атрибут style="display:none" в скрыть это.

<!-- Login Form -->
<div id=loginElements>
 <form>
  
    <input type="text" id="login" class="fadeIn second" name="login" placeholder="login">
    <input type="text" id="password" class="fadeIn third" name="login" placeholder="password">
    <input type="submit" class="fadeIn fourth" value="Log In">
 </form>
</div>
<div id=signupElements style="display:none">
 <form>
    <input type="text" id="signup" class="fadeIn second" name="signup" placeholder="signup">
    <input type="text" id="signupPassword" class="fadeIn third" name="signupPassword" placeholder="password" style="display:none">
    <input type="submit" class="fadeIn fourth" value="Sign Up">
 </form>
</div>

, а затем вы добавляете onclick функции к заголовкам вкладок, которые изменяют то, что отображается. Пример, который скрывает форму входа и показывает форму регистрации:

<h2 class="inactive underlineHover" onclick=showSignUp()>Sign Up </h2>

и реализует ее следующим образом:

function showSignUp() {
  // Hide login form
  var loginElements = document.getElementById("loginElements");
  loginElements.setAttribute('style', 'display:none');

  // Display signup form
  var signupElements = document.getElementById("signupElements");
  signupElements.setAttribute('style', '');
}

Вы можете реализовать функцию, которая скрывает форму регистрации и показывает вход Форма похожа на эту. Также вам, вероятно, потребуется изменить классы заголовков вкладок, чтобы правильный из них отображался как активный. Это также очень похоже на приведенный выше код, вам просто нужно указать им идентификаторы, чтобы вы могли получить доступ к элементам с помощью Javascript, а затем использовать .setAttribute('class', 'active');, чтобы установить правильный класс.

1 голос
/ 14 июля 2020

Вы можете использовать вкладки попробуйте это,

/*
 CSS for the main interaction
*/
.tabset > input[type="radio"] {
  position: absolute;
  left: -200vw;
}

.tabset .tab-panel {
  display: none;
}

.tabset > input:first-child:checked ~ .tab-panels > .tab-panel:first-child,
.tabset > input:nth-child(3):checked ~ .tab-panels > .tab-panel:nth-child(2),
.tabset > input:nth-child(5):checked ~ .tab-panels > .tab-panel:nth-child(3),
.tabset > input:nth-child(7):checked ~ .tab-panels > .tab-panel:nth-child(4),
.tabset > input:nth-child(9):checked ~ .tab-panels > .tab-panel:nth-child(5),
.tabset > input:nth-child(11):checked ~ .tab-panels > .tab-panel:nth-child(6) {
  display: block;
}

/*
 Styling
*/
body {
  font: 16px/1.5em "Overpass", "Open Sans", Helvetica, sans-serif;
  color: #333;
  font-weight: 300;
}

.tabset > label {
  position: relative;
  display: inline-block;
  padding: 15px 15px 25px;
  border: 1px solid transparent;
  border-bottom: 0;
  cursor: pointer;
  font-weight: 600;
}

.tabset > label::after {
  content: "";
  position: absolute;
  left: 15px;
  bottom: 10px;
  width: 22px;
  height: 4px;
  background: #8d8d8d;
}

.tabset > label:hover,
.tabset > input:focus + label {
  color: #06c;
}

.tabset > label:hover::after,
.tabset > input:focus + label::after,
.tabset > input:checked + label::after {
  background: #06c;
}

.tabset > input:checked + label {
  border-color: #ccc;
  border-bottom: 1px solid #fff;
  margin-bottom: -1px;
}

.tab-panel {
  padding: 30px 0;
  border-top: 1px solid #ccc;
}

/*
 Demo purposes only
*/
*,
*:before,
*:after {
  box-sizing: border-box;
}

body {
  padding: 30px;
}

.tabset {
  max-width: 65em;
}
<div class="tabset">
  <!-- Tab 1 -->
  <input type="radio" name="tabset" id="tab1" aria-controls="marzen" checked>
  <label for="tab1">Märzen</label>
  <!-- Tab 2 -->
  <input type="radio" name="tabset" id="tab2" aria-controls="rauchbier">
  <label for="tab2">Rauchbier</label>
  
  <div class="tab-panels">
    <section id="marzen" class="tab-panel">
      <h2>Login page</h2>
      
  </section>
    
    <section id="dunkles" class="tab-panel">
      <h2>Sign up</h2>
      
    </section>
  </div>
  
</div>
1 голос
/ 14 июля 2020

Во-первых, вам нужен текст для входа и подписки, чтобы сделать его кнопками, а после этого вам нужно сделать два блока div, первый будет содержать ваш раздел входа и второй раздел регистрации и добавить при регистрации div display: none;, а вы можно использовать javascript с добавлением прослушивателя событий к кнопке регистрации, в основном, когда вы нажимаете кнопку регистрации, ваше окно входа исчезает и появляется окно регистрации. Что-то вроде этого.

let signInButton = document.querySelector(".firstButton");
let signUpButton = document.querySelector(".secondButton");

let signIn = document.querySelector(".firstBox"); // firstBox is the class of sign in div you can add which name you want
let signUp = document.querySelector(".secondBox");

signUpButton.addEventListener("click", () => {
  signIn.style.display = "none";
  signUp.style.display = "block";
  
})

signInButton.addEventListener("click", () => {
  signUp.style.display = "block";
  signIn.style.display = "block";
})

Также вы можете добавить анимацию, чтобы сделать его более плавным.

  • Чтобы вам было более понятно, классы из querySelector не существуют, вам нужно создать свои собственные div с некоторыми классами и изменить их в коде JS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...