How can I calculate the height of an element cross-browser using jQuery? -


i created plugin bottom-align element. in it's simplest form did this:

  1. get height of outerelement (div)
  2. get height of current element
  3. result = outerheight - height of current element
  4. sett css attribute 'top' = result.

and works... in firefox , ie8, not in opera or google chrome.

i'm guessing has borders, padding , margin. have in order make work cross-browser?

update
code has been revised , working now.

(function($){     $.fn.alignbottom = function()      {          var defaults = {             outerhight: 0,             elementheight: 0         };          var options = $.extend(defaults, options);         var bpheight = 0; // border + padding          return this.each(function()          {             options.outerhight = $(this).parent().outerheight();             bpheight = options.outerhight - $(this).parent().height();             options.elementheight = $(this).outerheight(true) + bpheight;               $(this).css({'position':'relative','top':options.outerhight-(options.elementheight)+'px'});         });     }; })(jquery); 

the html this:

div class="myouterdiv">     <div class="floatleft"> variable content here </div>     <img class="bottomalign floatright" src="" /> </div> </div> 

and applying jquery plugin:

jquery(".bottomalign").alignbottom(); 

you need outerheight() jquery method:

options.outerhight = $(this).parent().outerheight(); options.elementheight = $(this).outerheight( true ); // include margins 

you need play .position().top distance element moved away top of containing element:

var new_top = $(this).parent().outerheight() - $(this).outerheight() - $(this).position().top; 

another approach

a couple things position:relative. elements positioned take space, can shifted in direction. note shifting them not change took space, element displays.

about position:absolute. absolutely positioned element not take space, needs inside element has position (i.e. position:relative)

so, in straight css:

.myouterdiv { position: relative } .bottomalign { position: absolute; bottom: 0 } 

but note position used take (i.e. because of float right) no longer take up.


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -