Want to get this as ready made template with just 1 CLICK INSTALL?
CSS Code Snippet on Icon List Widget:
selector{ --hover-background-color: #ffffff; --hover-background-speed: 500; --letter-animation-difference: 40; } selector{ position: relative; z-index: 1; display: flex; justify-content: center; } selector .elementor-icon-list-item, selector .elementor-icon-list-item a{ flex-direction: column; padding-bottom: 0 !important; } selector .elementor-icon-list-item a{ -webkit-tap-highlight-color: transparent; } selector .elementor-icon-list-text{ position: relative; display: flex; flex-wrap: wrap; justify-content: center; } selector .elementor-icon-list-text:after{ content: ""; position: absolute; inset: 0; background: var(--hover-background-color); z-index: -1; transform: scaleX(0); transform-origin: right; transition: transform calc(var(--hover-background-speed)*1ms) cubic-bezier(1, 0, 0.5, 1); } selector .elementor-icon-list-item:hover .elementor-icon-list-text:after{ transform: scaleX(100%); transform-origin: left; } selector .elementor-icon-list-item span.word{ overflow: hidden; display: flex; flex-direction: column; justify-content: flex-start; } selector .elementor-icon-list-item span.word-up, selector .elementor-icon-list-item span.word-down{ display: flex; flex-direction: row; } selector .elementor-icon-list-item span.letter{ display: inline-block; transition: transform 0.4s ease calc(var(--letter-delay)); } selector .elementor-icon-list-item:hover span.letter{ transform: translateY(-100%); }
JavaScript Code Snippet for Social Menu with Stagger Animation:
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> if(!MDWNonce101){ var MDWNonce101 = true $(document).ready(function() { // Stagger Menu Hover effect $('.mdw-stagger-menu').each(function(){ var $this = $(this), items = '.elementor-icon-list-text', letterTime = ($this.css('--letter-animation-difference') ? parseInt($this.css('--letter-animation-difference').trim()) : 40)/1000 $this.find(items).each(function () { var words = $(this).text().split(' ') $(this).html('') for (var i = 0; i < words.length; i++) { var newSpan = $('<span>').addClass('word'), wordUp = $('<span>').addClass('word-up'), wordDown = $('<span>').addClass('word-down'), letters = words[i].split('') for (var j = 0; j < letters.length; j++) { wordUp.append($('<span>').addClass('letter').text(letters[j])) } for (j = 0; j < letters.length; j++) { wordDown.append($('<span>').addClass('letter').text(letters[j])) } newSpan.append(wordUp) newSpan.append(wordDown) $(this).append(newSpan) if( i < words.length - 1 ) { $(this).append(' ') } } $(this).find('.word').each(function(){ $(this).outerHeight($(this).children().eq(0).outerHeight()) }) $(this).find('.word-up .letter').each(function(i){ $(this).css('--letter-delay', `${0.1+ i * letterTime}s`) }) $(this).find('.word-down .letter').each(function(i){ $(this).css('--letter-delay', `${0.1+ i * letterTime}s`) }) }) }) function setWordHeight(){ $('.mdw-stagger-menu .word').each(function(){ $(this).outerHeight($(this).children().eq(0).outerHeight()) }) } $(window).on('resize', function(){ setWordHeight() setTimeout( setWordHeight, 500 ) }) // Mousemove Eye Effect $('body').on('mousemove', function(e) { var eye = $('.mdw-eye-effect'), mouseX = e.pageX, mouseY = e.pageY eye.each(function(){ var $this = $(this), circleX = $this.offset().left + $this.width() / 2, circleY = $this.offset().top + $this.height() / 2, angle = Math.atan2(circleY - mouseY, circleX - mouseX) * (180 / Math.PI) $this.find('.e-con, .e-container').css('transform', `rotate(${angle}deg)`) }) }) }) } </script>
CSS Code Snippet on Container (mdw-stagger-menu):
selector{ pointer-events: none; } selector .e-con, selector .e-container{ transition: none; } @media (max-width: 767px){ selector .elementor-widget-divider { --divider-border-width: var(--container-widget-width,30px) !important; } }