Как открыть форму в восходящем направлении при наведении или на клик? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытался создать кнопку (справа внизу), которая будет открывать форму после нажатия или наведения мыши на нее.Форма будет медленно (медленно) открываться и закрываться после нажатия на кнопку «Войти», мой код заставляет кнопку нажимать при открытии формы.

Также кнопка должна быть справа, я пробовал float:right; и right:0;, чтобы исправить кнопку вправо, но она не работает.

Вот мой код:

function showForm(){
  document.getElementById('loginForm').style.display = "block";
}

function hideForm(){
  document.getElementById('loginForm').style.display = "none";
}
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box
}
  	.no-show{display:none;}
  	.form-container {
  position:absolute;
  bottom:0;
  right:0;
  float: right;
  width:100%;
}
body { font-family: tahoma; }
#loginForm  {
	display: none;
	background: #ccc;
	width: 250px;
	height: 100px;
	padding: 20px;
	color: #333;
}
.label {
   cursor: pointer;
   display:block;
   padding: 5px 15px;
   font-size: 16px;
   font-weight: bold;    
}
.form-label {
	width: 70px;
	font-size: 12px;
	font-weight: bold;
}
.form-field {
	width: 180px;
}

.form-elements {
	font-size: 0px;
	margin: 10px 0 0 0;
	display: block;
}

.form-label, .form-field {
	display: inline-block;
}

.form-field input {
	padding: 3px 5px;
}

.submit-btn input {
	margin-left: 70px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-container">
<form>
  <p id="login" onmouseover="showForm();" onmouseout="hideForm();">
	<span class="label">Login</span>  
	<span id="loginForm">        
	  <span class="form-elements">
    <span class="form-label">Name:</span>
    <span class="form-field"><input type="name" /></span>
  </span>        
	  <span class="form-elements">
    <span class="form-label">Password:</span>
    <span class="form-field"><input type="password" /></span>
  </span>
	</span>      
  </p>
</form>
</div>

Вот рабочая скрипка - https://jsfiddle.net/d5L8bywk/1/

Форма должна медленно открываться (вверх) и закрываться после щелчкана кнопку входа в систему.

Это должно выглядеть так: Like this

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Проверьте этот код.Нет необходимости в jQuery, вы можете добиться этого с помощью чистого CSS-перехода в сочетании со свойством height.

function showForm() {
  document.getElementById('loginForm').classList.add('show');
}

function hideForm() {
  document.getElementById('loginForm').classList.remove('show');
}
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box
}

body {
  font-family: tahoma;
  height: 100vh;
}

.no-show{
  display:none;
}

.form-container {
  position: absolute;
  bottom: 40px;
  right: 80px;
  left: auto;
  top: auto;
  width: 230px;
}

#loginForm  {
  background: #ccc;
  width: 250px;
  color: #333;
  height: 0;
  overflow: hidden;
  transition: all 0.5s;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

#loginForm.show {
  height: 150px;
}

.label {
  cursor: pointer;
  display:block;
  padding: 5px 15px;
  font-size: 16px;
  font-weight: bold;
}
.form-label {
  width: 70px;
  font-size: 12px;
  font-weight: bold;
}
.form-field {
  width: 180px;
}

.form-elements {
  font-size: 0px;
  margin-bottom: 10px;
  display: flex;
  flex-direction: column;
}

.form-label, .form-field {
  display: inline-block;
  width: 100%;
}

.form-field input {
  padding: 3px 5px;
}

.submit-btn input {
  margin-left: 70px;
}

#login {
  text-align: center;
  cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <div class="form-container">
<form>
    <div id="loginForm" onmouseleave="hideForm();">
      <span class="form-elements">
        <span class="form-label">Name:</span>
        <span class="form-field"><input type="name" /></span>
      </span>
      <span class="form-elements">
        <span class="form-label">Password:</span>
        <span class="form-field"><input type="password" /></span>
      </span>
    </div>
</form>

<span id="login" class="label" onmouseover="showForm();">Login</span>
  </div>
0 голосов
/ 12 апреля 2019
#login{
float:right 
}

<div class="form-container">
  <form>
<p id="login" onmouseover="showForm();" onmouseout="hideForm()">

  <span id="loginForm">        
      <span class="form-elements">
        <span class="form-label">Name:</span>
        <span class="form-field"><input type="name"></span>
      </span>
      <span class="form-elements">
        <span class="form-label">Password:</span>
        <span class="form-field"><input type="password"></span>
      </span>
  </span>
   <span class="label">Login</span></p>
 </form>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...