Zach’s ugly mug (his face) Zach Leatherman

YUI Button Lite

March 23, 2007

Warning

This article is old and may contain information that is outdated, irrelevant, or—dare I say it—no longer accurate. Read with care!

Do you want the cool clean look of the new YUI Button component, but without all the seedy overhead of split buttons or button groups or components that shouldn’t even be pigeonholed into a button component to begin with? Keep in mind that this approach only works for the method called “Using pre-defined Button Control HTML.

Well, here’s the trick to do it.

Create the button as the YUI Button Examples and Documentation say to do so. Include the Button CSS file button/assets/button.css. But just don’t include the YUI JavaScript file button-beta[-min].js.

Instead, use the following JavaScript to replace the functions for button coloring for hover, focus, and active.

    YAHOO.util.Event.addListener( window, 'load', function( e )
    {
        var yuiButtons = YAHOO.util.Dom.getElementsByClassName( 'yuibutton', 'span' );
        YAHOO.util.Event.addListener( yuiButtons, 'mouseover', function( e )
        {
            YAHOO.util.Dom.addClass( this, 'hover' );
        } );
        YAHOO.util.Event.addListener( yuiButtons, 'mouseout', function( e )
        {
            YAHOO.util.Dom.removeClass( this, 'hover' );
        } );
        YAHOO.util.Event.addListener( yuiButtons, 'mousedown', function( e )
        {
            YAHOO.util.Dom.addClass( this, 'active' );
        } );
        YAHOO.util.Event.addListener( yuiButtons, 'mouseup', function( e )
        {
            YAHOO.util.Dom.removeClass( this, 'active' );
        } );
        YAHOO.util.Event.addListener( yuiButtons, 'focus', function( e )
        {
            YAHOO.util.Dom.addClass( this, 'focus' );
        } );
        YAHOO.util.Event.addListener( yuiButtons, 'blur', function( e )
        {
            YAHOO.util.Dom.removeClass( this, 'focus' );
        } );
    } );

If you’re just using the standard buttons anyway, you’re going to see a speed improvement in performance on hover color changes.


Zach Leatherman IndieWeb Avatar for https://zachleat.com/is a builder for the web at IndieWeb Avatar for https://cloudcannon.com/CloudCannon. He is the creator and maintainer of IndieWeb Avatar for https://www.11ty.devEleventy (11ty), an award-winning open source site generator. At one point he became entirely too fixated on web fonts. He has given 79 talks in nine different countries at events like Beyond Tellerrand, Smashing Conference, Jamstack Conf, CSSConf, and The White House. Formerly part of Netlify, Filament Group, NEJS CONF, and NebraskaJS. Learn more about Zach »

Shamelessly plug your related post

These are webmentions via the IndieWeb and webmention.io.

Sharing on social media?

This is what will show up when you share this post on Social Media:

How did you do this? I automated my Open Graph images. (Peer behind the curtain at the test page)