CSS - Grid Snippets: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „→‎********************************** Aspect grid by stephanschlegel.de ***********************************: /*** 4 col grid uses the following ratios (one…“)
 
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
== Siehe auch ==
 +
 +
[[CSS - Grid]]
 +
[[CSS - Flexbox]]
 +
 +
== Seitenverhältnis, volle Höhe oder feste Höhe ==
 +
Beim Layout gibt es verschiedene Möglichkeiten wie man Container Elemente gestalten kann. Im einfachsten Fall passt sich die Höhe eines Elements dem Inhalt an.
 +
 +
In manchen Layouts möchte man z.B. das ein Bild oder ein Slider oder auch das ganze Layout die '''komplette Höhe des Browserfensters''' einnimmt. Wenn man Elemente relativ oder absolut positioniert kann man hier die 100% height Angabe verwenden. Was aber, wenn nur das oberste Element (z.B. ein Bild) den ganzen Raum einnehmen soll und trotzdem danach weitere Elemente kommen sollen.
 +
Hier gibt es verschiedene Ansätze.
 +
 +
=== Höhe eines Elements per JavaScript auf 100% Bildschirmhöhe einstellen ===
 +
<syntaxhighlight lang="html5">
 +
<div class="fullHeight>
 +
  <div class="inner">
 +
    The Content
 +
  </div>
 +
</div>
 +
</syntaxhighlight>
 +
JavaScript (jQuery)
 +
<syntaxhighlight lang="javascript">
 +
    /* 100 % height elements and more if inner is to big*/
 +
    $(function(){
 +
        var windowH = $(window).height();
 +
        var wrapperH = $('.fullHeight').height();
 +
        if(windowH > wrapperH) {                           
 +
            $('.fullHeight').css({'height':($(window).height())+'px'});
 +
        }                                                                             
 +
        $(window).resize(function(){
 +
            var windowH = $(window).height();
 +
            var wrapperH = $('.fullHeight').height();
 +
            var differenceH = windowH - wrapperH;
 +
            var newH = wrapperH + differenceH;
 +
            var truecontentH = $('#fullHeight .inner').height();
 +
            if(windowH > truecontentH) {
 +
                $('#fullHeight').css('height', (newH)+'px');
 +
            }
 +
 +
        })         
 +
    });
 +
</syntaxhighlight>
 +
 +
=== Aspect Ratio Divs - Seitenverhältnis einhalten ===
 +
Bei Gridbasierten Layouts ist es schön, wenn die Höhe sich so der Breite anpasst, dass immer das gleiche Seitenverhältnis entsteht. So kann man schöne Raster erstellen. Mit Hintergrundbildern passt sich das Bild dann z.B. einer nebenstehenden Textbox an. Oder man kann Text in Divs unten ausrichten und hat trotzdem immer eine passende Höhe (table-cell zum unten ausrichten). Funktioniert z.B. schön in einem 4er Grid. Anwendungsbeispiele: Schlueter-kollegen.de, janna-mode.de (Stand Anfang 2017)
 +
 +
Dieses Beispiel ist für ein 4er Raster optimiert, bei dem man von einer Grundeinheit von 4:3 ausgeht. Will man jetzt mehrere Spalten überstreichen ergeben sich automatisch bei gleicher Höhe die nächsten Seitenverhältnisse.
 +
<syntaxhighlight lang="css">
 
/***********************************
 
/***********************************
 
   Aspect grid by stephanschlegel.de
 
   Aspect grid by stephanschlegel.de
 
************************************/
 
************************************/
 
/*** 4 col grid uses the following ratios (one quater has ratio 3:4) ***/
 
 
/* set height of div so that bg keeps the aspect ratio */
 
/* set height of div so that bg keeps the aspect ratio */
 
.stretch{ /*needs pos relative or absolute to work*/
 
.stretch{ /*needs pos relative or absolute to work*/
Zeile 9: Zeile 54:
 
   height: 100%;
 
   height: 100%;
 
}
 
}
 +
