Discussion:
[CSS] Blöcke gleichmässig über gegebene Breite verteilen?
(zu alt für eine Antwort)
Michael Schuerig
2005-08-08 20:03:20 UTC
Permalink
Ich habe in einer Webanwendung einen Bereich mit Aktionen, die der
Benutzer ausführen kann. Dieser Bereich hat eine feste Breite und die
meisten Elemente darin gehen über die ganze Breite. Die Ausnahme sind
vier "Buttons" (Links mit Rahmen) für die Navigation -- |< < > >| --
die in derselben Zeile stehen. Nun möchte ich erreichen, dass der linke
und rechte Button jeweils mit dem Rand bündig sind und die anderen
Buttons gleichmässig verbleibenden Platz angeordnet werden. Bisher
gelingt mir das leider nicht.

Beispiel (und angehängt):
http://www.schuerig.de/michael/demo/actions.html


Michael


<html>
<head>
<style type="text/css">

body, div, p, h1, h2, h3, ul, ol, span, a, table, td, form, img, li {
margin: 0;
padding: 0;
font-family: sans-serif;
}

#actions {
/*
position: fixed;
top: 2em;
right: 1em;
*/
width: 8em;
padding-top: 1.5em;
}

#actions a,
#actions input[type=submit],
#actions input[type=button]
{
display: block;
margin-bottom: 1ex;
font: caption;
text-align: center;
text-decoration: none;
color: ButtonText;
background-color: ButtonFace;
padding: 2px 6px;
border-width: 1px;
border-style: solid;
border-color: #ccc #888 #555 #bbb;
}

#actions a:hover,
#actions input:hover[type=submit],
#actions input:hover[type=submit]
{
color: ButtonText;
background-color: Highlight;
}

#actions .navigation {
padding: 0;
margin: 0 0 1ex 0;
}

#actions .navigation a {
display: -moz-inline-box;
display: inline-block;
width: 1em;
padding: 2px 3px;
margin: 0;
}

#actions p {
padding-top: 1ex;
margin: 0;
}

#actions p.submit {
border-top: 1px dotted #ccc;
}

