Custom Select vanilla JS - javascript
const selectMenu = document.querySelector('#custom-select'),
selectionInput = document.querySelector('#input-field'),
dropdown = document.querySelectorAll('.dropdown'),
dropdownArray = Array.prototype.slice.call(dropdown,0),
button = document.querySelector('a[data-toggle="dropdown"]'),
menu = document.querySelector('.dropdown-menu'),
arrow = button.querySelector('i.icon-arrow');
// Event callback function:
function clickHandler(evt) {
evt.preventDefault();
menu.classList.toggle('show');
menu.classList.toggle('hide');
arrow.classList.toggle('open');
arrow.classList.toggle('close');
let targ = evt.target;
if (menu.contains(targ)) {
selectionInput.value = targ.dataset.optvalue;
}
}
// 'Click' event registration:
selectMenu.addEventListener('click', clickHandler, false);
// Purely your code below:
Element.prototype.hasClass = function(className) {
return this.className && new RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className);
};
.text-center {
text-align: center;
}
*,
*:before,
*:after {
-webkit-border-sizing: border-box;
-moz-border-sizing: border-box;
border-sizing: border-box;
}
.container {
width: 350px;
margin: 50px auto;
}
.container > ul {
list-style: none;
padding: 0;
margin: 0 0 20px 0;
}
.title {
font: normal 40px/1.4 'Pacifico', sans-serif;
text-align: center;
color: #2980B9;
}
.dropdown a { text-decoration: none; }
.dropdown [data-toggle="dropdown"] {
position: relative;
display: block;
color: white;
background: #2980B9;
-webkit-box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
-moz-box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
padding: 10px;
}
.dropdown [data-toggle="dropdown"]:hover { background: #2c89c6; }
.dropdown .icon-arrow {
position: absolute;
display: block;
font-size: 0.7em;
color: #fff;
top: 14px;
right: 10px;
}
.dropdown .icon-arrow.open {
-webkit-transform: rotate(-180deg);
-moz-transform: rotate(-180deg);
-ms-transform: rotate(-180deg);
transform: rotate(-180deg);
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: -o-transform 0.6s;
transition: transform 0.6s;
}
.dropdown .icon-arrow.close {
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0);
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: -o-transform 0.6s;
transition: transform 0.6s;
}
.dropdown .icon-arrow:before { content: '\25BC'; }
.dropdown .dropdown-menu {
max-height: 0;
overflow: hidden;
list-style: none;
padding: 0;
margin: 0;
}
.dropdown .dropdown-menu li { padding: 0; }
.dropdown .dropdown-menu li a {
display: block;
color: #6f6f6f;
background: #EEE;
-webkit-box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
-moz-box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3);
padding: 10px 10px;
}
.dropdown .dropdown-menu li a:hover {
background: #f6f6f6;
}
.dropdown .show,
.dropdown .hide {
-webkit-transform-origin: 50% 0;
-moz-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
}
.dropdown .show {
display: block;
max-height: 9999px;
-webkit-transform: scaleY(1);
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
transform: scaleY(1);
-webkit-animation: showAnimation 0.5s ease-in-out;
-moz-animation: showAnimation 0.5s ease-in-out;
animation: showAnimation 0.5s ease-in-out;
-webkit-transition: max-height 1s ease-in-out;
-moz-transition: max-height 1s ease-in-out;
-o-transition: max-height 1s ease-in-out;
transition: max-height 1s ease-in-out;
}
.dropdown .hide {
max-height: 0;
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
animation: hideAnimation 0.4s ease-out;
-moz-animation: hideAnimation 0.4s ease-out;
-webkit-animation: hideAnimation 0.4s ease-out;
-moz-transition: max-height 0.6s ease-out;
-o-transition: max-height 0.6s ease-out;
-webkit-transition: max-height 0.6s ease-out;
transition: max-height 0.6s ease-out;
}
#keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#-moz-keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#-webkit-keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
#-moz-keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
#-webkit-keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
<div class="container">
<label for='input-field'>Selection: </label>
<input type='text' id='input-field' value='' />
<br /><br />
<ul id='custom-select'>
<li class="dropdown">
<a href="#" data-toggle="dropdown">Select Item
<i class="icon-arrow close"></i>
</a>
<ul class="dropdown-menu hide">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
</ul>
</li>
</ul>
</div>
Is there any way to replace "Select Item" text with ".dropdown-menu a" text after selecting a option. Like if I select option 4, then "Select Item" will be replaced with "Option 4" text.
Actually one of Stackoverflow member suggested me to use this with input so we can store the value. But he forget about DD to change the text. So here is the problem again.
const selectMenu = document.querySelector('#custom-select'),
selectionInput = document.querySelector('#input-field'),
dropdown = document.querySelectorAll('.dropdown'),
dropdownArray = Array.prototype.slice.call(dropdown,0),
button = document.querySelector('a[data-toggle="dropdown"]'),
menu = document.querySelector('.dropdown-menu'),
arrow = button.querySelector('i.icon-arrow');
// Event callback function:
function clickHandler(evt) {
evt.preventDefault();
menu.classList.toggle('show');
menu.classList.toggle('hide');
arrow.classList.toggle('open');
arrow.classList.toggle('close');
let targ = evt.target;
if (menu.contains(targ)) {
selectionInput.value = targ.dataset.optvalue;
dropdown[0].children[0].textContent = targ.textContent
}
}
// 'Click' event registration:
selectMenu.addEventListener('click', clickHandler, false);
// Purely your code below:
Element.prototype.hasClass = function(className) {
return this.className && new RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className);
};
.text-center {
text-align: center;
}
*,
*:before,
*:after {
-webkit-border-sizing: border-box;
-moz-border-sizing: border-box;
border-sizing: border-box;
}
.container {
width: 350px;
margin: 50px auto;
}
.container > ul {
list-style: none;
padding: 0;
margin: 0 0 20px 0;
}
.title {
font: normal 40px/1.4 'Pacifico', sans-serif;
text-align: center;
color: #2980B9;
}
.dropdown a { text-decoration: none; }
.dropdown [data-toggle="dropdown"] {
position: relative;
display: block;
color: white;
background: #2980B9;
-webkit-box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
-moz-box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
box-shadow: 0 1px 0 #409ad5 inset,
0 -1px 0 #20638f inset;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
padding: 10px;
}
.dropdown [data-toggle="dropdown"]:hover { background: #2c89c6; }
.dropdown .icon-arrow {
position: absolute;
display: block;
font-size: 0.7em;
color: #fff;
top: 14px;
right: 10px;
}
.dropdown .icon-arrow.open {
-webkit-transform: rotate(-180deg);
-moz-transform: rotate(-180deg);
-ms-transform: rotate(-180deg);
transform: rotate(-180deg);
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: -o-transform 0.6s;
transition: transform 0.6s;
}
.dropdown .icon-arrow.close {
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0);
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: -o-transform 0.6s;
transition: transform 0.6s;
}
.dropdown .icon-arrow:before { content: '\25BC'; }
.dropdown .dropdown-menu {
max-height: 0;
overflow: hidden;
list-style: none;
padding: 0;
margin: 0;
}
.dropdown .dropdown-menu li { padding: 0; }
.dropdown .dropdown-menu li a {
display: block;
color: #6f6f6f;
background: #EEE;
-webkit-box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
-moz-box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
box-shadow: 0 1px 0 white inset,
0 -1px 0 #d5d5d5 inset;
text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3);
padding: 10px 10px;
}
.dropdown .dropdown-menu li a:hover {
background: #f6f6f6;
}
.dropdown .show,
.dropdown .hide {
-webkit-transform-origin: 50% 0;
-moz-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
}
.dropdown .show {
display: block;
max-height: 9999px;
-webkit-transform: scaleY(1);
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
transform: scaleY(1);
-webkit-animation: showAnimation 0.5s ease-in-out;
-moz-animation: showAnimation 0.5s ease-in-out;
animation: showAnimation 0.5s ease-in-out;
-webkit-transition: max-height 1s ease-in-out;
-moz-transition: max-height 1s ease-in-out;
-o-transition: max-height 1s ease-in-out;
transition: max-height 1s ease-in-out;
}
.dropdown .hide {
max-height: 0;
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
animation: hideAnimation 0.4s ease-out;
-moz-animation: hideAnimation 0.4s ease-out;
-webkit-animation: hideAnimation 0.4s ease-out;
-moz-transition: max-height 0.6s ease-out;
-o-transition: max-height 0.6s ease-out;
-webkit-transition: max-height 0.6s ease-out;
transition: max-height 0.6s ease-out;
}
#keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#-moz-keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#-webkit-keyframes showAnimation {
0% {
-moz-transform: scaleY(0.1);
-ms-transform: scaleY(0.1);
-webkit-transform: scaleY(0.1);
transform: scaleY(0.1);
}
40% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.04);
-ms-transform: scaleY(1.04);
-webkit-transform: scaleY(1.04);
transform: scaleY(1.04);
}
100% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
}
#keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
#-moz-keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
#-webkit-keyframes hideAnimation {
0% {
-moz-transform: scaleY(1);
-ms-transform: scaleY(1);
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
60% {
-moz-transform: scaleY(0.98);
-ms-transform: scaleY(0.98);
-webkit-transform: scaleY(0.98);
transform: scaleY(0.98);
}
80% {
-moz-transform: scaleY(1.02);
-ms-transform: scaleY(1.02);
-webkit-transform: scaleY(1.02);
transform: scaleY(1.02);
}
100% {
-moz-transform: scaleY(0);
-ms-transform: scaleY(0);
-webkit-transform: scaleY(0);
transform: scaleY(0);
}
}
<div class="container">
<label for='input-field'>Selection: </label>
<input type='text' id='input-field' value='' />
<br /><br />
<ul id='custom-select'>
<li class="dropdown">
<a href="#" data-toggle="dropdown">Select Item
<i class="icon-arrow close"></i>
</a>
<ul class="dropdown-menu hide">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
</ul>
</li>
</ul>
</div>
Related
Preloader for part of content
i have css preloader in wordpress site, and I need the preloader to hide only part of the content. Now preloader hides the entire page. Example: - Site title - Site menu - Content (need to hide) - Footer In header.php: https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js $(window).load(function() { $(".cssload-loader").delay(1300).fadeOut(); $(".preloader").delay(1400).fadeOut("slow"); }) .preloader { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: #fff; z-index: 100501; height: 100%; width: 100%; } .cssload-loader { position: absolute; left: 50%; top: 50%; width: 34.284271247462px; height: 34.284271247462px; margin-left: -17.142135623731px; margin-top: -17.142135623731px; border-radius: 100%; animation-name: cssload-loader; -o-animation-name: cssload-loader; -ms-animation-name: cssload-loader; -webkit-animation-name: cssload-loader; -moz-animation-name: cssload-loader; animation-iteration-count: infinite; -o-animation-iteration-count: infinite; -ms-animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-timing-function: linear; -o-animation-timing-function: linear; -ms-animation-timing-function: linear; -webkit-animation-timing-function: linear; -moz-animation-timing-function: linear; animation-duration: 2.8s; -o-animation-duration: 2.8s; -ms-animation-duration: 2.8s; -webkit-animation-duration: 2.8s; -moz-animation-duration: 2.8s; } .cssload-loader .cssload-side { display: block; width: 4px; height: 14px; background-color: rgba(0,0,0,0.81); margin: 1px; position: absolute; border-radius: 50%; animation-duration: 1.045s; -o-animation-duration: 1.045s; -ms-animation-duration: 1.045s; -webkit-animation-duration: 1.045s; -moz-animation-duration: 1.045s; animation-iteration-count: infinite; -o-animation-iteration-count: infinite; -ms-animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-timing-function: ease; -o-animation-timing-function: ease; -ms-animation-timing-function: ease; -webkit-animation-timing-function: ease; -moz-animation-timing-function: ease; } .cssload-loader .cssload-side:nth-child(1), .cssload-loader .cssload-side:nth-child(5) { transform: rotate(0deg); -o-transform: rotate(0deg); -ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); animation-name: cssload-rotate0; -o-animation-name: cssload-rotate0; -ms-animation-name: cssload-rotate0; -webkit-animation-name: cssload-rotate0; -moz-animation-name: cssload-rotate0; } .cssload-loader .cssload-side:nth-child(3), .cssload-loader .cssload-side:nth-child(7) { transform: rotate(90deg); -o-transform: rotate(90deg); -ms-transform: rotate(90deg); -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); animation-name: cssload-rotate90; -o-animation-name: cssload-rotate90; -ms-animation-name: cssload-rotate90; -webkit-animation-name: cssload-rotate90; -moz-animation-name: cssload-rotate90; } .cssload-loader .cssload-side:nth-child(2), .cssload-loader .cssload-side:nth-child(6) { transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); animation-name: cssload-rotate45; -o-animation-name: cssload-rotate45; -ms-animation-name: cssload-rotate45; -webkit-animation-name: cssload-rotate45; -moz-animation-name: cssload-rotate45; } .cssload-loader .cssload-side:nth-child(4), .cssload-loader .cssload-side:nth-child(8) { transform: rotate(135deg); -o-transform: rotate(135deg); -ms-transform: rotate(135deg); -webkit-transform: rotate(135deg); -moz-transform: rotate(135deg); animation-name: cssload-rotate135; -o-animation-name: cssload-rotate135; -ms-animation-name: cssload-rotate135; -webkit-animation-name: cssload-rotate135; -moz-animation-name: cssload-rotate135; } .cssload-loader .cssload-side:nth-child(1) { top: 17.142135623731px; left: 34.284271247462px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(2) { top: 29.213203431093px; left: 29.213203431093px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(3) { top: 34.284271247462px; left: 17.142135623731px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(4) { top: 29.213203431093px; left: 5.0710678163691px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(5) { top: 17.142135623731px; left: 0px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(6) { top: 5.0710678163691px; left: 5.0710678163691px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(7) { top: 0px; left: 17.142135623731px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(8) { top: 5.0710678163691px; left: 29.213203431093px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } #keyframes cssload-rotate0 { 0% { transform: rotate(0deg); } 60% { transform: rotate(180deg); } 100% { transform: rotate(180deg); } } #-o-keyframes cssload-rotate0 { 0% { -o-transform: rotate(0deg); } 60% { -o-transform: rotate(180deg); } 100% { -o-transform: rotate(180deg); } } #-ms-keyframes cssload-rotate0 { 0% { -ms-transform: rotate(0deg); } 60% { -ms-transform: rotate(180deg); } 100% { -ms-transform: rotate(180deg); } } #-webkit-keyframes cssload-rotate0 { 0% { -webkit-transform: rotate(0deg); } 60% { -webkit-transform: rotate(180deg); } 100% { -webkit-transform: rotate(180deg); } } #-moz-keyframes cssload-rotate0 { 0% { -moz-transform: rotate(0deg); } 60% { -moz-transform: rotate(180deg); } 100% { -moz-transform: rotate(180deg); } } #keyframes cssload-rotate90 { 0% { transform: rotate(90deg); transform: rotate(90deg); } 60% { transform: rotate(270deg); transform: rotate(270deg); } 100% { transform: rotate(270deg); transform: rotate(270deg); } } #-o-keyframes cssload-rotate90 { 0% { -o-transform: rotate(90deg); transform: rotate(90deg); } 60% { -o-transform: rotate(270deg); transform: rotate(270deg); } 100% { -o-transform: rotate(270deg); transform: rotate(270deg); } } #-ms-keyframes cssload-rotate90 { 0% { -ms-transform: rotate(90deg); transform: rotate(90deg); } 60% { -ms-transform: rotate(270deg); transform: rotate(270deg); } 100% { -ms-transform: rotate(270deg); transform: rotate(270deg); } } #-webkit-keyframes cssload-rotate90 { 0% { -webkit-transform: rotate(90deg); transform: rotate(90deg); } 60% { -webkit-transform: rotate(270deg); transform: rotate(270deg); } 100% { -webkit-transform: rotate(270deg); transform: rotate(270deg); } } #-moz-keyframes cssload-rotate90 { 0% { -moz-transform: rotate(90deg); transform: rotate(90deg); } 60% { -moz-transform: rotate(270deg); transform: rotate(270deg); } 100% { -moz-transform: rotate(270deg); transform: rotate(270deg); } } #keyframes cssload-rotate45 { 0% { transform: rotate(45deg); transform: rotate(45deg); } 60% { transform: rotate(225deg); transform: rotate(225deg); } 100% { transform: rotate(225deg); transform: rotate(225deg); } } #-o-keyframes cssload-rotate45 { 0% { -o-transform: rotate(45deg); transform: rotate(45deg); } 60% { -o-transform: rotate(225deg); transform: rotate(225deg); } 100% { -o-transform: rotate(225deg); transform: rotate(225deg); } } #-ms-keyframes cssload-rotate45 { 0% { -ms-transform: rotate(45deg); transform: rotate(45deg); } 60% { -ms-transform: rotate(225deg); transform: rotate(225deg); } 100% { -ms-transform: rotate(225deg); transform: rotate(225deg); } } #-webkit-keyframes cssload-rotate45 { 0% { -webkit-transform: rotate(45deg); transform: rotate(45deg); } 60% { -webkit-transform: rotate(225deg); transform: rotate(225deg); } 100% { -webkit-transform: rotate(225deg); transform: rotate(225deg); } } #-moz-keyframes cssload-rotate45 { 0% { -moz-transform: rotate(45deg); transform: rotate(45deg); } 60% { -moz-transform: rotate(225deg); transform: rotate(225deg); } 100% { -moz-transform: rotate(225deg); transform: rotate(225deg); } } #keyframes cssload-rotate135 { 0% { transform: rotate(135deg); transform: rotate(135deg); } 60% { transform: rotate(315deg); transform: rotate(315deg); } 100% { transform: rotate(315deg); transform: rotate(315deg); } } #-o-keyframes cssload-rotate135 { 0% { -o-transform: rotate(135deg); transform: rotate(135deg); } 60% { -o-transform: rotate(315deg); transform: rotate(315deg); } 100% { -o-transform: rotate(315deg); transform: rotate(315deg); } } #-ms-keyframes cssload-rotate135 { 0% { -ms-transform: rotate(135deg); transform: rotate(135deg); } 60% { -ms-transform: rotate(315deg); transform: rotate(315deg); } 100% { -ms-transform: rotate(315deg); transform: rotate(315deg); } } #-webkit-keyframes cssload-rotate135 { 0% { -webkit-transform: rotate(135deg); transform: rotate(135deg); } 60% { -webkit-transform: rotate(315deg); transform: rotate(315deg); } 100% { -webkit-transform: rotate(315deg); transform: rotate(315deg); } } #-moz-keyframes cssload-rotate135 { 0% { -moz-transform: rotate(135deg); transform: rotate(135deg); } 60% { -moz-transform: rotate(315deg); transform: rotate(315deg); } 100% { -moz-transform: rotate(315deg); transform: rotate(315deg); } } #keyframes cssload-loader { 0% { transform: rotate(0deg); transform: rotate(0deg); } 100% { transform: rotate(360deg); transform: rotate(360deg); } } #-o-keyframes cssload-loader { 0% { -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -o-transform: rotate(360deg); transform: rotate(360deg); } } #-ms-keyframes cssload-loader { 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); } 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); } } #-webkit-keyframes cssload-loader { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } #-moz-keyframes cssload-loader { 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); } 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); } } <div class="preloader"> <div class="cssload-loader"> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> </div> </div> Here is my site so you can see the page code I think i need script to show Site title and menu, or i need change css styles to hide content?
Change the CSS like below. .preloader { position: fixed; background-color: #fff; z-index: 107; height: 100%; width: 100%; } And put preloader element inside content div like this. <div class="col-md-8 col-md-offset-2"> <div class="preloader" style="display: block;"> <div class="cssload-loader" style="display: none;"> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> </div> </div> <article>.... Article content .....</article> </div>
Vanilla Javascript custom select box for multiple field
var dropdown = document.querySelectorAll('.dropdown'); var dropdownArray = Array.prototype.slice.call(dropdown,0); dropdownArray.forEach(function(el){ var button = el.querySelector('a[data-toggle="dropdown"]'), menu = el.querySelector('.dropdown-menu'), arrow = button.querySelector('i.icon-arrow'); button.onclick = function(event) { if(!menu.hasClass('show')) { menu.classList.add('show'); menu.classList.remove('hide'); arrow.classList.add('open'); arrow.classList.remove('close'); event.preventDefault(); } else { menu.classList.remove('show'); menu.classList.add('hide'); arrow.classList.remove('open'); arrow.classList.add('close'); event.preventDefault(); } }; }) Element.prototype.hasClass = function(className) { return this.className && new RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className); }; .text-center { text-align: center; } *, *:before, *:after { -webkit-border-sizing: border-box; -moz-border-sizing: border-box; border-sizing: border-box; } .container { width: 350px; margin: 50px auto; float:left; margin-right:30px; } .container > ul { list-style: none; padding: 0; margin: 0 0 20px 0; } .title { font: normal 40px/1.4 'Pacifico', sans-serif; text-align: center; color: #2980B9; } .dropdown a { text-decoration: none; } .dropdown [data-toggle="dropdown"] { position: relative; display: block; color: white; background: #2980B9; -webkit-box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; -moz-box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); padding: 10px; } .dropdown [data-toggle="dropdown"]:hover { background: #2c89c6; } .dropdown .icon-arrow { position: absolute; display: block; font-size: 0.7em; color: #fff; top: 14px; right: 10px; } .dropdown .icon-arrow.open { -webkit-transform: rotate(-180deg); -moz-transform: rotate(-180deg); -ms-transform: rotate(-180deg); transform: rotate(-180deg); -webkit-transition: -webkit-transform 0.6s; -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow.close { -webkit-transform: rotate(0); -moz-transform: rotate(0); -ms-transform: rotate(0); transform: rotate(0); -webkit-transition: -webkit-transform 0.6s; -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow:before { content: '\25BC'; } .dropdown .dropdown-menu { max-height: 0; overflow: hidden; list-style: none; padding: 0; margin: 0; } .dropdown .dropdown-menu li { padding: 0; } .dropdown .dropdown-menu li a { display: block; color: #6f6f6f; background: #EEE; -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3); padding: 10px 10px; } .dropdown .dropdown-menu li a:hover { background: #f6f6f6; } .dropdown .show, .dropdown .hide { -webkit-transform-origin: 50% 0; -moz-transform-origin: 50% 0; -ms-transform-origin: 50% 0; transform-origin: 50% 0; } .dropdown .show { display: block; max-height: 9999px; -webkit-transform: scaleY(1); -moz-transform: scaleY(1); -ms-transform: scaleY(1); transform: scaleY(1); -webkit-animation: showAnimation 0.5s ease-in-out; -moz-animation: showAnimation 0.5s ease-in-out; animation: showAnimation 0.5s ease-in-out; -webkit-transition: max-height 1s ease-in-out; -moz-transition: max-height 1s ease-in-out; -o-transition: max-height 1s ease-in-out; transition: max-height 1s ease-in-out; } .dropdown .hide { max-height: 0; -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); animation: hideAnimation 0.4s ease-out; -moz-animation: hideAnimation 0.4s ease-out; -webkit-animation: hideAnimation 0.4s ease-out; -moz-transition: max-height 0.6s ease-out; -o-transition: max-height 0.6s ease-out; -webkit-transition: max-height 0.6s ease-out; transition: max-height 0.6s ease-out; } #keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-moz-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-webkit-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-moz-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-webkit-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } <div class="container"> <input type='text' id='input-field1' value='' /> <ul> <li class="dropdown"> <a href="#" data-toggle="dropdown"> Select Item <i class="icon-arrow"></i> </a> <ul class="dropdown-menu"> <li>option One</li> <li>option Two</li> <li>option Three</li> <li>option Four</li> </ul> </li> </ul> </div> <div class="container"> <input type='text' id='input-field2' value='' /> <ul> <li class="dropdown"> <a href="#" data-toggle="dropdown"> Select Item <i class="icon-arrow"></i> </a> <ul class="dropdown-menu"> <li>option One</li> <li>option Two</li> <li>option Three</li> <li>option Four</li> </ul> </li> </ul> </div> I am trying to make a select box using li as select box but it doesn't work well in all browsers. I want to select an option and option value will be stored in a input box which we can make hidden using CSS. But the problem is how can I select an option from drop down list and store the value to the input box and also need to replace "Select Item" text with option text. And also need to work it on multiple field.
You just need to add event listeners to the anchor element clicks and, in the handler, you need to change the value of their relevant input element. To do this, I recommend adding another attribute like data-associated-input which can tell your event handler code exactly which input element a particular input option should modify. The following is an example of those ideas implemented: var dropdown = document.querySelectorAll('.dropdown'); var dropdownArray = Array.prototype.slice.call(dropdown,0); dropdownArray.forEach(function(el){ var button = el.querySelector('a[data-toggle="dropdown"]'), menu = el.querySelector('.dropdown-menu'), arrow = button.querySelector('i.icon-arrow'); button.onclick = function(event) { if(!menu.hasClass('show')) { menu.classList.add('show'); menu.classList.remove('hide'); arrow.classList.add('open'); arrow.classList.remove('close'); event.preventDefault(); } else { menu.classList.remove('show'); menu.classList.add('hide'); arrow.classList.remove('open'); arrow.classList.add('close'); event.preventDefault(); } }; }) Element.prototype.hasClass = function(className) { return this.className && new RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className); }; function setupListeners(){ /* get all dropdown options */ var ulMenus = document.getElementsByClassName("dropdown-menu"); for(var i=0;i<ulMenus.length;i++){ var opts = ulMenus[i].getElementsByTagName('a'); for(var x=0; x<opts.length;x++){ /* add listener */ opts[x].setAttribute("onclick", "updateHidden(this);return !1;"); opts[x].setAttribute("onClick", "updateHidden(this);return !1;"); /* Support old browser that don't recognize all lowercase html */ } } } function updateHidden(ele){ if(!ele) return false; var eleHidden = document.getElementById(ele.getAttribute("data-associated-input")); if(eleHidden){ eleHidden.value = ele.getAttribute("data-optvalue"); } } setupListeners(); .text-center { text-align: center; } *, *:before, *:after { -webkit-border-sizing: border-box; -moz-border-sizing: border-box; border-sizing: border-box; } .container { width: 350px; margin: 50px auto; float:left; margin-right:30px; } .container > ul { list-style: none; padding: 0; margin: 0 0 20px 0; } .title { font: normal 40px/1.4 'Pacifico', sans-serif; text-align: center; color: #2980B9; } .dropdown a { text-decoration: none; } .dropdown [data-toggle="dropdown"] { position: relative; display: block; color: white; background: #2980B9; -webkit-box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; -moz-box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; box-shadow: 0 1px 0 #409ad5 inset, 0 -1px 0 #20638f inset; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); padding: 10px; } .dropdown [data-toggle="dropdown"]:hover { background: #2c89c6; } .dropdown .icon-arrow { position: absolute; display: block; font-size: 0.7em; color: #fff; top: 14px; right: 10px; } .dropdown .icon-arrow.open { -webkit-transform: rotate(-180deg); -moz-transform: rotate(-180deg); -ms-transform: rotate(-180deg); transform: rotate(-180deg); -webkit-transition: -webkit-transform 0.6s; -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow.close { -webkit-transform: rotate(0); -moz-transform: rotate(0); -ms-transform: rotate(0); transform: rotate(0); -webkit-transition: -webkit-transform 0.6s; -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow:before { content: '\25BC'; } .dropdown .dropdown-menu { max-height: 0; overflow: hidden; list-style: none; padding: 0; margin: 0; } .dropdown .dropdown-menu li { padding: 0; } .dropdown .dropdown-menu li a { display: block; color: #6f6f6f; background: #EEE; -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset; text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3); padding: 10px 10px; } .dropdown .dropdown-menu li a:hover { background: #f6f6f6; } .dropdown .show, .dropdown .hide { -webkit-transform-origin: 50% 0; -moz-transform-origin: 50% 0; -ms-transform-origin: 50% 0; transform-origin: 50% 0; } .dropdown .show { display: block; max-height: 9999px; -webkit-transform: scaleY(1); -moz-transform: scaleY(1); -ms-transform: scaleY(1); transform: scaleY(1); -webkit-animation: showAnimation 0.5s ease-in-out; -moz-animation: showAnimation 0.5s ease-in-out; animation: showAnimation 0.5s ease-in-out; -webkit-transition: max-height 1s ease-in-out; -moz-transition: max-height 1s ease-in-out; -o-transition: max-height 1s ease-in-out; transition: max-height 1s ease-in-out; } .dropdown .hide { max-height: 0; -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); animation: hideAnimation 0.4s ease-out; -moz-animation: hideAnimation 0.4s ease-out; -webkit-animation: hideAnimation 0.4s ease-out; -moz-transition: max-height 0.6s ease-out; -o-transition: max-height 0.6s ease-out; -webkit-transition: max-height 0.6s ease-out; transition: max-height 0.6s ease-out; } #keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-moz-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-webkit-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-moz-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-webkit-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } <div class="container"> <input type='text' id='input-field2' value='' /> <ul> <li class="dropdown"> Select Item <i class="icon-arrow"></i> <ul class="dropdown-menu"> <li>option One</li> <li>option Two</li> <li>option Three</li> <li>option Four</li> </ul> </li> </ul> </div>
AJAX on load loading spinner
I'm wanting to place something like this on my website. Here is the codepen. #-webkit-keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } #-moz-keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } #keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } .loading-spinner { -webkit-animation-duration: 0.75s; -moz-animation-duration: 0.75s; animation-duration: 0.75s; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-iteration-count: infinite; -webkit-animation-name: rotate-forever; -moz-animation-name: rotate-forever; animation-name: rotate-forever; -webkit-animation-timing-function: linear; -moz-animation-timing-function: linear; animation-timing-function: linear; height: 30px; width: 30px; border: 8px solid #ffffff; border-right-color: transparent; border-radius: 50%; display: inline-block; } body { background: #774CFF; } .loading-spinner { position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin: -15px 0 -15px; } <body> <div class="loading-spinner"></div> </body> However, I'm wanting this to display until all my ajax has loaded on my site, I have 5-6 API GET calls, and one by rails. How would i go about this? So that it covers the whole page until its loaded.
Convert the .loading-spinner to be a mask (see the code) so it will hide the content. When ajax done just .hide() it. $.ajax({ url: 'your_ajax', success: function() { hideLoader() }, error: function() { hideLoader() } }); function hideLoader() { $('.loading-spinner').hide(); } #-webkit-keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } #-moz-keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } #keyframes rotate-forever { 0% { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); } } .loading-spinner { background: #774CFF; position:absolute; top:0; left:0; width:100%; height:100%; } .loading-spinner:before { -webkit-animation-duration: 0.75s; -moz-animation-duration: 0.75s; animation-duration: 0.75s; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-iteration-count: infinite; -webkit-animation-name: rotate-forever; -moz-animation-name: rotate-forever; animation-name: rotate-forever; -webkit-animation-timing-function: linear; -moz-animation-timing-function: linear; animation-timing-function: linear; height: 30px; width: 30px; border: 8px solid #ffffff; border-right-color: transparent; border-radius: 50%; display: inline-block; } /*body { background: #774CFF; }*/ .loading-spinner:before { content:""; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin: -15px 0 -15px; } <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body> <div class="loading-spinner"></div> Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum </body>
Can't get this JavaScript to work on my dropdown menu
still working on that Dropdown menu. It's working for the most part, but I need to apply the same effect (closed when it loads, open upon click) to apply to the nested <ul>'s. I've tried a whole bunch of stuff, currently I tried applying the same script to the nested <ul> as I applied to the initial <ul>, but it does nothing. It opens as uncollapsed and does not respond correctly when clicked on. Am I doing something wrong? Here's my code: var dropdown = document.querySelectorAll('.dropdown'); var dropdownArray = Array.prototype.slice.call(dropdown, 0); dropdownArray.forEach(function (el) { var button = el.querySelector('a[data-toggle="dropdown"]'), menu = el.querySelector('.dropdown-menu'), arrow = button.querySelector('i.icon-arrow'); button.onclick = function (event) { if (!menu.hasClass('show')) { menu.classList.add('show'); menu.classList.remove('hide'); arrow.classList.add('open'); arrow.classList.remove('close'); event.preventDefault(); } else { menu.classList.remove('show'); menu.classList.add('hide'); arrow.classList.remove('open'); arrow.classList.add('close'); event.preventDefault(); } }; }); Element.prototype.hasClass = function (className) { return this.className && new RegExp('(^|\\s)' + className + '(\\s|$)').test(this.className); }; #charset "utf-8"; body { font-family: "Lato", Helvetica, Arial; font-size: 16px; } .text-center { text-align: center; } *, *:before, *:after { -webkit-border-sizing: border-box; -moz-border-sizing: border-box; border-sizing: border-box; } .container { width: 350px; margin: 50px auto; } .container > ul { list-style: none; padding: 0; margin: 0 0 20px 0; } .title { font-family: 'Pacifico'; font-weight: normal; font-size: 40px; text-align: center; line-height: 1.4; color: #2980B9; } .dropdown a { text-decoration: none; } .dropdown [data-toggle="dropdown"] { position: relative; display: block; color: black; background: #E6E6E6; -moz-box-shadow: 0 1px 0 #EDEDED inset, 0 -1px 0 #C0C0C0 inset; -webkit-box-shadow: 0 1px 0 #EDEDED inset, 0 -1px 0 #C0C0C0 inset; box-shadow: 0 1px 0 #EDEDED inset, 0 -1px 0 #C0C0C0 inset; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); padding: 10px; } .dropdown [data-toggle="dropdown"]:hover { background: #C0C0C0; } .dropdown .icon-arrow { position: absolute; display: block; font-size: 0.7em; color: #fff; top: 14px; right: 10px; } .dropdown .icon-arrow.open { -moz-transform: rotate(-180deg); -ms-transform: rotate(-180deg); -webkit-transform: rotate(-180deg); transform: rotate(-180deg); -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; -webkit-transition: -webkit-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow.close { -moz-transform: rotate(0deg); -ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg); -moz-transition: -moz-transform 0.6s; -o-transition: -o-transform 0.6s; -webkit-transition: -webkit-transform 0.6s; transition: transform 0.6s; } .dropdown .icon-arrow:before { content: '\25BC'; } .dropdown .dropdown-menu { max-height: 0; overflow: hidden; list-style: none; padding: 0; margin: 0; } .dropdown .dropdown-menu li { padding: 0; } .dropdown .dropdown-menu li a { display: block; color: #6e6e6e; background: #EEE; -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3); padding: 10px 10px; } .dropdown .dropdown-menu li a:hover { background: #f6f6f6; } .dropdown .dropdown-menu li ul li { display: block; color: #6e6e6e; background: #EEE; -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3); padding: 0px 0px; text-decoration:none; font-size:80%; } .dropdown .dropdown-menu li ul li a{ display: block; color: #6e6e6e; background: #EEE; -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; box-shadow: 0 1px 0 white inset, 0 -1px 0 #d4d4d4 inset; text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3); padding: 10px 10px; text-decoration:none; } .dropdown .dropdown-menu li ul li a:hover { background: #f6f6f6; } .dropdown .show, .dropdown .hide { -moz-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; -webkit-transform-origin: 50% 0%; transform-origin: 50% 0%; } .dropdown .show { display: block; max-height: 9999px; -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); animation: showAnimation 0.5s ease-in-out; -moz-animation: showAnimation 0.5s ease-in-out; -webkit-animation: showAnimation 0.5s ease-in-out; -moz-transition: max-height 1s ease-in-out; -o-transition: max-height 1s ease-in-out; -webkit-transition: max-height 1s ease-in-out; transition: max-height 1s ease-in-out; } .dropdown .hide { max-height: 0; -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); animation: hideAnimation 0.4s ease-out; -moz-animation: hideAnimation 0.4s ease-out; -webkit-animation: hideAnimation 0.4s ease-out; -moz-transition: max-height 0.6s ease-out; -o-transition: max-height 0.6s ease-out; -webkit-transition: max-height 0.6s ease-out; transition: max-height 0.6s ease-out; } #keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-moz-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #-webkit-keyframes showAnimation { 0% { -moz-transform: scaleY(0.1); -ms-transform: scaleY(0.1); -webkit-transform: scaleY(0.1); transform: scaleY(0.1); } 40% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -webkit-transform: scaleY(1.04); transform: scaleY(1.04); } 100% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } } #keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-moz-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } #-webkit-keyframes hideAnimation { 0% { -moz-transform: scaleY(1); -ms-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } 60% { -moz-transform: scaleY(0.98); -ms-transform: scaleY(0.98); -webkit-transform: scaleY(0.98); transform: scaleY(0.98); } 80% { -moz-transform: scaleY(1.02); -ms-transform: scaleY(1.02); -webkit-transform: scaleY(1.02); transform: scaleY(1.02); } 100% { -moz-transform: scaleY(0); -ms-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); } } <!DOCTYPE html><html class=""> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="dropstyle.css"/> </head> <body> <div class="container"> <h1 class="title">Dropdown Menu</h1> <ul> <li class="dropdown"> Ga naar... <i class="icon-arrow"></i> <ul class="dropdown-menu"> <li>Webdesign <ul> <li>Website</li> <li>CMS</li> <li>Portfolio</li> </ul> </li> <li>Verkoop <ul> <li>Computers & laptops</li> <li>Bullguard anti-virus & backup</li> </ul> </li> <li>Reparatie</li> <li>Google diensten <ul> <li>Adwords</li> <li>Drive</li> </ul> </li> <li>Glasvezel <ul> <li>Introductie</li> <li>Waarom</li> <li>Techniek</li> <li>Aanmelden</li> </ul> </li> <li>Nieuws</li> <li>Contact</li> </ul> </li> </ul> </div> <script src="dropscript.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </body></html>
Try adding the dropdown, dropdown-menu classes to the sub dropdown structures too, and also include the arrow there too. It seems like it's missing. So now this is happening: You get only the first li in the beginning. You query only the first a in it, and only the first ul. Thus you handle the clicks and dropdowns only at first level. Here is your updated fiddle: http://jsfiddle.net/gdna2ncq/1/
Firefox CSS animations not working?
Check out the Path-like menu http://jsfiddle.net/U7cjj/1/ and click on the orange button to see the menu fan out. This effect is accomplished by toggling class using jQuery and CSS animations. The demo works in webkit-based browsers but not on Firefox. The class is properly toggled on click but no menu items show. Does Firefox not support this type of css animations? Is there a way to make it work by using polyfill or a Javascript/jQuery fallback? CSS below: /* Global Reset ------------------------------------------------------------------------------*/ /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } .force3d, .animation-flyout, section.container div.button.expanded.cam, section.container div.button.expanded.friend, section.container div.button.expanded.location, section.container div.button.expanded.music, section.container div.button.expanded.comment, section.container div.button.expanded.status, .animation-flyin, section.container div.button.collapsed.cam, section.container div.button.collapsed.friend, section.container div.button.collapsed.location, section.container div.button.collapsed.music, section.container div.button.collapsed.comment, section.container div.button.collapsed.status { -webkit-backface-visibility: hidden; -webkit-perspective: 1000; -webkit-transform-style: preserve-3d; } .animation-flyout, section.container div.button.expanded.cam, section.container div.button.expanded.friend, section.container div.button.expanded.location, section.container div.button.expanded.music, section.container div.button.expanded.comment, section.container div.button.expanded.status { -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3); -moz-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.3); -webkit-animation-fill-mode: both; -moz-animation-fill-mode: both; animation-fill-mode: both; } .animation-flyin, section.container div.button.collapsed.cam, section.container div.button.collapsed.friend, section.container div.button.collapsed.location, section.container div.button.collapsed.music, section.container div.button.collapsed.comment, section.container div.button.collapsed.status { -webkit-animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045); -moz-animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045); animation-timing-function: cubic-bezier(0.6, -0.3, 0.735, 0.045); -webkit-animation-fill-mode: both; -moz-animation-fill-mode: both; animation-fill-mode: both; } #-webkit-keyframes flyout-cam { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(0px, -136px, 0) rotate(360deg); -moz-transform: translate3d(0px, -136px, 0) rotate(360deg); -ms-transform: translate3d(0px, -136px, 0) rotate(360deg); -o-transform: translate3d(0px, -136px, 0) rotate(360deg); transform: translate3d(0px, -136px, 0) rotate(360deg); } } #-webkit-keyframes flyout-friend { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(42px, -129px, 0) rotate(360deg); -moz-transform: translate3d(42px, -129px, 0) rotate(360deg); -ms-transform: translate3d(42px, -129px, 0) rotate(360deg); -o-transform: translate3d(42px, -129px, 0) rotate(360deg); transform: translate3d(42px, -129px, 0) rotate(360deg); } } #-webkit-keyframes flyout-location { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(80px, -110px, 0) rotate(360deg); -moz-transform: translate3d(80px, -110px, 0) rotate(360deg); -ms-transform: translate3d(80px, -110px, 0) rotate(360deg); -o-transform: translate3d(80px, -110px, 0) rotate(360deg); transform: translate3d(80px, -110px, 0) rotate(360deg); } } #-webkit-keyframes flyout-music { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(110px, -80px, 0) rotate(360deg); -moz-transform: translate3d(110px, -80px, 0) rotate(360deg); -ms-transform: translate3d(110px, -80px, 0) rotate(360deg); -o-transform: translate3d(110px, -80px, 0) rotate(360deg); transform: translate3d(110px, -80px, 0) rotate(360deg); } } #-webkit-keyframes flyout-comment { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(129px, -42px, 0) rotate(360deg); -moz-transform: translate3d(129px, -42px, 0) rotate(360deg); -ms-transform: translate3d(129px, -42px, 0) rotate(360deg); -o-transform: translate3d(129px, -42px, 0) rotate(360deg); transform: translate3d(129px, -42px, 0) rotate(360deg); } } #-webkit-keyframes flyout-status { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } 100% { -webkit-transform: translate3d(136px, 0px, 0) rotate(360deg); -moz-transform: translate3d(136px, 0px, 0) rotate(360deg); -ms-transform: translate3d(136px, 0px, 0) rotate(360deg); -o-transform: translate3d(136px, 0px, 0) rotate(360deg); transform: translate3d(136px, 0px, 0) rotate(360deg); } } #-webkit-keyframes flyin-cam { 0% { -webkit-transform: translate3d(0px, -136px, 0) rotate(0deg); -moz-transform: translate3d(0px, -136px, 0) rotate(0deg); -ms-transform: translate3d(0px, -136px, 0) rotate(0deg); -o-transform: translate3d(0px, -136px, 0) rotate(0deg); transform: translate3d(0px, -136px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(0px, -136px, 0) rotate(360deg); -moz-transform: translate3d(0px, -136px, 0) rotate(360deg); -ms-transform: translate3d(0px, -136px, 0) rotate(360deg); -o-transform: translate3d(0px, -136px, 0) rotate(360deg); transform: translate3d(0px, -136px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } #-webkit-keyframes flyin-friend { 0% { -webkit-transform: translate3d(42px, -129px, 0) rotate(0deg); -moz-transform: translate3d(42px, -129px, 0) rotate(0deg); -ms-transform: translate3d(42px, -129px, 0) rotate(0deg); -o-transform: translate3d(42px, -129px, 0) rotate(0deg); transform: translate3d(42px, -129px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(42px, -129px, 0) rotate(360deg); -moz-transform: translate3d(42px, -129px, 0) rotate(360deg); -ms-transform: translate3d(42px, -129px, 0) rotate(360deg); -o-transform: translate3d(42px, -129px, 0) rotate(360deg); transform: translate3d(42px, -129px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } #-webkit-keyframes flyin-location { 0% { -webkit-transform: translate3d(80px, -110px, 0) rotate(0deg); -moz-transform: translate3d(80px, -110px, 0) rotate(0deg); -ms-transform: translate3d(80px, -110px, 0) rotate(0deg); -o-transform: translate3d(80px, -110px, 0) rotate(0deg); transform: translate3d(80px, -110px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(80px, -110px, 0) rotate(360deg); -moz-transform: translate3d(80px, -110px, 0) rotate(360deg); -ms-transform: translate3d(80px, -110px, 0) rotate(360deg); -o-transform: translate3d(80px, -110px, 0) rotate(360deg); transform: translate3d(80px, -110px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } #-webkit-keyframes flyin-music { 0% { -webkit-transform: translate3d(110px, -80px, 0) rotate(0deg); -moz-transform: translate3d(110px, -80px, 0) rotate(0deg); -ms-transform: translate3d(110px, -80px, 0) rotate(0deg); -o-transform: translate3d(110px, -80px, 0) rotate(0deg); transform: translate3d(110px, -80px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(110px, -80px, 0) rotate(360deg); -moz-transform: translate3d(110px, -80px, 0) rotate(360deg); -ms-transform: translate3d(110px, -80px, 0) rotate(360deg); -o-transform: translate3d(110px, -80px, 0) rotate(360deg); transform: translate3d(110px, -80px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } #-webkit-keyframes flyin-comment { 0% { -webkit-transform: translate3d(129px, -42px, 0) rotate(0deg); -moz-transform: translate3d(129px, -42px, 0) rotate(0deg); -ms-transform: translate3d(129px, -42px, 0) rotate(0deg); -o-transform: translate3d(129px, -42px, 0) rotate(0deg); transform: translate3d(129px, -42px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(129px, -42px, 0) rotate(360deg); -moz-transform: translate3d(129px, -42px, 0) rotate(360deg); -ms-transform: translate3d(129px, -42px, 0) rotate(360deg); -o-transform: translate3d(129px, -42px, 0) rotate(360deg); transform: translate3d(129px, -42px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } #-webkit-keyframes flyin-status { 0% { -webkit-transform: translate3d(136px, 0px, 0) rotate(0deg); -moz-transform: translate3d(136px, 0px, 0) rotate(0deg); -ms-transform: translate3d(136px, 0px, 0) rotate(0deg); -o-transform: translate3d(136px, 0px, 0) rotate(0deg); transform: translate3d(136px, 0px, 0) rotate(0deg); } 40% { -webkit-transform: translate3d(136px, 0px, 0) rotate(360deg); -moz-transform: translate3d(136px, 0px, 0) rotate(360deg); -ms-transform: translate3d(136px, 0px, 0) rotate(360deg); -o-transform: translate3d(136px, 0px, 0) rotate(360deg); transform: translate3d(136px, 0px, 0) rotate(360deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(360deg); -moz-transform: translate3d(0, 0, 0) rotate(360deg); -ms-transform: translate3d(0, 0, 0) rotate(360deg); -o-transform: translate3d(0, 0, 0) rotate(360deg); transform: translate3d(0, 0, 0) rotate(360deg); } } .clearfix { zoom: 1; } .clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } body, html { background: white; } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } div.inner-wrapper { padding: 20px; } h1, h2, h3, h4, h5, h6 { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 100; } a, a:link, a:active, a:visited { color: #fc511d; text-decoration: none; } a:hover { color: #c93103; } ::selection { background: #fc511d; } ::-moz-selection { background: #fc511d; } section.container { width: 400px; margin: 200px auto; position: relative; } section.container div.open-button { background-color: #fc511d; -webkit-border-radius: 120px; -moz-border-radius: 120px; -ms-border-radius: 120px; -o-border-radius: 120px; border-radius: 120px; height: 40px; width: 40px; text-align: center; position: relative; } section.container div.button { background-color: #454545; -webkit-border-radius: 40px; -moz-border-radius: 40px; -ms-border-radius: 40px; -o-border-radius: 40px; border-radius: 40px; color: white; float: left; font-size: 11px; height: 32px; left: 4px; line-height: 3em; position: absolute; text-align: center; top: 4px; width: 32px; -webkit-transition-property: all; -moz-transition-property: all; -ms-transition-property: all; -o-transition-property: all; transition-property: all; -webkit-transition-duration: 0.15s; -moz-transition-duration: 0.15s; -ms-transition-duration: 0.15s; -o-transition-duration: 0.15s; transition-duration: 0.15s; -webkit-transition-timing-function: ease-out; -moz-transition-timing-function: ease-out; -ms-transition-timing-function: ease-out; -o-transition-timing-function: ease-out; transition-timing-function: ease-out; -webkit-transition-delay: 0; -moz-transition-delay: 0; -ms-transition-delay: 0; -o-transition-delay: 0; transition-delay: 0; } section.container div.button.expanded:hover { zoom: 1.2; } section.container div.button.expanded.cam { -webkit-animation-name: flyout-cam; -moz-animation-name: flyout-cam; animation-name: flyout-cam; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0s; -moz-animation-delay: 0s; animation-delay: 0s; } section.container div.button.expanded.friend { -webkit-animation-name: flyout-friend; -moz-animation-name: flyout-friend; animation-name: flyout-friend; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.05s; -moz-animation-delay: 0.05s; animation-delay: 0.05s; } section.container div.button.expanded.location { -webkit-animation-name: flyout-location; -moz-animation-name: flyout-location; animation-name: flyout-location; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.1s; -moz-animation-delay: 0.1s; animation-delay: 0.1s; } section.container div.button.expanded.music { -webkit-animation-name: flyout-music; -moz-animation-name: flyout-music; animation-name: flyout-music; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.15s; -moz-animation-delay: 0.15s; animation-delay: 0.15s; } section.container div.button.expanded.comment { -webkit-animation-name: flyout-comment; -moz-animation-name: flyout-comment; animation-name: flyout-comment; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.2s; -moz-animation-delay: 0.2s; animation-delay: 0.2s; } section.container div.button.expanded.status { -webkit-animation-name: flyout-status; -moz-animation-name: flyout-status; animation-name: flyout-status; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.25s; -moz-animation-delay: 0.25s; animation-delay: 0.25s; } section.container div.button.collapsed.cam { -webkit-animation-name: flyin-cam; -moz-animation-name: flyin-cam; animation-name: flyin-cam; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.25s; -moz-animation-delay: 0.25s; animation-delay: 0.25s; } section.container div.button.collapsed.friend { -webkit-animation-name: flyin-friend; -moz-animation-name: flyin-friend; animation-name: flyin-friend; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.2s; -moz-animation-delay: 0.2s; animation-delay: 0.2s; } section.container div.button.collapsed.location { -webkit-animation-name: flyin-location; -moz-animation-name: flyin-location; animation-name: flyin-location; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.15s; -moz-animation-delay: 0.15s; animation-delay: 0.15s; } section.container div.button.collapsed.music { -webkit-animation-name: flyin-music; -moz-animation-name: flyin-music; animation-name: flyin-music; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.1s; -moz-animation-delay: 0.1s; animation-delay: 0.1s; } section.container div.button.collapsed.comment { -webkit-animation-name: flyin-comment; -moz-animation-name: flyin-comment; animation-name: flyin-comment; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0.05s; -moz-animation-delay: 0.05s; animation-delay: 0.05s; } section.container div.button.collapsed.status { -webkit-animation-name: flyin-status; -moz-animation-name: flyin-status; animation-name: flyin-status; -webkit-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-animation-delay: 0s; -moz-animation-delay: 0s; animation-delay: 0s; } div.open-button p {font-size:12px; padding-top:8px;}
You have only specified key-frames for -webkit-. You should duplicate this without any prefix for Mozilla. I did one for you: http://jsfiddle.net/AbdiasSoftware/U7cjj/2/ #keyframes flyout-cam { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0deg); -moz-transform: translate3d(0, 0, 0) rotate(0deg); -ms-transform: translate3d(0, 0, 0) rotate(0deg); -o-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } As you can see now it also works in Firefox.