Instead of the color white, why not "transparent".

=D

-Andrew Martinez

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of 
RobG
Sent: Monday, January 08, 2007 11:53 PM
To: Ruby on Rails: Spinoffs
Subject: [Rails-spinoffs] Re: Borders


The Manhatten Project wrote:
> Hi Ken/Christophe,
>
> I actually did this in the end ..
>
> Event.observe('mydiv', 'mouseover',   function(e){
> Element.setStyle('mydiv', { border: '1px solid red;' } );   });
>
> Event.observe('mydiv', 'mouseout', function(e){
> Element.setStyle('mydiv', { border: '0px solid red;' } );   });
>
> I am sure it can be cleaned up ;) but it does work....

You are much better off to change the class rather than the border
directly, and to just change the colour rather than add/remove it -
otherwise you'll see a 'jump' as it's added and removed, e.g.

 <style type="text/css">
    .whiteBorder {border: 1px solid white;}
    .redBorder {border: 1px solid red;}
  </style>

Give your div a class of 'whiteBorder' (or some other colour, whatever
suits), then use mouseover/out events to add/remove the redBorder
class:

  function addBorderEffect(){
    var i=0, el;
    while ((el = arguments[i++])){
      $(el).onmouseover = function (){
        Element.classNames(this).add('redBorder');
      };
      $(el).onmouseout = function (){
        Element.classNames(this).remove('redBorder');
      };
    }
  }

  window.onload = function(){ addBorderEffect('id0','id1');};

Give the call as many IDs as you like.  If you want to do it completely
without Prototype then try:

  function addClass(el, cssClass){
    var re = new RegExp('(^|\\s)' + cssClass + '(\\s|$)');
    if (!re.test(el.className))
      el.className += ' ' + cssClass;
  }

  function remClass(el, cssClass){
    var re = new RegExp('(^|\\s)' + cssClass + '(\\s|$)','g');
    el.className = el.className.replace(re,' ')
                               .replace(/\s+/g,' ')
                               .replace(/(^\s|\s$)/g,'');
  }

  function addBorderEffect(){
    var i=0, el;
    while (( el = document.getElementById(arguments[i++]) )){
      el.onmouseover = function (){addClass(this, 'redBorder');};
      el.onmouseout = function (){remClass(this, 'redBorder');};
    }
  }

  window.onload = function(){ addBorderEffect('d0','d1');};



--
Rob



--~--~---------~--~----~------------~-------~--~----~
 You received this message because you are subscribed to the Google Groups 
"Ruby on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to