Grid system

Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options, as well as powerful utility classes for showing and hiding content by device via media query

Introduction

Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the Bootstrap grid system works:

  • Rows must be placed within a .container (fixed-width) or .container-fluid (full-width) for proper alignment and padding.
  • Use rows to create horizontal groups of columns.
  • Content should be placed within columns, and only columns may be immediate children of rows.
  • Predefined grid classes like .row and .col-xs-4 are available for quickly making grid layouts. Less mixins can also be used for more semantic layouts.
  • Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows.
  • The negative margin is why the examples below are outdented. It's so that content within grid columns is lined up with non-grid content.
  • Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4.
  • If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.
  • Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. Therefore, e.g. applying any .col-md-* class to an element will not only affect its styling on medium devices but also on large devices if a .col-lg-* class is not present.

Look to the examples for applying these principles to your code.

Grid options

See how aspects of the Bootstrap grid system work across multiple devices with a handy table.

Extra small devices Phones (<768px) Small devices Tablets (≥768px) Medium devices Desktops (≥992px) Large devices Desktops (≥1200px)
Grid behavior Horizontal at all times Collapsed to start, horizontal above breakpoints
Container width None (auto) 750px 970px 1170px
Class prefix .col-xs- .col-sm- .col-md- .col-lg-
# of columns 12
Column width Auto ~62px ~81px ~97px
Gutter width 30px (15px on each side of a column)
Nestable Yes
Offsets Yes
Column ordering Yes

Example: Stacked-to-horizontal

Using a single set of .col-md-* grid classes, you can create a basic grid system that starts out stacked on mobile devices and tablet devices (the extra small to small range) before becoming horizontal on desktop (medium) devices. Place grid columns in any .row.

.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-8
.col-md-4
.col-md-4
.col-md-4
.col-md-4
.col-md-6
.col-md-6
<div class="row">
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	  <div class="col-md-1">.col-md-1</div>
	</div>
	<div class="row">
	  <div class="col-md-8">.col-md-8</div>
	  <div class="col-md-4">.col-md-4</div>
	</div>
	<div class="row">
	  <div class="col-md-4">.col-md-4</div>
	  <div class="col-md-4">.col-md-4</div>
	  <div class="col-md-4">.col-md-4</div>
	</div>
	<div class="row">
	  <div class="col-md-6">.col-md-6</div>
	  <div class="col-md-6">.col-md-6</div>
	</div>

Example: Mobile and desktop

Don't want your columns to simply stack in smaller devices? Use the extra small and medium device grid classes by adding .col-xs-* .col-md-* to your columns. See the example below for a better idea of how it all works.

.col-xs-12 .col-md-8
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6
.col-xs-6
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
	<div class="row">
	  <div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
	  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
	</div>

	<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
	<div class="row">
	  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
	  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
	  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
	</div>

	<!-- Columns are always 50% wide, on mobile and desktop -->
	<div class="row">
	  <div class="col-xs-6">.col-xs-6</div>
	  <div class="col-xs-6">.col-xs-6</div>
	</div>

Example: Mobile, tablet, desktop

Build on the previous example by creating even more dynamic and powerful layouts with tablet .col-sm-* classes.

.col-xs-12 .col-sm-6 .col-md-8
.col-xs-6 .col-md-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4
<div class="row">
	  <div class="col-xs-12 col-sm-6 col-md-8">.col-xs-12 .col-sm-6 .col-md-8</div>
	  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
	</div>
	<div class="row">
	  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
	  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
	  <!-- Optional: clear the XS cols if their content doesn't match in height -->
	  <div class="clearfix visible-xs-block"></div>
	  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
	</div>

Example: Column wrapping

If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.

.col-xs-9
.col-xs-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
.col-xs-6
Subsequent columns continue along the new line.
<div class="row">
	  <div class="col-xs-9">.col-xs-9</div>
	  <div class="col-xs-4">.col-xs-4<br>Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
	  <div class="col-xs-6">.col-xs-6<br>Subsequent columns continue along the new line.</div>
	</div>

Responsive column resets

With the four tiers of grids available you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a .clearfix and our responsive utility classes.

.col-xs-6 .col-sm-3
Resize your viewport or check it out on your phone for an example.
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3
<div class="row">
	  <div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
	  <div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>

	  <!-- Add the extra clearfix for only the required viewport -->
	  <div class="clearfix visible-xs-block"></div>

	  <div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
	  <div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
	</div>

In addition to column clearing at responsive breakpoints, you may need to reset offsets, pushes, or pulls. See this in action in the grid example.

<div class="row">
	  <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
	  <div class="col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0">.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0</div>
	</div>

	<div class="row">
	  <div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
	  <div class="col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lg-offset-0">.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0</div>
	</div>

Offsetting columns

Move columns to the right using .col-md-offset-* classes. These classes increase the left margin of a column by * columns. For example, .col-md-offset-4 moves .col-md-4 over four columns.

.col-md-4
.col-md-4 .col-md-offset-4
.col-md-3 .col-md-offset-3
.col-md-3 .col-md-offset-3
.col-md-6 .col-md-offset-3
<div class="row">
	  <div class="col-md-4">.col-md-4</div>
	  <div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
	</div>
	<div class="row">
	  <div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
	  <div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
	</div>
	<div class="row">
	  <div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
	</div>

You can also override offsets from lower grid tiers with .col-*-offset-0 classes.

<div class="row">
	  <div class="col-xs-6 col-sm-4">
	  </div>
	  <div class="col-xs-6 col-sm-4">
	  </div>
	  <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-0">
	  </div>
	</div>

Nesting columns

To nest your content with the default grid, add a new .row and set of .col-sm-* columns within an existing .col-sm-* column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).

Level 1: .col-sm-9
Level 2: .col-xs-8 .col-sm-6
Level 2: .col-xs-4 .col-sm-6
<div class="row">
	  <div class="col-sm-9">
		Level 1: .col-sm-9
		<div class="row">
		  <div class="col-xs-8 col-sm-6">
			Level 2: .col-xs-8 .col-sm-6
		  </div>
		  <div class="col-xs-4 col-sm-6">
			Level 2: .col-xs-4 .col-sm-6
		  </div>
		</div>
	  </div>
	</div>

Column ordering

Easily change the order of our built-in grid columns with .col-md-push-* and .col-md-pull-* modifier classes.

.col-md-9 .col-md-push-3
.col-md-3 .col-md-pull-9
<div class="row">
	  <div class="col-md-9 col-md-push-3">.col-md-9 .col-md-push-3</div>
	  <div class="col-md-3 col-md-pull-9">.col-md-3 .col-md-pull-9</div>
	</div>

More grid examples

Basic grid layouts to get you familiar with building within the Bootstrap grid system.

Three equal columns

Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

.col-md-4
.col-md-4
.col-md-4

Three unequal columns

Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

.col-md-3
.col-md-6
.col-md-3

Two columns

Get two columns starting at desktops and scaling to large desktops.

.col-md-8
.col-md-4

Full width, single column

No grid classes are necessary for full-width elements.


Two columns with two nested columns

Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

At mobile device sizes, tablets and down, these columns and their nested columns will stack.

.col-md-8
.col-md-6
.col-md-6
.col-md-4

Mixed: mobile and desktop

The Bootstrap 3 grid system has four tiers of classes: xs (phones), sm (tablets), md (desktops), and lg (larger desktops). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

Each tier of classes scales up, meaning if you plan on setting the same widths for xs and sm, you only need to specify xs.

.col-xs-12 .col-md-8
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6
.col-xs-6

Mixed: mobile, tablet, and desktop

.col-xs-12 .col-sm-6 .col-lg-8
.col-xs-6 .col-lg-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4

Column clearing

Clear floats at specific breakpoints to prevent awkward wrapping with uneven content.

.col-xs-6 .col-sm-3
Resize your viewport or check it out on your phone for an example.
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3

Offset, push, and pull resets

Reset offsets, pushes, and pulls at specific breakpoints.