.col{ background: grey;}
  
.col{ background: grey;}
+
/*** Common ratios for 4 col grid
 +
(base is: one quarter has ratio 3:4) ***/
 
.a-3-4{ /* 3:4 Aspect Ratio */
 
.a-3-4{ /* 3:4 Aspect Ratio */
 
   width: 100%;
 
   width: 100%;
Zeile 33: Zeile 80:
 
   position: relative;
 
   position: relative;
 
}
 
}
 
 
/* other common ratios */
 
/* other common ratios */
 
.a-1-1{
 
.a-1-1{
Zeile 40: Zeile 86:
 
   position: relative;
 
   position: relative;
 
}
 
}
 
 
 
.a-4-3{
 
.a-4-3{
 
   width: 100%;
 
   width: 100%;
Zeile 47: Zeile 91:
 
   position: relative;
 
   position: relative;
 
}
 
}
 
 
.aspect-8-5{
 
.aspect-8-5{
 
   width: 100%;
 
   width: 100%;
Zeile 53: Zeile 96:
 
   position: relative;
 
   position: relative;
 
}
 
}
 
 
.a-16-9{
 
.a-16-9{
 
   width: 100%;
 
   width: 100%;
Zeile 59: Zeile 101:
 
   position: relative;
 
   position: relative;
 
}
 
}
 +
 +
/* Text positioning */
 +
.inner{
 +
  display: table;
 +
  margin: 0;
 +
  width: 100%;
 +
  height: 100%;
 +
}
 +
.child a.full{
 +
  display: table-cell;
 +
  padding: 3%;
 +
  vertical-align: bottom;
 +
  text-decoration: none;
 +
  color: inherit;
 +
}
 +
 +
</syntaxhighlight>
 +
 +
HTML (basiert auf materializecss grid)
 +
<syntaxhighlight lang="html5">
 +
      <div class="row no-margin">
 +
        <div class="col m6 s12 no-padding">
 +
          <div class="a-6-4">       
 +
            <div id="box-3"class="stretch">
 +
              <div class="child">
 +
                <div class="inner">
 +
                  <a class="full" href="#">
 +
                    <h2>Leistungen</h2>
 +
                    <p>Steuerberatung für Privatpersonen und <br>
 +
                    Unternehmen. Kompetenz aus einem <br>
 +
                    komplementären Team.</p>
 +
                  </a>
 +
                </div>
 +
              </div>
 +
            </div>
 +
          </div>
 +
        </div>
 +
 +
        <div class="col m6 s12 no-padding">
 +
          <div class="a-6-4">       
 +
            <div id="box-4" class="stretch">
 +
              <div class="child">
 +
                <div class="inner">
 +
                  <a class="full" href="#">
 +
                    <h2>Ihre<br>Karriere</h2>
 +
                    <p>Starten Sie mit uns durch. Wir bieten für <br>
 +
                    Sie ganz unterschiedliche Modelle zur <br>
 +
                    Ausbildung oder zum Job.</p>
 +
                  </a>
 +
                </div>
 +
              </div>
 +
            </div>
 +
          </div>
 +
        </div>
 +
     
 +
      </div><!-- row end -->

Aktuelle Version vom 20. Juli 2018, 14:36 Uhr

Siehe auch[Bearbeiten]

CSS - Grid
CSS - Flexbox

Seitenverhältnis, volle Höhe oder feste Höhe[Bearbeiten]

Beim Layout gibt es verschiedene Möglichkeiten wie man Container Elemente gestalten kann. Im einfachsten Fall passt sich die Höhe eines Elements dem Inhalt an.

In manchen Layouts möchte man z.B. das ein Bild oder ein Slider oder auch das ganze Layout die komplette Höhe des Browserfensters einnimmt. Wenn man Elemente relativ oder absolut positioniert kann man hier die 100% height Angabe verwenden. Was aber, wenn nur das oberste Element (z.B. ein Bild) den ganzen Raum einnehmen soll und trotzdem danach weitere Elemente kommen sollen. Hier gibt es verschiedene Ansätze.

