Hi, da ich das Problem gelöst habe, poste ich hier mal die Lösung(en)
1. da ich für die Seite ruby on rails verwende, habe ich mit zwischenzeitlich mit einer ruby-Funktion geholfen, welche anhand der Länge des Textes die ungefähre Höhe ausrechnet. Der Höhe des DIV mit dem Text ergibt sich aus zwei Paragraphen und einer Fußzeile mit links und den Zwischenräumen (padding und margins):
Code:
@description_length = 10
@background_length = 10
@description_length = project.description.length if project.description?
@background_length = project.background.length if project.background?
@image_height = [@description_length/5,@background_length/5.5, 50].sum.round
@image_height = 200 if @image_height < 200
In der letzten Zeile setze ich die Mindesthöhe auf 200px fest, weil es sonst bei sehr wenig Text blöd aussah.
Vorteil:- einfach, da mir Bordmitteln gelöst
Nachteil:- sehr ungenau, da der erste Paragraph in Fett, der zweite aber in normaler Schrift angezeigt wird. Eher eine Annäherung als eine genaue Bestimmung...
2. Die finale Lösung:
Die finale und nun verwendete Lösung basiert auf jquery und einer kleinen CSS Erweiterung, meines HTML Codes:
Code:
<div id="projects_wrapper">
<% @projects.each do |project| %>
<div class="<%= cycle("even", "odd", :name => "row_class") -%>">
<div id="box">
<div class="right">
<h3><%=h project.project_title %></h3>
<p class="textjustified"><strong><%=h project.description %></strong></p>
<p class="textjustified"><%=h project.background %></p>
<% unless project.labmembers.blank? %>
<p>
Workin on this project: <%= project.labmembers.collect{|l| link_to(l.fullname, l)}.join(", ")%>
</p>
<% end %>
</div><!-- right -->
<div class="left">
<img src="/images/side_image_blue_<%= cycle ("09","08","07","06","05","04","03","02","01",
:name => "images") %>.jpg">
</div><!-- left -->
<div class="clear"></div>
</div><!-- box -->
</div><!-- odd/even -->
<% end %>
</div><!-- projects_wrapper -->
Entsprechend einer Tabellenzeile habe ich jedes .right .left Paar, also die beiden divs welche in jeder Zeile nebeneinander stehen, in ein Extra Div mit der id="box" eingeschlossen.
Dann habe ich jquery geladen und das folgenden jquery Script in die Seite eingebunden:
Code:
$(document).ready(function () {
var $container = $('#projects_wrapper')
var $boxes = $container.find('#box')
$boxes.each(function () {
var $box = $(this); // derzeitige box
var $sidebox = $box.find('.left');
var height = $box.find('.right').height();
$sidebox.css({
height: height
});
});
});
Arbeitet sehr genau und einfach. Jetzt brauche ich nur noch den Notfallplan für Leute ohne Javascript..., also wohl meine Ruby Lösung...
LG
J
Lesezeichen