How to Create a STUNNING Contact Us Page in Elementor Pro/WordPress

 

Want to get this as ready made template with just 1 CLICK INSTALL?

I want it as Ready Template

 

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);
  }
}

Leave a Comment

Your email address will not be published. Required fields are marked *