Building responsive squares

How do I build a square that is responsive? A square that responds to the behavior of the window element. If the window shrinks, the square should also shrink relative to the window. With the nice CSS function aspect-ratio: 1/1 this can be done easily and quickly.

<div class="w">
    <div class="c"></div> 
</div> 
* {   
  margin: 0;   
  padding: 0;   
  box-sizing: border-box; 
} 
.w {   
  width: 100%;   
  padding:20px; 
} 
.c {   
  border: 2px solid #000;   
  width:100%;   
  max-width:600px;   
  aspect-ratio: 1/1;   
}

That was it 🙂

Wer Padding sagt sollte box-sizing in Erwägung ziehen

Schnell ist innerhalb einer Box ein padding links und ein padding rechts hinzugefügt. Was einigen abernicht bewusst ist, dass die padding die width des Containers ebenfalls beinflusst. Aus diesem Grund sollte man, wenn man das nicht wünscht ein box-sizing: border-box; dem Element mit dem Padding hinzufügen.

Bei parent habe ich es nicht hinzugefügt und ihr seht, dass es jetzt hinten rangehangen wurde. Sobald ihr aber box-sizing hinzugefügt habt ist es richtig ausgerichtet. Sieht ja sonst aus wie ein alter Fernseher.

<div class="parent">
  <div class="box">123</div>
</div>

.parent {
   background: gray;
   padding: 20px;  
   width:100vh;
   margin: auto;  
}
.box {
   width: 330px;
   height: 212px;
   margin-top: 1px;
   margin-left: 22.5px;
   background-color: orange;
   border-radius:10px;
   padding: 10px 8px;
   box-sizing: border-box;
}

CSS position Pattern

Take a look to this pattern and you will understand how it works. Assign your container position: relative;. There child assign position:absolute;. The absolute elements you can positioning by using top, bottom, left, right.

body {
  background: gray;
} 

.container {  
  position: relative;
  width: 50%;
  height: 100vh;
  border: 3px solid #73AD21;
  margin: 0px auto;
  text-align:center;  
}

.container div {
  padding: 10px;
}

.container div:nth-child(1) {
  background: yellow;
  position: absolute;
  width: 200px;
  height: 200px;  
  top: 50%;
  left: 20%;
}

.container div:nth-child(2) {
  background: green;
  position: absolute;
  width: 100px;
  height: 100px;  
  top: 20%;
  right: 20%;
}

.container div:nth-child(3) {
  background: red;
  position: absolute;
  width: 50px;
  height: 50px;  
  top: 10px;
  right: 10px;  
}

.container div:nth-child(4) {
  background: yellowgreen;
  position: absolute;
  width: 300px;
  height: 30px;  
  top: 10px;
  left: -20px;  
}
<div class="container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>FLAG</div>
</div>

DEMO: https://codepen.io/mike-lowrey/pen/BamodMQ

Tailwind Purge unter npm run dev laufen lassen

Einer der Hauptgründe warum ich von Bootstrap auf TaiklwindCSS umgestiegen bin, ist der realisierte Traum von relative kleinen CSS Dateien. Statt ein ganzes CSS Framework immer und wieder zu laden, kann man mit TailwindCSS nur den wirklich im Code benötigten Style generieren lassen. Also eine 100% Effizienz, was bedeutet wir sparen Ressourcen. Und zwar Strom und Ladezeit (GCI – GreenCodeIdiology) So kann man CSS Datei Größen unter 40 KB erhalten und zwar für ein ganzes Projekt. Der Vollständigkeitshalber sei hier aber erwähnt, dass man Bootstrap bis zu einem gewissen Grad auch optimieren kann. Aber es kommt meiner Meinung bei Weitem nicht an die TailwindCSS Möglichkeiten herran.

Die Magie die hinter dem steckt, heißt bei Tailwind purge. Einstellungen zum purgen werden in der tailwind.config.js vorgenommen. Ich weiß es ist vielleicht überflüssig zu erwähnen, aber man kann nur purgen, wenn man Tailwind als Package geladen hat und nicht als CDN nutzt. Wie ihr euch TailwindCSS über ein Packagemanager installiert setze ich an dieser Stelle voraus.

Tailwind purged = bereinigt sobald es auf „Production“ geht. Also npm run prod. Bei einem npm run dev wird noch nicht gepurged. Wer das aber gerne möchte, kann es manuell in der tailwind.config.js einstellen.

module.exports = {
  purge: {
    enabled: true,
    content: [
      './src/**/*.html',
      './src/**/*.vue'
    ],
},

Und jetzt mal run dev laufen lassen und ihr werdet sehen, statt der üblichen 3,83 MB werden es erstaunlich weniger sein.

Tailwind CSS – Ein kurzer Einstieg

Seit Jahren nutze ich Bootstrap. Ich dachte nicht mal im Traum dran, dass es etwas Besseres im Punkto Websitedesign geben wird. Es ist einfach, praktisch und man kann relative schnell ansprechende bzw. aufgeräumtes Designs umsetzen. Allerdings hatte Bootstrap für mich immer einen bitteren Beigeschmack. Ein Gedanke den ich nie zulassen wollte. Und zwar: Bootstrap sieht in 99 Prozent der Fälle aus wie Bootstrap. Es ist auch immer ein größerer Anbach eigene Desigelemente zu implementieren. Bootstrap Formulare sind zwar praktisch aber in den seltensten Fällen schön. Die Navbar wirkt auch immer irgendwie wie bürokratisch / beamtenmäßig. Und am meisten störte mich das man bis Bootstrap 4 Jquery implementieren musste. Ein Javascript Framework was ich immer seltener nutzen mag. Alles im Allen: Bootstrap Webseiten sehen auch immer irgendwie aus wie Backendentwickler (Jeans, Jack Wolfskin Jacke, allways functional Clothes) – langweilig.

In einem aktuellen Projekt musste ich mich mit Tailwind CSS beschäftigen. Zuerst dachte ich alter Wein in neuen Schläuchen und hatte auch nicht wirklich Bock auf ein Weiteres Möchtegern fancy Entwicklungstool. Wie bereits Eingehens geschrieben: „Bootstrap for ever!“

Gamechanger – Der Utility First Ansatz von TailwindCSS

Aber dann kam TailwindCSS. Und ziemlich schnell merkte ich, dass Tailwind das Zeug hat zum Gamechanger. Das Konzept ist ist eigentlich nichts weltbewegendes aber niemand hat es zuvor in diesem Umfang und konsequent durchgesetzt. Das Konzept heißt: Utility First. Statt vordefinierte Klassen und Komponenten nutzt man Toolsets und definiert sein Design selbst. Man arbeitet nur noch mit Klassen im HTML und schreibt kein CSS mehr. Um das Verstehen zu lernen gehen wir umgehend in den praktischen Teil über. In meinem Beispiel möchte ich mit Euch eine einfache Shopdetailseite bauen.

Shop Produkt Übersicht mit TailwindCSS und Alpine.js

Link zur Demo BikeShop Test Seite

Und hier der Link zum Tutorial um dieses Ziel zu erriechen. (coming soon)

SeoTheater Autoren