#actions p input[type=submit],
#actions p input[type=button]
{
margin-left: 0;
padding-left: 0;
margin: 0;
width: 100%;
} </style> </head> <body> <div id="actions"> <a href="#">Liste</a> <p class="navigation"> <a href="#">|&lt;</a> <a href="#">&lt;</a> <a href="#">&gt;</a> <a href="#">&gt;|</a>
</p>
<a href="#">L&ouml;schen</a>
<p class="submit">
<input name="commit" type="submit" value="Sichern" />
</p>
</div>
</body>
--
Michael Schuerig Most people would rather die than think.
mailto:***@schuerig.de In fact, they do.
http://www.schuerig.de/michael/ --Bertrand Russell
Heiko Kuerschner
2005-08-08 20:26:31 UTC
Permalink
Post by Michael Schuerig
Die Ausnahme sind
vier "Buttons" (Links mit Rahmen) für die Navigation -- |< < > >| --
Nun möchte ich erreichen, dass der
linke und rechte Button jeweils mit dem Rand bündig sind und die
anderen Buttons gleichmässig verbleibenden Platz angeordnet werden.
Bisher gelingt mir das leider nicht.
Versuche mal ein text-align:justify; für die Klasse Navigation.
--
Kürsche
Wenns 'ner net gwittern tun tut ;)
Linux/*BSD-Anleitungen, Forum und Chat: www.newbie-net.de
HTML per Script validieren: www.unneraans.de/html-validator.sh/
Michael Schuerig
2005-08-08 20:52:02 UTC
Permalink
Post by Heiko Kuerschner
Post by Michael Schuerig
Die Ausnahme sind
vier "Buttons" (Links mit Rahmen) für die Navigation -- |< < > >| --
Nun möchte ich erreichen, dass der
linke und rechte Button jeweils mit dem Rand bündig sind und die
anderen Buttons gleichmässig verbleibenden Platz angeordnet werden.
Bisher gelingt mir das leider nicht.
Versuche mal ein text-align:justify; für die Klasse Navigation.
Hat leider keine Wirkung.

Michael
--
Michael Schuerig I am the sum total of the parts
mailto:***@schuerig.de I control directly.
http://www.schuerig.de/michael/ --Daniel C. Dennett, Elbow Room
Heiko Kuerschner
2005-08-08 21:42:51 UTC
Permalink
Post by Michael Schuerig
Post by Heiko Kuerschner
Versuche mal ein text-align:justify; für die Klasse Navigation.
Hat leider keine Wirkung.
Mmh. Habe da noch eine Idee.
In etwa so:

a.navigation {
display:block;
margin:0px auto;
width:2em;
}

Dann allerdings noch dem linken a das margin links auf 0 setzen und dem
rechten a den rechten margin auf 0 setzen.
Keine Ahnung obs funktioniert.
So wie es oben steht, verteilen sie sich zumindest gleichmäßig.
--
Kürsche
Wenns 'ner net gwittern tun tut ;)
Linux/*BSD-Anleitungen, Forum und Chat: www.newbie-net.de
HTML per Script validieren: www.unneraans.de/html-validator.sh/
Martin Lemke
2005-08-09 09:04:55 UTC
Permalink
Post by Michael Schuerig
http://www.schuerig.de/michael/demo/actions.html
Diese Seite ist nicht erreichbar.

Martin
Michael Schuerig
2005-08-09 10:34:04 UTC
Permalink
Post by Martin Lemke
Post by Michael Schuerig
http://www.schuerig.de/michael/demo/actions.html
Diese Seite ist nicht erreichbar.
Was soll ich sagen...? Doch, sie ist erreichbar. Jedenfalls ist sie das
im Augenblick und war das als ich gepostet habe.

Michael
--
Michael Schuerig The more it stays the same,
mailto:***@schuerig.de The less it changes!
http://www.schuerig.de/michael/ --Spinal Tap, The Majesty of Rock
Alexander Clauss
2005-08-09 13:22:18 UTC
Permalink
Post by Michael Schuerig
Nun möchte ich erreichen, dass der linke
und rechte Button jeweils mit dem Rand bündig sind und die anderen
Buttons gleichmässig verbleibenden Platz angeordnet werden. Bisher
gelingt mir das leider nicht.
Wenn Du auch mit fehlenden Abständen zwischen den Buttons leben kannst,
dann könntest Du folgendes an Dein StyleSheet anhängen:

.navigation {
display: table;
width: 100%;
}

#actions .navigation a {
display: table-cell;
width: 25%;
}

Funktioniert prima mit FireFox (Gecko-Browsern), iCab 3, Opera, Safari.
Der IE/Mac macht allerdings Probleme, zum IE/Win kann ich nichts sagen,
aber für den kann man zur Not auch eine Extrawurst einbauen.
--
Alexander
Freddy Leitner
2005-08-09 13:40:20 UTC
Permalink
Post by Michael Schuerig
Ich habe in einer Webanwendung einen Bereich mit Aktionen, die der
Benutzer ausführen kann. Dieser Bereich hat eine feste Breite und die
meisten Elemente darin gehen über die ganze Breite. Die Ausnahme sind
vier "Buttons" (Links mit Rahmen) für die Navigation -- |< < > >| --
die in derselben Zeile stehen. Nun möchte ich erreichen, dass der linke
und rechte Button jeweils mit dem Rand bündig sind und die anderen
Buttons gleichmässig verbleibenden Platz angeordnet werden. Bisher
gelingt mir das leider nicht.
Das Problem hierbei ist: Eine allgemeingültige Lösung gibt es nicht,
jeder Fall steht für sich alleine, abhängig vom Einsatzzweck und
natürlich Anzahl der nebeneinander stehen sollenden Elemente. In
Deinem Fall ist es z.B. ein wenig Mathematik, sodass die Breite der
vier Elemente zzgl. drei Mal dem rechten Rand 100% ergeben.

Weiters wäre noch sinnvoll, über die Semantik der Anordnung und die
Beschriftung der "Pseudo-Buttons" nachzudenken, aber dazu kenne ich
den Einsatzzweck zu wenig.

Dein Beispiel, aufs Wesentliche reduziert, mit einer der möglichen
Lösungen für das Problem:

--- snip ---

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
* { margin: 0; padding: 0; }
#actions { width: 8em; }
#actions ul { width: 100%; list-style-type: none; }
#actions li { float: left; width: 100%; margin-bottom: 4%; }
#actions li.navigation li { w\idth: 26%; width: 22%; margin: 0 4% 0 0; }
#actions li.navigation li.last { width: 22%; margin-right: 0; }
#actions a { display: block; border: 1px solid black; } </style> </head> <body> <div id="actions"> <ul> <li><a href="#">Liste</a></li> <li class="navigation"> <ul> <li><a href="#">|&lt;</a></li> <li><a href="#">&lt;</a></li> <li><a href="#">&gt;</a></li> <li class="last"><a href="#">&gt;|</a></li>
</ul>
</li>
<li><a href="#">L&ouml;schen</a></li>
</ul>
</div>
</body>
</html>

--- snip ---

Anm.: Das Beispiel enthält Workarounds für IE5.x (SMBH) und ein
class="last"-Konstrukt, das für CSS3-verständige Browser natürlich
durch ein :last-child-Konstrukt ersetzt werden kann. Die ganze Liste
ist in diesem Fall der Einfachheit halber aus floatenden Elementen
zusammengestellt, ein nachfolgendes Blocklevel-Element sollte daher
ein "clear:" bekommen.

HTH,
- Freddy
--
Respond with patience. Agree to differ.
Michael Schuerig
2005-08-09 14:33:52 UTC
Permalink
Freddy Leitner wrote:

[schnipp]
Post by Freddy Leitner
Dein Beispiel, aufs Wesentliche reduziert, mit einer der möglichen
[schnipp]

Danke schön. Du hast natürlich völlig recht, dass die "Buttons" in eine
Liste gehören. Ich hatte gehofft, dass ich dem Browser das Rechnen
überlassen könnte, aber so geht's ja auch. Konqueror schiesst am
rechten Rand über, aber darum kümmere ich mich, wenn ich mal zuviel
Musse habe.

Michael
--
Michael Schuerig Failures to use one's frontal lobes
mailto:***@schuerig.de can result in the loss of them.
http://www.schuerig.de/michael/ --William H. Calvin
Loading...