Opt-Out Responsive Design?

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Leser Glynn schreibt:

Ich frage mich, ob Sie jemals ein responsives Webdesign gesehen haben, das einen „gesamte Seite anzeigen“-Link enthielt. Ich weiß, dass wir beim Entwickeln eines responsiven Designs Inhalte nicht komplett verstecken sollten. Einige Benutzer ziehen es jedoch möglicherweise vor, auf ihren Geräten zu zoomen und zu kneifen und klassische horizontale Menüs zu verwenden.

Haben Sie ein Beispiel dafür gesehen und wie glauben Sie, könnte man das angehen?

Ich halte das für eine ziemlich interessante Frage.

Es gab eine Zeit, da haben wir jeden auf eine mobile Version umgestellten oder mit einem „Vollständige Website anzeigen“-Link versehenen Website kritisiert. Aber mit dem Aufkommen des responsiven Designs sehen wir das immer seltener. Tatsächlich bin ich mir nicht sicher, ob ich es jemals auf einer Website gesehen habe, die ausschließlich responsives Design verwendet, um mobile Bildschirmgrößen zu berücksichtigen.

Warum sehen wir kein Opt-out-Responsive-Design? Meine Vermutung ist zweigeteilt:

  1. Es ist technisch etwas anspruchsvoll zu implementieren und es gibt wenig Vorbilder.
  2. Es ist ein Eingeständnis, dass man die responsive Gestaltung nicht sehr gut gemacht hat.

Letzteres ist wahrscheinlich der größere Faktor. So nach dem Motto: Warum erstellen wir dieses responsive Design überhaupt, wenn wir uns nicht *sicher* sind, dass es eine bessere Benutzererfahrung ist?

Eine möglicherweise legitime Situation sind unterschiedliche Anwendungsfälle für verschiedene Benutzer. Vielleicht besuchen *die meisten* Benutzer die Website, um zu lesen, und Ihr responsives Design eignet sich sehr gut zum Lesen. Aber einige Benutzer kommen, um eine andere Aufgabe zu erledigen, und für sie behindert das responsive Design.

Umsetzung

Ich habe das noch nicht gemacht, aber theoretisch würde ich es so machen. Das wird einfacher, wenn Sie einen Desktop-First-Ansatz gewählt haben und nicht einen Mobile-First-Ansatz (würde ich denken).

1. Query-Parameter zum Umschalten

Vielleicht

http://yoursite.com/?resp=no

2. Viewport-Meta-Tag entfernen und Body-Element klassifizieren

Dann prüfen Sie diesen Parameter. Ich verwende hier nur PHP, aber es könnte alles sein. Wir entfernen das Viewport-Meta-Tag nur, wenn sie kein responsives Design wünschen, und fügen eine Klasse zum Body-Element hinzu.

<head>

   <title>My cool site huzzah</title>

   <?php
     if (!$_GET['resp'] == 'no') { ?>
       <meta name="viewport" content="width=device-width">
   <?php } ?>

</head>

<body class="<?php if (!$_GET['resp'] == 'no') { echo "resp"; } ?>">

Sie werden wahrscheinlich etwas komplexer vorgehen müssen. Sie werden einen Cookie setzen wollen (oder vielleicht localStorage verwenden), um die Präferenz des Benutzers zu speichern. Dann prüfen Sie nicht *nur* den Query-Parameter, sondern *auch* den Wert dieses Cookies, bevor Sie die Entscheidung treffen, das Viewport-Meta-Tag wegzulassen oder nicht (und die Body-Klasse hinzuzufügen).

3. Medienabfrage-Styles qualifizieren

Eine Möglichkeit wäre, das Laden eines separaten Stylesheets auszuschließen, in dem alle Ihre responsiven Stile enthalten sind. Das könnte für Sie funktionieren, aber ich bin generell dafür, so viel CSS wie möglich in einer Datei zu halten. Wenn Sie es in einer Datei belassen, können Sie diese „resp“-Body-Klasse verwenden, um sicherzustellen, dass die Medienabfrage-Styles nicht greifen, wenn sie es nicht sollten.

.page-wrap { width: 80%; }

@media (max-width: 600px) {
  .resp .page-wrap { width: 100%; }
}

Auf diese Weise greifen die responsiven Stile *nur*, wenn die Medienabfrage übereinstimmt *und* die entsprechende Klasse am Body vorhanden ist, die anzeigt, dass responsive Stile verwendet werden dürfen.

4. Gute Benutzeroberfläche zum Umschalten bereitstellen

Was auch immer Sie sich einfallen lassen, stellen Sie sicher, dass klar ist, wie man zwischen den beiden Website-Stilen wechselt und dass die Cookie-Einstellungen ordnungsgemäß vorgenommen werden.