Höhe eines Elements per JavaScript auf 100% Bildschirmhöhe einstellen[Bearbeiten]

<div class="fullHeight>
  <div class="inner">
    The Content
  </div>
</div>

JavaScript (jQuery)

    /* 100 % height elements and more if inner is to big*/
    $(function(){
        var windowH = $(window).height();
        var wrapperH = $('.fullHeight').height();
        if(windowH > wrapperH) {                            
            $('.fullHeight').css({'height':($(window).height())+'px'});
        }                                                                               
        $(window).resize(function(){
            var windowH = $(window).height();
            var wrapperH = $('.fullHeight').height();
            var differenceH = windowH - wrapperH;
            var newH = wrapperH + differenceH;
            var truecontentH = $('#fullHeight .inner').height();
            if(windowH > truecontentH) {
                $('#fullHeight').css('height', (newH)+'px');
            }

        })          
    });

Aspect Ratio Divs - Seitenverhältnis einhalten[Bearbeiten]

Bei Gridbasierten Layouts ist es schön, wenn die Höhe sich so der Breite anpasst, dass immer das gleiche Seitenverhältnis entsteht. So kann man schöne Raster erstellen. Mit Hintergrundbildern passt sich das Bild dann z.B. einer nebenstehenden Textbox an. Oder man kann Text in Divs unten ausrichten und hat trotzdem immer eine passende Höhe (table-cell zum unten ausrichten). Funktioniert z.B. schön in einem 4er Grid. Anwendungsbeispiele: Schlueter-kollegen.de, janna-mode.de (Stand Anfang 2017)

Dieses Beispiel ist für ein 4er Raster optimiert, bei dem man von einer Grundeinheit von 4:3 ausgeht. Will man jetzt mehrere Spalten überstreichen ergeben sich automatisch bei gleicher Höhe die nächsten Seitenverhältnisse.

/***********************************
  Aspect grid by stephanschlegel.de
************************************/
/* set height of div so that bg keeps the aspect ratio */
.stretch{ /*needs pos relative or absolute to work*/
  width: 100%;
  height: 100%;
}
.col{ background: grey;}

/*** Common ratios for 4 col grid 
(base is: one quarter has ratio 3:4) ***/
.a-3-4{ /* 3:4 Aspect Ratio */
  width: 100%;
  padding-top: 133.3333%;
  position: relative;
}
.a-6-4,
.a-3-2{
  width: 100%;
  padding-top: 66.6666%;
  position: relative;
}
.a-9-4{
  width: 100%;
  padding-top: 44.4444%;
}
.a-12-4,
.a-6-2,
.a-3-1{
  width: 100%;
  padding-top: 33.3333%;
  position: relative;
}
/* other common ratios */
.a-1-1{
  width: 100%;
  padding-top: 100%; /* Square */
  position: relative;
}
.a-4-3{
  width: 100%;
  padding-top: 75%; /* 4:3 Aspect Ratio */
  position: relative;
}
.aspect-8-5{
  width: 100%;
  padding-top: 62.5%; /* 8:5 Aspect Ratio */
  position: relative;
}
.a-16-9{
  width: 100%;
  padding-top: 56.25%; /* 16:9 Aspect Ratio */
  position: relative;
}

/* Text positioning */
.inner{
  display: table;
  margin: 0;
  width: 100%;
  height: 100%;
}
.child a.full{
  display: table-cell;
  padding: 3%;
  vertical-align: bottom;
  text-decoration: none;
  color: inherit;
}

HTML (basiert auf materializecss grid) <syntaxhighlight lang="html5">

                 <a class="full" href="#">

Leistungen

Steuerberatung für Privatpersonen und
Unternehmen. Kompetenz aus einem
komplementären Team.

                 </a>
                 <a class="full" href="#">

Ihre
Karriere

Starten Sie mit uns durch. Wir bieten für
Sie ganz unterschiedliche Modelle zur
Ausbildung oder zum Job.

                 </a>