{"id":879,"date":"2012-06-17T20:37:26","date_gmt":"2012-06-17T18:37:26","guid":{"rendered":"http:\/\/robert.kolatzek.org\/wblog\/?p=879"},"modified":"2012-06-17T20:37:26","modified_gmt":"2012-06-17T18:37:26","slug":"das-alte-neue-design-und-die-usability","status":"publish","type":"post","link":"https:\/\/blog.kolatzek.org\/wblog\/879\/das-alte-neue-design-und-die-usability","title":{"rendered":"Das alte neue Design und die Usability"},"content":{"rendered":"<p>Nach Monaten (gef\u00fchlten Jahrhunderten) hatte ich wieder Zeit, an meiner Internetseite &#8211; diesem Blog genauer gesagt &#8211; etwas zu schrauben. Seit IE 6 von Microsoft selbst zu Grabe getragen wurde und IE 9 langsam an Verbreitung zunimmt habe ich etwas unruhig geschlafen. Auch wegen der vielen mobilen Browser&#8230;<\/p>\n<p><!--more--><\/p>\n<p>Die neuen Gestaltungsm\u00f6glichkeiten, die die modernen Browser bieten, und die mobile Front mit ihren 480px Breite machten ein Update notwendig. Bewusst habe ich auf Unterst\u00fctzung von IE6 verzichtet. Stattdessen sollen die webkits dieser Welt besser ausgelastet werden.<\/p>\n<p>Die neuen M\u00f6glichkeiten werden nicht um ihrer selbst Willen eingesetzt. Es geh\u00f6rt zur Usability, dem Leser eine angepasste und auf seinem Ger\u00e4t gut lesbare Version bereit zu stellen. Man nennt es &#8222;responsiv&#8220;. Die \u00e4sthetische Wirkung geh\u00f6rt zwar nicht dazu aber es beeinflusst den Leser. (Auf Internetseiten mit ansprechender Optik verweilen die Benutzer l\u00e4nger als auf h\u00e4sslichen. Wie weit diese Tatsache auch die Bereitschaft, l\u00e4ngere Ladezeiten oder andere Unwegbarkeiten hinzunehmen, beeinflusst, ist mir unbekannt. Sch\u00e4tze es aber als f\u00f6rderlich ein.)<\/p>\n<p>Mein anf\u00e4nglicher Plan, das responsive Framework <a title=\"Fluid grid CSS framework for fast, intuitive development of responsive websites. Available in 12, 16 and 24 columns with media queries for all standard devices, clearfix, and optional reset.\" href=\"http:\/\/responsive.gs\/\" target=\"_blank\">responsivegs<\/a> einzusetzen, schlug nach einem Testversuch mit einer Kopie der Startseite des Blogs fehl. Die starren Breitenangaben des Grids machten die Erhaltung des Designs (bewusst f\u00fcr die volle Browser-Breite und sehr &#8222;rechtslastig&#8220; entwickelt) unm\u00f6glich. Die flexible und ebenfalls responsive Alternative <a title=\"Quickly and effortlessly generate your own responsive grid template.\" href=\"http:\/\/responsify.it\/\" target=\"_blank\">responsify<\/a> erwies sich als sehr praktikabel. Nachdem ich mit dem Generator das Grundsystem erstellt habe, konnte ich das HTML st\u00fcckweise umkopieren und das Ergebnis vergleichen. Die Breiten- und Abstandsangaben in Prozent erlauben die volle Ausnutzung des Platzes im Browser. Leider nicht ganz ohne Probleme: Einige Aufl\u00f6sungen f\u00fchren zum Fehlen eines Pixels in der rechten Spalte. Daf\u00fcr kann das Framework ja nichts&#8230; (Nur IE7 bekommt auch eines Sonderbehandlung, weil es sich gewaltig verrechnet.)<\/p>\n<p>Die media-queries waren leider nicht ganz so, wie ich es mir vorgestellt hatte. Ich musste (f\u00fcr die Android-Ger\u00e4te und -Browser, die ich einsetze) etwas nachbessern. Mal ist die Navigation (auf dem Desktop ab ca. 800px rechts) unter dem Artikel zweispaltig (Tablets) und mal einspaltig (Handys). Logo und Slogan bleiben immer oben auf dem Banner mit einem leichten Transparenz-Verlauf des Hintergrunds.<\/p>\n<p>Bei aller Framework-Nutzung und Orientierung an mobilen Ger\u00e4ten (und deren Bandbreiten)&#8230; Eines kann keiner ohne eine eigene Version f\u00fcr diese Ger\u00e4te umgehen: das Herunterladen hoch aufgel\u00f6sten Bilder. Die Banner z. B. werden nur teilweise gezeigt aber ganz heruntergeladen&#8230; Da habe ich auf media-queries von Modernizr zur\u00fcckgegriffen und setzte dem HTML-Tag eigene Klassen, in der Hoffnung, dass die Browser nicht jede url, die irgendwo im CSS vorkommt, auch herunterladen versuchen. Dazu dient die CSS-Regeln &#8222;html.px480 header&#8220;, &#8222;html.px860 header&#8220; und als default &#8222;header&#8220;. Bei &#8222;header&#8220; suche ich (wie bisher) ein Bild aus und merke mir seinen Namen per Coockie, damit nich auf jeder Seite ein neues Banner-Bild angefordert werden muss.<\/p>\n<p>Ich ergriff die Gelegenheit, die sich durch die Einbindung der Modernizr ergeben, und setzte gleicht auf HTML5. Aside, Footer und Article st\u00f6ren die alten Browser recht wenig. Mit einigen Attributen konnte ich ohne gro\u00dfe M\u00fche sogar den Screenreadern unter die Arme greifen. Per Role-Attribute gibt man den Sehbehinderten die M\u00f6glichkeit, durch die Seitenteile semantisch zu navigieren. Mit einer Tastenkombination soll es angeblich m\u00f6glich sein, sofort die Navigationsleiste oder den Artikelinhalt zu erreichen. (Wenn man sich vorstellt, dass diese Menschen sich ansonten alles erst anh\u00f6ren m\u00fcssen, um sich in der Struktur der Seite zu orientieren, dann nimmt man die Accessibility etwas ernster&#8230;)<\/p>\n<p><strong>Responsify<\/strong> bringt im Zip <strong>Modernizr und jQuery<\/strong> mit. Das ist so weit nicht schlimm. Ich benutze es gerne. Nur&#8230; warum m\u00fcssen sie immer getrennt ausgeliefert werden? Die besten HTTP-Requests, die man machen kann, sind diejenigen, die man gar nicht erst startet! jQuery bringt schon WP mit, ohne CDN! So viel Datenschutz muss sein ;-) So habe ich auch unn\u00f6tige transparente Hintergrundbilder oder RSS-Icons entfernt. (<em>Gleiches Schicksal traf den Anti-Software-Patente-Banner, der vom fremden Server eingebunden wurde&#8230; Ich habe meine Meinung dazu nicht ver\u00e4ndert. Ich m\u00f6chte nur meine Leser nicht mit m\u00f6glichen Unzul\u00e4nlichkeiten fremder Server oder unn\u00f6tigen kBs unterwegs bel\u00e4stigen.<\/em>)<\/p>\n<p>Bei gr\u00f6\u00dferen Umbauten lohnt es sich, neue Technologien auszuprobieren. Aus einem <a title=\"Eine sehr gute Pr\u00e4sentation von Bermon Painter - als slides oder als PDF zu haben\" href=\"https:\/\/speakerdeck.com\/u\/bermonpainter\/p\/css-pre-processors-stylus-less-sass\">direkten Vergleich dreier CSS-Pr\u00e4prozessoren<\/a> habe ich den stylus ausersehen. Less ginge auch, bietet aber etwas weniger Funtionen. Sass ist m\u00e4chtiger&#8230; aber ich wollte meinem Rechner noch eine Programmiersprache (ruby) mit seinen Abh\u00e4ngigkeiten ersparen. Und wenn man schon die Tastenschl\u00e4ge sparen will, dann aber immer: Einr\u00fcckungen statt geschweifte Klammern! Python macht vor, wie es funktionieren kann. Besonders hilfreich fand ich die Variablen. Wenn man mehrere Seiten mit \u00e4hnlichem Design ausstatten muss, sind sie unentbehrlich. Mixins sind auch ganz nett, besonders f\u00fcr Prefixe. Das CSS abzutippen w\u00e4re mir zu viel. Also habe ich meine CSS &#8222;decompilieren&#8220; lassen. Es lie\u00df sich auch wieder &#8222;compilieren&#8220;. So weit, so gut. Dann habe ich noch hier und da nachgebessert: gruppiert, Variablen erstellt, IE-filter-Attribute in Anf\u00fchrungszeichen gesetzt (wenn sie kein literal sind, produziert stylus st\u00f6rendes M\u00fcll in der CSSDatei). Mixins wollten auch keine Argumente wie &#8222;rgba(x,x,x,y)&#8220; so wie sie waren an die Zeilen durchreichen. &#8222;1px 1px 3px rgba(255,255,255,0.5)&#8220; als Variable an das Mixin \u00fcbereben, funktionierte es wiederum&#8230;<\/p>\n<p>Ich h\u00e4tte gerne noch ein Request eingespart, die &#8222;style.css&#8220;-Basis aus responsify. Ein &#8222;@import &#8217;style.css'&#8220; f\u00fchrte zu keinem include an der angegebenen Stelle. So habe ich auch diese CSS-Datei &#8222;decompiliert&#8220; und &#8222;@import style&#8220; eingesetzt. Leider ist stylus mit seiner eigener Leistung unzufrieden: vom node.js wird eine Ausnahme geworfen &#8211; an einer v\u00f6llig harmlosen Stelle. Dazu f\u00e4llt mir nichts ein. Alle Vermutungen erwiesen sich als falsch. Mit &#8222;\/stylus &#8211;include-css &#8211;compress xx.styl&#8220; macht stylus eine unangetastete Inklusion der mit &#8222;@import&#8220; definierten CSS-Datei in die .style-Datei m\u00f6glich. Ja mehr noch: das &#8222;&#8211;compress&#8220; sorgt daf\u00fcr, dass nach der Umwandlung von .styl in .css Zeilenumbr\u00fcche und unn\u00f6tige Leerzeichen aus diesem Part entfernt werden.<\/p>\n<p>Leider sind die erstellten CSS-Regeln nicht gerade auf Performance getrimmt. Einige :hover-Elemente reagieren recht tr\u00e4ge. Auch auf meine Lieblingsschriften m\u00f6chte ich nicht verzichten&#8230; Worauf ich gut verzichten kann, sind WP-Plugins, die einen Rattenschwanz an CSS- oder JS-Dateien f\u00fcr das Syntax-Highlighting einbinden. Daf\u00fcr gibt es genug Alternativen, was aber Portierung der Auszeichner in den Artikeln bedeutet.<\/p>\n<p>Ich bin mit dem Ergebnis zufrieden. Bei IE habe ich Abstriche gemacht. Die Requests sind halbiert. Die Accessibility ist wenigstens etwas verbessert. Der Sprung ins HTML5-Zeitalter geschafft&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nach Monaten (gef\u00fchlten Jahrhunderten) hatte ich wieder Zeit, an meiner Internetseite &#8211; diesem Blog genauer gesagt &#8211; etwas zu schrauben. Seit IE 6 von Microsoft selbst zu Grabe getragen wurde und IE 9 langsam an Verbreitung zunimmt habe ich etwas unruhig geschlafen. Auch wegen der vielen mobilen Browser&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[2],"tags":[26,30,48,93,119],"class_list":["post-879","post","type-post","status-publish","format-standard","hentry","category-allgemeines","tag-css","tag-design","tag-html","tag-responsible","tag-usability","entry"],"_links":{"self":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts\/879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/comments?post=879"}],"version-history":[{"count":0,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/posts\/879\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/media?parent=879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/categories?post=879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kolatzek.org\/wblog\/wp-json\/wp\/v2\/tags?post=879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}