Сделал кнопку с эффектом ripple, если ее не помещать в класс form, анимация работает как надо, но если кнопка находится в form - анимация происходит, но с каким-то, глюком тормазом, что-то с чем-то конфликтует, не могу понять что?
Если
<button type="submit" class="btn btn-default">Submit</button>
вне form - все ok
.btn {
display: inline-block;
margin-bottom: 0;
font-weight: normal;
text-align: center;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
background-image: none;
border: 1px solid transparent;
white-space: nowrap;
padding: 6px 16px;
font-size: 13px;
line-height: 1.846;
border-radius: 3px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #444444;
text-decoration: none;
}
.btn:active,
.btn.active {
outline: 0;
background-image: none;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-default {
color: #444444;
background-color: #ffffff;
border-color: transparent;
}
.btn-default:focus,
.btn-default.focus {
color: #444444;
background-color: #e6e6e6;
border-color: rgba(0, 0, 0, 0);
outline: 0
}
.btn-default:hover {
color: #444444;
background-color: #e6e6e6;
border-color: rgba(0, 0, 0, 0);
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #444444;
background-color: #e6e6e6;
border-color: rgba(0, 0, 0, 0);
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
color: #444444;
background-color: #d4d4d4;
border-color: rgba(0, 0, 0, 0);
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default .badge {
color: #ffffff;
background-color: #444444;
}
.btn-default {
position: relative;
overflow: hidden;
z-index: 0;
}
.btn-default:after {
content: "";
position:absolute;
width: 200%;
height: 200%;
top: -50%;
left: -50%;
z-index: -1;
opacity: 0;
background-color: #000;
background-image: -webkit-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%);
background-image: -o-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%);
background-image: radial-gradient(circle, #e0e0e0 10%, #ffffff 11%);
background-repeat: no-repeat;
}
.btn-default:focus {
background-color: #ffffff;
}
.btn-default:hover,
.btn-default:active:hover {
background-color: #f0f0f0;
outline: 0;
}
.btn-default:active {
-webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
}
.btn-default:active:after {
-webkit-animation: ripple 0.4s linear forwards;
-moz-animation: ripple 0.4s linear forwards;
-o-animation: ripple 0.4s linear forwards;
animation: ripple 0.4s forwards;
}
@-webkit-keyframes ripple {
0% { -webkit-transform: scale(1); opacity: 0; }
50% { opacity: 1; }
100%{ -webkit-transform: scale(4.8); opacity: 0; }
}
@-moz-keyframes ripple {
0% { -moz-transform: scale(1); opacity: 0; }
50% { opacity: 1; }
100% { -moz-transform: scale(4.8); opacity: 0; }
}
@-o-keyframes ripple {
0% { -o-transform: scale(1); opacity: 0; }
50% { opacity: 1; }
100% { -o-transform: scale(4.8); opacity: 0; }
}
@keyframes ripple {
0% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); opacity: 1; }
50% { opacity: 1; }
100% { -webkit-transform: scale(4.8); -moz-transform: scale(4.8); -ms-transform: scale(4.8); transform: scale(5); opacity: 1; };
}
.btn {
text-transform: uppercase;
border: none;
-webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
-webkit-transition: all 0.4s;
-o-transition: all 0.4s;
transition: all 0.4s;
}
<!DOCTYPE html>
<html lang="ru-UA">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Заголовок</title>
<!-- Bootstrap -->
<link href="css/bootstrap.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<nav>
<button type="submit" class="btn btn-default">Submit</button>
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Поиск">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Link</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>