Want to get this as ready made template with just 1 CLICK INSTALL?
CSS Code Snippet for Contact Form:
selector{ --button-width: 370px; --message-height: 400px; --form-primary-color: #D7C94F; --form-secondary-color: #1C1915; --empty-error: 'This field is required.'; --email-error: 'This is not a valid email.'; } selector .form-left{ margin: 0; width: calc(100% - var(--button-width)); } selector input, selector textarea{ padding: 30px; } selector input{ transition: none !important; } selector input:-webkit-autofill, selector input:-webkit-autofill:hover, selector input:-webkit-autofill:focus, selector input:-webkit-autofill:active{ -webkit-box-shadow: 0 0 0 100px var(--form-secondary-color-disabled) inset !important; } selector input:-webkit-autofill{ -webkit-text-fill-color: var(--form-primary-color-disabled) !important; } selector textarea{ height: var(--message-height); resize: none; } selector input::placeholder, selector textarea::placeholder{ opacity: 1; } selector .elementor-field-type-submit{ display: flex; align-items: stretch; width: var(--button-width); } selector .elementor-message{ position: absolute; right: 25px; background: var(--form-primary-color); padding: 10px 15px; border-radius: 50px; width: max-content; pointer-events: none; } selector .elementor-form-fields-wrapper+.elementor-message{ position: fixed; bottom: 20px; right: 50%; transform: translateX(50%); } selector .elementor-form .elementor-button:focus{ outline: none; } selector .elementor-form .elementor-button > span{ flex-direction: column; } selector .elementor-form .elementor-button .elementor-button-icon{ margin: 0 0 8px; } selector .elementor-field-type-textarea .elementor-message{ top: 10px; } selector .elementor-form-spinner{ display: none; } @media (min-width: 1025px) and (max-width: 1300px){ selector .elementor-field-group .elementor-message{ position: static; margin: 10px 0 5px; } selector .elementor-field-group:not(.elementor-field-type-submit){ align-items: flex-start; } } @media (min-width: 768px) and (max-width: 950px){ selector .elementor-field-group .elementor-message{ position: static; margin: 10px 0 5px; } selector .elementor-field-group:not(.elementor-field-type-submit){ align-items: flex-start; } } @media (max-width: 1024px){ selector{ --message-height: 300px; } selector .form-left{ width: 100%; } selector .elementor-field-type-submit{ width: 100%; } selector .elementor-form .elementor-button > span{ flex-direction: row; } selector .elementor-form .elementor-button .elementor-button-icon{ margin: 0 8px 0 0; } selector .elementor-form-fields-wrapper+.elementor-message{ position: static; transform: none; margin: 15px auto 0; } }
JavaScript Code Snippet:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> var $ = jQuery $(document).ready(function(){ // Fixed text path link issue $('.elementor-widget-text-path').each(function(){ var $this = $(this) link = JSON.parse($this.attr('data-settings')).link.url $this.find('.e-text-path').wrap('<a href="' + link + '"></a>') }) // Validate email pattern function validateEmail(email) { var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; return emailReg.test(email) } // Remove form result message function removeFormError(form){ var formError = form.find('.elementor-form-fields-wrapper + .elementor-message') formError.fadeOut(400) setTimeout(function(){ formError.remove() },410) } // Get error message values from CSS function getCSSValue(el, prop, defaultValue='') { if( ! el.css(prop) ) return defaultValue var value = el.css(prop).trim().replace(/^\'+|\'+$/g, '').replace(/^\"+|\"+$/g, '') if(value){ return value }else{ return defaultValue } } $('.mdw-modern-form').each(function(){ var $this = $(this), wrapper = $this.find('.elementor-form-fields-wrapper') form = $(this).find('form') // Change form structure wrapper.children().wrapAll('<div class="elementor-form-fields-wrapper form-left"></div>') wrapper.append($this.find('.elementor-field-type-submit')) // Show inline field errors form.find('input, textarea').on('invalid', function(e){ e.preventDefault() if( $(this).val() == '' ){ $(this).closest('.elementor-field-group').find('.elementor-message').remove() $(this).after('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + getCSSValue($this, '--empty-error', 'This field is required.') + '</span>') } if( $(this).attr('type') == 'email' && !validateEmail($(this).val()) ){ $(this).closest('.elementor-field-group').find('.elementor-message').remove() $(this).after('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + getCSSValue($this, '--email-error', 'This is not a valid email.') + '</span>') } removeFormError(form) }) form.find('input, textarea').on('focus', function(){ $(this).closest('.elementor-field-group').find('.elementor-message').remove() removeFormError(form) }) // Show form result message form.on('submit', function(){ submitInterval = setInterval(function(){ if( form.find('.elementor-form-fields-wrapper + .elementor-message').length ){ clearInterval(submitInterval) if( form.find('.elementor-form-fields-wrapper + .elementor-message').hasClass('elementor-message-success') ){ setTimeout(function(){ removeFormError(form) },2000) } } },1000) }) }) }) </script>
CSS Code Snippet for Animating Text Circle:
selector{ --direction: right; --speed: 20s; } selector a:visited{ fill: var(--text-color,#000); } selector svg{ animation: var(--direction) var(--speed) linear infinite; } @-webkit-keyframes left { 0% { transform: rotate(0deg); } 100% { transform: rotate(-360deg); } } @keyframes left { 0% { transform: rotate(0deg); } 100% { transform: rotate(-360deg); } } @-webkit-keyframes right { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes right { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }