Steffen Hi, the name's Steffen and I'm writing about the Web, programming and all those things coming to my mind. Enjoy your stay.

I'm currently working on fabidoo.com - 3D Printing for everyone!

ShadedBorder - JavaScript Round Corners with Drop Shadow

Rounding corners with JavaScript has a long history. Everything started on 16th of March 2005 with Nifty Corners and loads of other libs followed.
RUZEE.ShadedBorder itself is the successor of RUZEE.Borders, which was the most feature-rich round corners library out there. But it wasn’t quite easy to use, was slow, had some browser compatibility problems, etc.
ShadedBorders removes most of these limitations and comes with the following features:

  • JavaScript-only Photoshop(tm)-like rendering without external images
  • Round corners
  • Drop shadows
  • Glow effects
  • Gradient backgrounds
  • Graceful degradation - will look ok if JavaScript is turned off
  • Borders with different widths and semi-transparency
  • Full support for liquid designs
  • Anti-Aliasing
  • On-hover support
  • Disable some of the corners, e.g. bottom-left
  • Change borders on-the-fly
  • Real transparency - looks perfect on any background
  • Cross-Browser: Firefox, Internet Explorer (>=6.0), Safari, Opera (>=9.0)
  • Non-obstrusive
  • Leight-weight (8.8KB uncompressed)
  • Fast (0.5s for the example on a 2.2GHz machine)
  • No JavaScript library dependencies

Have a look at the full-featured example, the simple example, or just download the whole library as a ZIP archive (MIT licensed).

Version History

  • 2007-12-04 - v0.6.1: Fix transparency on IE7
  • 2007-12-02 - v0.6: Semi-transparent fat borders (thanks Ryan) and IE6 hover fixes (thanks NewTrax)
  • 2007-10-23 - v0.5: More robust DIV creation, add split borders example for headline/content (for Virsir)
  • 2007-10-21 - v0.4: Add graceful degradation, simplify usage, fix IE7(?)
  • 2007-10-20 - v0.3: Gradient background support, speed improvements
  • 2007-03-27 - v0.2: Fix IE: check boxes inside tables were disappearing
  • 2007-03-25 - v0.1: Initial release

How-to

Some steps are required to make your page use ShadedBorder:

Include ShadedBorder to your HTML header section:

<script src="shadedborder.js" type="text/javascript"></script>

Next, define an element you want to round. It is important that it does not directly contain text nodes, i.e. text must always be wrapped inside an HTML element (the “p” in this example):

<div id="round_me"> 
   <p>I want to be rounded!</p>
</div>

Then, in the header section, create the border object. You can define the radius of the round corners, the radius of the drop shadow and the width of the border.

var border = RUZEE.ShadedBorder.create({ corner:8, shadow:16,  border:2 });

Note that all parameters are optional, as long as you at least specify one of them. You may also define, which corners/edges should not be rounded. Have a look at the simple example source code for details.

The last thing to do is, to add some JavaScript code directly at the end of the HTML Body which will render the border around the element with the ID “round_me”:

...  
<script type="text/javascript">
  border.render('round_me');
</script>

The radiuses and widths you specified for the border in the header section are one way of customization. The other way is to change colors. You do this in your CSS file:

#round_me, #round_me .sb-inner { background:red; }
#round_me .sb-shadow { background:blue; }
#round_me .sb-border { background:green; }

This will give your border a red “inner-style”, a blue shadow and a green border - don’t ever use this color combination - it will look extremely ugly ;-)
The first line is important for graceful degradation (new from v0.4 on): the background for your .sb-inner class must also be set on the element itself - but only for .sb-inner, NOT for .sb-shadow or .sb-border!

Adding some hover effect also happens in your CSS file. The following code snippet will change the “inner-style” of your border to purple, once you hover with your mouse over the #round_me element (hey purple will make this beast look even uglier - yuk!).

#round_me:hover, #round_me:hover .sb-inner { background:purple; }

Of course, this will work with “.sb-border” and “.sb-shadow” as well.

Tips

You can use RUZEE.ShadedBorder with the JavaScript library of your choice to get support for CSS-Selectors (e.g. using Prototype, jQuery, etc.). Here’s an example using the $$ function of Prototype to round all child elements of the element with the ID “header” that have the class “tab”:

border.render($$('#header .tab'));