.col-sm-5 .col-md-6
.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0
.col-sm-6 .col-md-5 .col-lg-6
.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0
Datenschutzerklärung 1. Anwendungsbereich Diese Datenschutzerklärung klärt Sie über die Art, den Umfang und die Zwecke der Erhebung und Verwendung personenbezogener Daten auf der Webseite www.dirk-stange.de (im Folgenden „Webseite“) durch die WST-Dirk Stange Werbeatelier GmbH, Theodorstraße 41h, 22761 Hamburg (im Folgenden „wir“ oder „uns“) auf. Wir sind die verantwortliche Stelle für sämtliche personenbezogenen Daten, die auf der Webseite erhoben werden, es sei denn, diese Datenschutzerklärung enthält abweichende Angaben. 2. Personenbezogenen Daten Personenbezogene Daten sind Informationen, mit deren Hilfe eine Person bestimmbar ist, also Angaben, die zurück zu einer Person verfolgt werden können. Dazu gehört typischerweise der Name, die E-Mail-Adresse oder die Telefonnummer. Zudem sind aber auch rein technische Daten, die einer Person zugeordnet werden können, als personenbezogene Daten anzusehen. 3. Automatische Erhebung von Zugriffsdaten/Server-Logfiles Wir erheben bei jedem Zugriff auf die Webseite automatisch eine Reihe von technischen Daten, bei denen es sich um personenbezogene Daten handelt. Diese sind: • Die IP-Adresse des Nutzers • Name der abgerufenen Website bzw. Datei • Datum und Uhrzeit des Zugriffs • übertragene Datenmenge • Meldung über erfolgreichen Abruf • Browser-Typ und Version • Betriebssystem des Nutzers • verwendetes Endgerät des Nutzers, inklusive MAC-Adresse • Referrer-URL (die zuvor besuchte Seite) Diese Daten werden nicht mit anderen personenbezogenen Daten, die Sie aktiv im Rahmen der Webseite angeben, zusammengeführt. Die Server-Logfiles mit den oben genannten Daten werden automatisch nach 14 Tagen gelöscht. Wir behalten uns vor, die Server-Logfiles länger zu speichern, wenn Tatsachen vorliegen, welche die Annahme eines unzulässigen Zugriffs (wie etwa der Versuch eines Hackings oder einer so genannten DOS-Attacke) nahelegen. 4. Was ist eine IP-Adresse Jedem Gerät (z.B. Smartphone, Tablet, PC), das mit dem Internet verbunden ist, wird eine IP-Adresse zugewiesen. Welche IP-Adresse dies ist, hängt davon ab, über welchen Internetzugang Ihr Endgerät aktuell mit dem Internet verbunden ist. Es kann sich dabei um die IP-Adresse handeln, die Ihnen Ihr Internetprovider zugeteilt hat, etwa wenn Sie zu Hause über Ihr W-Lan mit dem Internet verbunden sind. Es kann sich aber auch um eine IP-Adresse handeln, die Ihnen Ihr Mobilfunkprovider zugeteilt hat oder um die IP-Adresse eines Anbieters eines öffentlichen oder privaten W-Lans oder anderen Internetzugangs. In ihrer derzeit geläufigsten Form (IPv4) besteht die IP-Adresse aus vier durch Punkte getrennte Zifferblöcken. Zumeist werden Sie als privater Nutzer keine gleichbleibende IP-Adresse benutzen, da Ihnen diese von Ihrem Provider nur vorübergehend zugewiesen wird (so genannte „dynamische IP-Adresse“). Bei einer dauerhaft zugeordneten IP-Adresse (so genannte „statische IP-Adresse“) ist eine eindeutige Zuordnung der Nutzerdaten über dieses Merkmal im Prinzip möglich. Außer zum Zwecke der Verfolgung unzulässiger Zugriffe auf unser Internetangebot verwenden wir diese Daten grundsätzlich nicht personenbezogen, sondern werten lediglich auf anonymisierter Basis aus, welche unserer Webseiten favorisiert werden, wie viele Zugriffe täglich erfolgen und ähnliches. Unsere Webseite unterstützt bereits die neuen IPv6-Adressen. Wenn Sie bereits über eine IPv6-Adresse verfügen, sollten Sie zudem noch folgendes wissen: Die IPv6 Adresse besteht aus acht Viererblöcken. Die ersten vier Blöcke werden, ebenso wie bei der gesamten IPv4 Adresse, typischerweise bei privaten Anwendern dynamisch vergeben. Die letzten vier Blöcke einer IPv6-Adresse (sog. „Interface-Identifier“) werden allerdings durch das Endgerät bestimmt, welches Sie zum Browsen auf der Webseite verwenden. Soweit dies in Ihrem Betriebssystem nicht anders eingestellt ist, wird hierzu die sog. MAC-Adresse verwendet. Bei der MAC-Adresse handelt es sich um eine Art Seriennummer, die für jedes IP-fähige Gerät weltweit einmalig vergeben wird. Wir speichern daher die letzten vier Blöcke Ihrer IPv6-Adresse nicht. Generell empfehlen wir Ihnen, an Ihrem Endgerät die sog. „Privacy Extensions“ zu aktivieren, um die letzten vier Blöcke Ihrer IPv6-Adresse besser zu anonymisieren. Die meisten gängigen Betriebssysteme verfügen über eine „Privacy Extensions“-Funktion, die allerdings in manchen Fällen werksmäßig nicht voreingestellt ist. 5. Nutzerprofile Im Rahmen der Erstellung eines Benutzerkontos für unseren Online-Shop werden Sie aufgefordert eine Reihe an personenbezogenen Daten einzugeben. Diese Daten speichern wir, um die mit Ihnen geschlossenen Verträge über die Lieferung von Waren durchzuführen. Sie können die Daten stets unter der Rubrik „Benutzerkonto“ einsehen, ändern und löschen. Es ist Ihnen auch jederzeit möglich, das gesamte Benutzerkonto zu löschen. 6. Verwendung Ihrer Daten für die Zusendung von Werbung Wir werden Ihre personenbezogenen Daten nicht für die Zusendung von Werbung an Ihre E-Mail-Adresse oder ihre postalische Adresse verwenden, es sei denn Sie haben dem ausdrücklich zugestimmt. Zudem geben wir ihre Daten auch nicht an Dritte weiter, es sei denn, es liegt eine ausdrückliche Einwilligungserklärung von Ihnen vor. 7. Kontaktaufnahme Bei der Kontaktaufnahme mit uns (zum Beispiel per Kontaktformular oder E-Mail) werden die Angaben des Nutzers zwecks Bearbeitung der Anfrage sowie für den Fall, dass Anschlussfragen entstehen, gespeichert. 8. Cookies Cookies sind kleine Textdateien, welche bei dem Aufruf unserer Webseite auf Ihrem Endgerät durch den jeweils verwendeten Browser gespeichert werden. Einzelne Dienste einer Webseite können Sie auf diese Weise „erkennen“ und sich „merken“, welche Einstellungen Sie vorgenommen haben. Dies dient zum einem der Benutzerfreundlichkeit von Websites und damit den Nutzern (z.B. Speicherung von Login-Daten). Zum anderen dienen Cookies dazu, statistische Daten der Website-Nutzung zu erfassen und die so gewonnenen Daten zu Analyse- und Werbezwecken zu nutzen. Einige Cookies werden automatisch wieder von Ihrem Endgerät gelöscht, sobald Sie die Webseite wieder verlassen (sogenanntes Session-Cookie). Andere Cookies werden für einen bestimmten Zeitraum gespeichert, der jeweils zwei Jahre nicht übersteigt (Persistent-Cookies). Zudem setzen wir auch so genannte Third-Party-Cookies ein, die von Dritten verwaltet werden, um bestimmte Dienste anzubieten. Sie können auf den Einsatz der Cookies Einfluss nehmen. Die meisten Browser verfügen über eine Option, mit der das Speichern von Cookies eingeschränkt oder komplett verhindert wird. Allerdings wird darauf hingewiesen, dass die Nutzung und insbesondere der Nutzungskomfort ohne Cookies eingeschränkt werden. 9. Änderungen, Berichtigungen und Aktualisierungen Sie haben das Recht über die personenbezogenen Daten, die über Sie gespeichert wurden, auf Antrag unentgeltlich Auskunft zu erhalten. Zusätzlich haben Sie das Recht auf Berichtigung unrichtiger Daten, Sperrung und Löschung Ihrer personenbezogenen Daten, soweit dem keine gesetzliche Aufbewahrungspflicht entgegensteht. Sie können Sich hierzu jederzeit an kontakt[at]dirk-stange.de wenden. 10. Aufbewahrung von Daten Wir speichern personenbezogene Daten nur so lange, wie es nötig ist, um die Dienstleistungen auszuführen, die Sie gewünscht oder zu denen Sie Ihre Einwilligung erteilt haben, sofern keine anderslautenden gesetzlichen Verpflichtungen bestehen. Aufbewahrungspflichten, die uns zur Aufbewahrung von Daten verpflichten, ergeben sich aus Vorschriften der Rechnungslegung (§ 257 HGB) und aus steuerrechtlichen Vorschriften (§ 147 AO sowie § 14b UStG). Gemäß diesen Vorschriften sind geschäftliche Kommunikation, geschlossene Verträge und Buchungsbelege bis zu 10 Jahren aufzubewahren. Soweit wir diese Daten nicht mehr zur Durchführung der Dienstleistungen für Sie benötigen, werden die Daten gesperrt. Dies bedeutet, dass die Daten dann nur noch für Zwecke der Rechnungslegung und für Steuerzwecke verwendet werden dürfen. 11. Kontaktdaten/Datenschutzbeauftragter Die Kontaktdaten der WST-Dirk Stange Werbeatelier GmbH und der gesetzlichen Vertreter der WST-Dirk Stange Werbeatelier GmbH erhalten sie aus unsrem Impressum. Für eine Kontaktaufnahme zum Datenschutzbeauftragten per E-Mail schreiben Sie bitte an kontakt[at]dirk-stange.de 12. Rechtsgrundlagen für die Datenverarbeitung Wir stützen die Verarbeitung von Log-Files und die statistische Analyse der Nutzung unsere Webseite mithilfe von Google-Analytics auf Art. 6 Abs. 1 lit. f DS-GVO. Nach dieser Norm dürfen personenbezogene Daten verarbeitet werden, soweit der Verarbeiter hieran ein legitimes Interesse hat. Bezüglich der Erhebung von log Files besteht unser legitimes Interesse an der Möglichkeit, durch die Log-Files Fehler und eventuelle unberechtigte Zugriffe („Hacking“) nachvollziehen zu können. Die Zusendung eines Newsletters und weiterer Werbemaßnahmen stützen sich auf die Rechtsgrundlage aus Art. 6 Abs. 1 lit. a DS-GVO. Demnach dürfen personenbezogene Daten auf Basis einer Einwilligungserklärung verarbeitet werden. Im Übrigen werden personenbezogene Daten gemäß Art. 6 lit. b auf dieser Webseite nur verarbeitet, soweit dies für die Erfüllung eines Vertrages mit Ihnen notwendig ist. 13. Recht auf „Datenportabilität“ Wir weisen darauf hin, dass wir nach der DS-GVO verpflichtet sind, sämtliche Daten, die Sie uns aktiv auf dieser Webseite übergeben haben (insbesondere die Daten, die Sie im Rahmen der Erstellung Ihres Nutzerkontos eingegeben haben) von uns in einem gängigen Datenbankformat zurückerhalten. Wenn Sie dies wünschen, schreiben Sie uns an: kontakt[at]dirk-stange.de 14. Hinweis auf Recht zur Beschwerde bei einer Datenschutzaufsichtsbehörde Wir weisen Sie darauf hin, dass Sie jederzeit das Recht haben, sich bei einer Datenschutzaufsichtsbehörde über uns zu beschweren. Der Hamburgische Beauftragte für Datenschutz und Informationsfreiheit Klosterwall 6 (Blo ck C), 20095 Hamburg Tel.: (040) 4 28 54 - 40 40 E-Fax: (040) 4 279 - 11811 E-Mail: mailbox[at]datenschutz.hamburg.de Bei Fragen wenden Sie sich bitte an: Dirk Stange imac[at]dirk-stange.eu Tel.: (040) 89 27 37