javascript - CSS Submit Button with Loading Animation 有悬停效果划分

标签 javascript jquery html css

我有一个带有加载动画的按钮,当我悬停它时,我想整体显示一个渐变效果。

我设法做到了,但是如果您将光标移到加载效果和文本上,您会注意到这两者之间的区别。

请看下面显示我的问题的片段:

document.getElementById("search").onclick = function() {
  var hiddeninputs = document.getElementById("loading");
  hiddeninputs.style.display = "inline-flex";
  $("#loading").delay(1500).fadeOut();
}
.hidden {
  display: none;
}

#loading {
  width: 10px;
  height: 10px;
  border: 5px solid #ccc;
  border-top-color: #004E98;
  border-radius: 100%;
  animation: round 2s linear infinite;
}

@keyframes round {
  from {
    transform: rotate(0deg)
  }
  to {
    transform: rotate(360deg)
  }
}

.btn-search {
  width: 20%;
  display: inline-block;
  text-align: center;
  margin: 10px;
  height: 12%;
  margin-top: 25px;
  box-sizing: border-box;
  border: 2px solid #00386d;
  border-radius: 5px;
  ext-align: center;
  background-color: #004E98;
  color: #fff;
  text-decoration: none;
  font-size: 17px;
  box-shadow: 0px 5px 20px rgba(25, 25, 25, .3);
}

#button-search:hover {
  cursor: pointer;
  background: #004E98;
  background-image: -webkit-linear-gradient(top, #004E98, #3498db);
  background-image: -moz-linear-gradient(top, #004E98, #3498db);
  background-image: -ms-linear-gradient(top, #004E98, #3498db);
  background-image: -o-linear-gradient(top, #004E98, #3498db);
  background-image: linear-gradient(to bottom, #004E98, #3498db);
}

#button-search:active {
  background-color: #003465;
  transform: translateY(1px);
}

#search {
  display: inline-block;
  text-align: center;
  padding: 10px;
  padding-left: 25px;
  padding-right: 25px;
  background-repeat: no-repeat;
  background-position: center;
  border: hidden;
  background-color: #004E98;
  color: #fff;
}

#search:hover {
  cursor: pointer;
  background: #004E98;
  background-image: -webkit-linear-gradient(top, #004E98, #3498db);
  background-image: -moz-linear-gradient(top, #004E98, #3498db);
  background-image: -ms-linear-gradient(top, #004E98, #3498db);
  background-image: -o-linear-gradient(top, #004E98, #3498db);
  background-image: linear-gradient(to bottom, #004E98, #3498db);
}

#search:active {
  background-color: #003465;
  transform: translateY(1px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="btn-search" id="button-search">
  <input type="submit" id="search" value="Buscar" onclick="showHide()">
  <div id="loading" class="hidden"></div>
</div>

最佳答案

您在输入元素 #search 上有另一个背景,它在 div .btn-search 的背景之上创建了另一个背景。我让它们变得透明,并删除了 :active:focus 上输入周围出现的轮廓。

	document.getElementById("search").onclick = function() {
		var hiddeninputs = document.getElementById("loading");
		hiddeninputs.style.display="inline-flex";
		$("#loading").delay(1500).fadeOut();
	}
	.hidden{
		display: none;
	}
	#loading{
		width: 10px;
		height: 10px;
		border: 5px solid #ccc;
		border-top-color: #004E98;
		border-radius: 100%;
		animation: round 2s linear infinite;
	}
	@keyframes round{
		from{transform: rotate(0deg)}
		to{transform:rotate(360deg)}
	}
	.btn-search{
	width:20%;
	display:inline-block;
	text-align: center;
	margin:10px;
	 height: 12%;
	margin-top:25px;
	box-sizing: border-box;
	border: 2px solid #00386d;
	border-radius: 5px;
	ext-align: center;
	background-color: #004E98;
	color: #fff;
	text-decoration: none;
	font-size: 17px;
	box-shadow: 0px 5px 20px rgba(25,25,25,.3);
}
#button-search:hover{
  cursor: pointer;
    background: #004E98;
  background-image: -webkit-linear-gradient(top, #004E98, #3498db);
  background-image: -moz-linear-gradient(top, #004E98, #3498db);
  background-image: -ms-linear-gradient(top, #004E98, #3498db);
  background-image: -o-linear-gradient(top, #004E98, #3498db);
  background-image: linear-gradient(to bottom, #004E98, #3498db);
}
#button-search:active{
background-color: #003465;
  transform: translateY(1px);
}
#search{
 display: inline-block;
 text-align: center;
  padding:10px;
  padding-left:25px;
  padding-right:25px;
  background-repeat: no-repeat;
  background-position: center;
  border: hidden;
  background-color: transparent;
  color: #fff;
}

#search:hover{
  cursor: pointer;
    background: transparent;
}

#search:active{
  background-color: transparent;
  transform: translateY(1px);
}

#search:focus {
  outline: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="btn-search" id="button-search">
  <input type="submit" id="search" value="Buscar" onclick="showHide()">
  <div id="loading" class="hidden"></div>
</div>

关于javascript - CSS Submit Button with Loading Animation 有悬停效果划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025293/

相关文章:

javascript - 在 Phaser 3 中生成的形状上使用 .setCollideWorldBounds()

javascript - 将两个 json/javascript 数组合并为一个数组

javascript - 我网站上的滚动到顶部按钮不起作用

javascript - 当我回显 id 但当我回显名称时,带有 laravel 的 ajax 返回未定义

javascript - 顺时针循环一组数字

javascript - findOneAndUpdate Mongoose 函数中的字符串文字问题

javascript - 如何读取两个对象的Json?

javascript - 从 onclick 调用时 $.ajax 不工作

php - 拒绝在我的网站上显示youtube视频

html - Bootstrap 模型在关闭时搞乱了格式