Limitations

  • Safari 2 seems to get pretty slow when showing ShadedBorder. I’m looking for people with a Mac and some JavaScript knowledge to speed things up. If you feel like you can help, please contact me via my contact form. Thanks!
  • Since a ShadedBorder adds DIV elements to the element you round, those elements cannot be UL, OL, TABLE, TR, etc.. Allowed are DIV, LI, TD, TH, i.e. those elements that are allowed to directly contain DIV elements.

Tags: , , ,

323 Responses to “ShadedBorder - JavaScript Round Corners with Drop Shadow”

< Prev 1 3 4 5 33 Next > Show All

  • 31
    MArcio Amorim Says:

    Please Help me,

    Hy I am the Marcio of Brazil

    I am using shadedborder.js

    I place a checkbox inside of div

    He does not appear checkbox in Internet Explorer

    This example demonstrate this

    http://www.cerebrum.com.br/shadedborder-0.1/1test.html

    Not Appear checkbox 3º and 4º

    http://www.cerebrum.com.br/shadedborder-0.1/2test.html

    This Based in your modelo

    Not Appear checkbox 3º

    How to resolve this ?

    Please Help me,

    Thanks

    MArcio Amorim
    suporte@cerebrum.com

  • 32
    Steffen Says:

    @MArcio Amorim: Version 0.2 should fix that problem.

  • 33
    MArcio Amorim Says:

    Stephen thanks a lot already I brought up to date and is functioning
    I am thankful for its attention
    Desire much success for you and all its team

  • 34
    Kevin Says:

    Great script, Steffen, thanks for your hard work. LIke Marxes above, I am hoping it will be possible to apply a single RUZEE.ShadedBorder var to an entire CSS class, kind of like you could with Ruzee. I use Joomla, which mostly wraps it’s sections in classes.

  • 35
    Ben Says:

    hey, I just added your js to my website, it is working perfectly.
    and it is nice !
    thanks a lot.
    how ever, I am having a strange issue, the div I am add shadow to is quite big and long
    and for some reasons, the shadow does not make it to the end.
    see http://www.cleyet-marrel.net/
    on the other hand, short page is displaying fine .

    any idea ?
    cheers
    Ben

  • 36
    phpblogger.net » Runde Ecken mit CSS - Frische Ideen rund um PHP Says:

    [...] Rundung betrifft und welche Farbe das Objekt hat. Aber eigentlich gehts nicht um Rico, sondern um ShadedBorder -  eine kleine Javascript Bibliothek von Steffen [...]

  • 37
    TAimur Says:

    hi,
    well, thats a great script, offcourse with some exceptions. The border fails to display properly with some setting as mentioned by some other users.

    the strange problem I’m having is that, all the vertical-alignment in my tables got from ‘middle’ to ‘top’ n thats annonying as I ‘m unable to find a solution for this.

    HELP !!!!

  • 38
    TAimur Says:

    the “tables” I’m talking about in the above mail are, inside the v applied the shadedborder

  • 39
    Ryan G Says:

    Hi,

    This is great, although I did notice a problem using this with Firefox 2.0.0.3 on XP, with Firebug plugin installed.

    My code :

    function doBorders()
    {
    var cBorders = RUZEE.ShadedBorder.create({ corner:10, shadow:20 });
    cBorders.render($(’mainContent’));

    var sBorders = RUZEE.ShadedBorder.create({ corner:5 });
    sBorders.render($$(’.smallRounded’));
    }
    Event.observe(window, ‘load’, function(){doBorders();}, false);

    Using Event.observe on page load seems to be a problem here, the page just hangs and then firefox hangs completely, forcing me to use task manager to kill the process.
    If I take that bottom line out, load the page, and then type javascript:doBorders(); it works fine.

    The page also loads fine without modifying the above code if I disable Firebug before loading the page.

    Im not sure if this was a problem with ShadedBorder or Firebug, but thought I’d post some feedback here and let you guys know. Anyone else had this problem?

    Hey Steffen, great code, great work - how about setting up a google group for support/feedback ?

    Cheers,

    Ryan

  • 40
    mytradex2 Says:

    Ryan looks like you are using the scriptaculous javascript Library. I would say that the problem lies with scriptaculous function not shaded borders. You may want to check your syntax or do a different on onload function.

    Cheers

  • < Prev 1 3 4 5 33 Next > Show All

    Leave a Reply

59870