CSS DIVs verschieben sich nach Textinhalt

david22

Cadet 2nd Year
Registriert
Sep. 2013
Beiträge
24
Hallo zusammen,

ich habe mal wieder ein kleines CSS Problem.

Mein CSS Code ist folgender:
CSS:
  #main { margin: 10px 0; padding: 20px; background: #fff;}
 
#box {
display: table;
    width:100%;
  }
      
  #date {
width: 11%;
background-color:green;
      }
      
  #title {
width: 74%;
display: table-cell;
vertical-align: middle;
background-color:red;
      }
      
  #link {
width: 15%;
background-color:green;
      }

Der HTML Code ist:
HTML:
    <div id="main">

        <div id="box">

            <div id="date">
                <p>Hier kommt Text rein</p>
                </div>
                
                <div id="title">
                <p>Hier kommt Text rein</p>
                </div>
                
                <div id="link">
                <a href="">Hier kommt ein Link rein</a>
                </div>
                
            </div>
        </div>
        
        <div id="box">

            <div id="date">
                <p>Hier kommt ein langer Text rein</p>
                </div>
                
                <div id="title">
                <p>Hier kommt Text rein</p>
                </div>
                
                <div id="link">
                <a href="">Hier kommt ein Link rein</a>
                </div>
                
            </div>
        </div>
                
    </div>

Das ergibt diese Ausgabe:

ausgabe.PNG


Nun mein Problem. Ich habe zur besseren Sichtbarkeit die DIVs eingefärbt. Ich will, dass der linke DIV Container (#date) bis zum roten Container läuft. Der rote Container (#title) soll sich nicht in der Position verändern, nur weil der linke Text länger ist.
Hoffe, ihr versteht mein Problem. Ich habe im CSS Code diese Prozentangaben gemacht, aber leider funktioniert es nicht.

Könnt Ihr mir dabei helfen?
 
Hi,

zunächst mal: dein HTML ist invalide, da ID Attribute nur einmalig vergeben werden dürfen. zb:
HTML:
<div id="date-1">
zu wiederverwendung gibt es das CLASS Attribute:
HTML:
<div class="date">
im CSS ist das dann mit . statt # ansprechbar.

ich würde es so lösen:

HTML:
<div id="main">

  <div class="box">
    <div class="date">
      <p>Hier kommt Text rein</p>
    </div>
    <div class="title">
      <p>Hier kommt Text rein</p>
    </div>
    <div class="link">
      <a href="">Hier kommt ein Link rein</a>
    </div>
    </div>
  </div>
 
  <div class="box">
    <div class="date">
      <p>Hier kommt ein langer Text rein</p>
    </div>
    <div class="title">
      <p>Hier kommt Text rein</p>
    </div>
    <div class="link">
      <a href="">Hier kommt ein Link rein</a>
    </div>
    </div>
  </div>
 
</div>
CSS:
 #main { margin: 10px 0; padding: 20px; background: #fff;}
 
.box {
  position:relative;
  padding-left:11%;
  padding-right:15%;
}
.date,
.link{
  position:absolute;
  top:0;
  height:100%;
}
.date {
  left:0;
  width: 11%;
  background-color:green;
}
   
.title {
  background-color:red;
}
   
.link {
  right:0;
  width: 15%;
  background-color:green;
}

Ansonsten siehst du eben, das 11% für längere/variable Texte nicht gerade viel sind. Und für mobil ist die ganze Anordnung neu zu denken. Daher würde ich mir nochmal eine Alternative einfallen lassen. (zb icon mit Title?)
 
Wie beim letzten mal schon angesprochen wurde, schau dir Tutorials an dann erledigen sich die Problemchen von selbst.

 
Danke schonmal. Die Ausgabe sieht jetzt so aus:
ausgabe.PNG

Geht es noch, dass Die ersten beiden Container gleich lang sind? Das wäre optimal. :)

@ r00tk1d Danke für den Link. Das Video werde ich mir demnächst mal anschauen.
 
Zurück
Oben