tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
1282
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
DIESES THEMA IST
GESCHLOSSEN
  1. #1
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Hallo zusammen,

    ich möchte neben einem Bild (mit "css-abgerundeten" Kanten, daher im <div>) einen Text vertikal in der Mitte ausrichen.

    Das ganze sieht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <li class="fotoserie" id="1">
            <a href="http://blackbox/janneundderfotoapparat/fotos.php?fotoserie=1">
                <div class="foto">
                    <div class="ul"/>
                    <div class="ur"/>
                    <div class="ll"/>
                    <div class="lr"/>
                    <img src="fotos.php-Dateien/1.jpg"/>
                </div>
                <div class="fotoserie_title">Fotoserie 1</div>
            </a>
        </li>

    Das Foto in <div class="foto"> wird durch ul, ur, ll und lr "abgerundet" und der Text "Fotoserie 1" soll vertikal in der Mitte daneben stehen.

    Leider erscheit der Text aber unter dem Foto und die abgerundeten Kanten verrutschen.

    Das ganze kann man sich hier anschauen: http://www.janneundderfotoapparat.de/fotos.php.html

    Hat jemand eine Idee wie ich das richtig hinbekomme?

    Danke für Hinweise!
    Manuel
     

  2. #2
    Maik Tutorials.de Gastzugang
     

  3. #3
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    hmm, dem li-Tag habe ich ja schon "vertical-align: middle" zugewiesen. Wenn ich aus den foto-, ul-, ur-, ll- und lr-Tags statt divs spans mach, wird auch alles in einer Zeile ausgegeben.
    Nur dann stimmen die Positionen der abgerundeten Kanten nicht mehr mit den Kanten des Bildes überein.
     

  4. #4
    Maik Tutorials.de Gastzugang
    Das a-Element (=Inline-Element) darf aber kein div-Element (=Block-Element) enthalten, sondern nur weitere Inline-Elemente - siehe hierzu http://de.selfhtml.org/html/referenz...nline_elemente.

    Wenn du stattdessen das span-Element verwendest, dass ebenso zur Familie der Inline-Elemente zählt, muß dieses mit display:block formatiert werden, um die "Block-Level-Charakteristika" eines Bockelements zu erhalten.

    mfg Maik
     

  5. #5
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Hi,

    danke für die Antwort.

    Ich habe mal den a-Tag rausgenommen. Leider ohne Erfolg: wieder der Zeilenumbruch.

    Wenn ich die Divs durch spans ersetze und dem span.foto-Element display:block zuweise, bin ich ebenfalls da, wo ich auch jetzt bin: "Fotoserie 1" erscheint in einer neuen Zeile.
    Weise ich den anderen spans desweiteren auch display: block zu, bleibt es dabei: "Fotoserie 1" erscheint in einer neuen Zeile.

    Oder habe ich dich falsch verstanden?
     

  6. #6
    Maik Tutorials.de Gastzugang
    Kannst du mal den Probelauf mit den span-Elementen online stellen?

    mfg Maik
     

  7. #7
    Maik Tutorials.de Gastzugang
    Andere Frage: liegt das Grafikelement in einer vorgegebenen Größe vor, oder variiert sie?

    mfg Maik
     

  8. #8
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Klar: http://www.janneundderfotoapparat.de/fotos.php.2.html

    Die Größe soll bei allen gleich bleiben.
     

  9. #9
    Maik Tutorials.de Gastzugang
    Und noch ein Seiteneinwurf, um eine Box mit abgerundeten Ecken zu generieren

    http://www.curvycorners.net/examples/demo2.html @ http://www.curvycorners.net

    mfg Maik
     

  10. #10
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Der ist mit javascript. Das finde ich nicht so schön.

    Der "Rundung"-Ansatz funktioniert ja: Wenn ich "Fotoserie 1" weglasse, sieht es schön aus:
    http://www.janneundderfotoapparat.de/fotos.php.3.html

    Nur dieses "Fotoserie 1" vertikal in der Mitte daneben auszurichten macht mir Sorgen.
     

  11. #11
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Nehme ich für .foto display:block, gebe Höhe und Breite an und float:left sieht es schon ganz ordentlich aus:
    http://www.janneundderfotoapparat.de/fotos.php.4.html

    Nur funktioniert druch das float:left das vertikale Ausrichten des Textes nicht mehr.
    Gibts da irgendeinen Trick?
     

  12. #12
    Maik Tutorials.de Gastzugang
    Moin,

    der Trick liegt einfach darin, dass die relevante Box .fotoserie_title nicht floaten darf

    Code css:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    ul#fotoserie li span {
            float:left;  /* gilt für alle span-Elemente, um ihnen "Block-Level-Charakteristika" zu verleihen */
    }
     
    ul#fotoserie li span.title span.fotoserie_title {
            display:table-cell;
            vertical-align:middle;
            height:65px;
            float:none; /* hebt für dieses span-Element die "globale"  float:left-Deklaration auf */
    }

    Dein vorgestelltes Konzept hab ich bei Null beginnend auf meine Weise umgesetzt, und es funktioniert wie gewünscht in allen Browsern, die die Tabellenwerte der display-Eigenschaft (hier table-cell) zu interpretieren wissen, die hier für eine Angabe zu vertical-align erforderlich ist - bei mir sind das FF, Mozilla, NN, Opera, Safari und Seamonkey. Für den IE dürften dir mein eingangs empfohlenen Links weiterhelfen, da sie einen Workaround für ihn enthalten.

    HTML-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <meta name="author" content="Maik">
    <meta name="date" content="2009-02-21">
    
    <title>tutorials.de | demo_vom_manuel</title>
    
    <style type="text/css">
    <!--
    ul#fotoserie {
            list-style:none;
            margin:0;
            padding:0;
    }
    
    ul#fotoserie li span {
            float:left;
    }
    
    ul#fotoserie li span.foto {
            position:relative;
            margin-right:30px;
    }
    
    ul#fotoserie li span.foto span.ul,
    ul#fotoserie li span.foto span.ur,
    ul#fotoserie li span.foto span.ll,
    ul#fotoserie li span.foto span.lr {
            position:absolute;
            height:10px;
            width:9px;
            font-size:0;
    }
    
    ul#fotoserie li span.foto span.ul {
            top:0;
            left:0;
            background:transparent url(ul.gif) no-repeat scroll left top;
    }
    
    ul#fotoserie li span.foto span.ur {
            top:0;
            right:0;
            background:transparent url(ur.gif) no-repeat scroll right top;
    }
    
    ul#fotoserie li span.foto span.ll {
            bottom:0;
            left:0;
            background:transparent url(ll.gif) no-repeat scroll left bottom;
    }
    
    ul#fotoserie li span.foto span.lr {
            right:0;
            bottom:0;
            background:transparent url(lr.gif) no-repeat scroll right bottom;
    }
    
    ul#fotoserie li span.foto img {
            vertical-align:middle;
            border:0;
    }
    
    ul#fotoserie li span.title span.fotoserie_title {
            display:table-cell;
            vertical-align:middle;
            height:65px;
            float:none;
    }
    -->
    </style>
    
    </head>
    <body>
    
    <ul id="fotoserie">
        <li>
            <a href="#">
               <span class="foto">
                   <span class="ul">&nbsp;</span>
                   <span class="ur">&nbsp;</span>
                   <span class="ll">&nbsp;</span>
                   <span class="lr">&nbsp;</span>
                   <img src="1.jpg" alt="">
               </span>
               <span class="title">
                   <span class="fotoserie_title">Fototitel</span>
               </span>
            </a>
        </li>
    </ul>
    
    </body>
    </html>

    mfg Maik
     

  13. #13
    vom_manuel vom_manuel ist offline Rookie
    Registriert seit
    Feb 2009
    Beiträge
    7
    Super, ich werd mir deine Lösung nochmal genau anschaun.
    Danke für die viele Mühe
     

Ähnliche Themen

  1. vertical-align: middle;
    Von Zack im Forum CSS
    Antworten: 9
    Letzter Beitrag: 06.09.08, 21:04
  2. IE und vertical-align
    Von goldzahn im Forum CSS
    Antworten: 9
    Letzter Beitrag: 05.05.07, 23:21
  3. Vertical-Align im DIV?
    Von josDesign im Forum CSS
    Antworten: 2
    Letzter Beitrag: 23.11.06, 08:31
  4. div & vertical-align
    Von Pherseus im Forum CSS
    Antworten: 3
    Letzter Beitrag: 27.01.05, 17:28
  5. Antworten: 2
    Letzter Beitrag: 05.12.04, 17:22