Create Toggle Animation Using Html , JQuery and CSS

Workstation setup with monitor and keyboard

Photo by Nubelson Fernandes on Unsplash

Creating an Interactive Toggle Button with jQuery

Interactive toggle buttons provide users with clear visual feedback when showing or hiding content. In this tutorial, we'll create a smooth toggle animation using jQuery that's both functional and visually appealing.

Content that appears/disappears with animation

HTML Structure

Start with this clean semantic HTML structure:

<!-- Basic toggle button setup -->
<button class="toggle-btn">Click Here!</button>
<div class="toggle-div">
    Content to show/hide
</div>
UX Tip: Always ensure the button text clearly indicates its toggle action (e.g., "Show Details" vs "Hide Details").

jQuery Implementation

Add this jQuery script to handle the toggle animation:

$(document).ready(function(){
    // Strict mode for better JavaScript practices
    "use strict";
    
    // Cache selectors for better performance
    const $toggleBtn = $(".toggle-btn");
    const $toggleDiv = $(".toggle-div");
    
    // Click event handler
    $toggleBtn.on("click", function(){
        // Toggle with smooth animation (500ms duration)
        $toggleDiv.toggle(500, function(){
            // Animation complete callback
            console.log("Toggle animation completed");
        });
    });
});

Enhanced Version with State Tracking

For better user experience, track and display the toggle state:

$(document).ready(function(){
    "use strict";
    
    const $toggleBtn = $(".toggle-btn");
    const $toggleDiv = $(".toggle-div");
    
    // Initialize button text based on initial state
    updateButtonText();
    
    $toggleBtn.on("click", function(){
        $toggleDiv.toggle(500, function(){
            updateButtonText();
        });
    });
    
    function updateButtonText() {
        const isVisible = $toggleDiv.is(":visible");
        $toggleBtn.text(isVisible ? "Hide Content" : "Show Content");
    }
});

Accessibility Considerations

  • Add ARIA attributes for screen readers
  • Ensure keyboard operability
  • Provide visual focus indicators
  • Consider reduced motion preferences

Complete Accessible Example

<button class="toggle-btn" 
        aria-expanded="false" 
        aria-controls="toggleContent">
    Show Content
</button>
<div id="toggleContent" class="toggle-div" hidden>
    Your content here
</div>

<script>
$(document).ready(function(){
    "use strict";
    
    const $toggleBtn = $(".toggle-btn");
    const $toggleContent = $("#toggleContent");
    
    $toggleBtn.on("click", function(){
        const willShow = $toggleContent.is(":hidden");
        
        // Update ARIA attributes
        $toggleBtn.attr("aria-expanded", willShow);
        
        // Toggle with animation
        $toggleContent.toggle(500);
        
        // Update button text
        $toggleBtn.text(willShow ? "Hide Content" : "Show Content");
    });
});
</script>

Golden Rules

  • Keep animation durations between 200-500ms for optimal usability
  • Provide immediate visual feedback on interaction
  • Ensure the toggled content doesn't disrupt page layout dramatically
  • Test across different devices and screen sizes
  • Consider adding a loading state for complex content

Conclusion

jQuery's toggle() method provides an easy way to create interactive show/hide functionality with smooth animations. By following the patterns in this guide, you can implement accessible, user-friendly toggle buttons that enhance your interface's interactivity. Remember to:

  • Make the toggle action clear to users
  • Maintain accessibility standards
  • Keep animations smooth but not distracting
  • Test with real users to ensure intuitive operation

Comments