Ein paar Dinge vom Chrome Dev Summit 2014

Avatar of Chris Coyier
Chris Coyier am

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

Ich durfte die letzten zwei Tage auf dem Chrome Dev Summit verbringen (Danke Paul Kinlan für die Einladung!) Ich habe mir ein paar Dinge notiert, die mir aufgefallen sind.


Es gab eine kurze Erwähnung der manifest.json-Datei, von der ich noch nie gehört hatte. Anscheinend ist das eine Chrome-Sache, die wichtig für Erweiterungen und Ähnliches ist, aber auf das Web übertragen werden kann (oder werden könnte?).

Die Idee ist, dass man vieles, was in den <head> kommt, dort unterbringen könnte. Nicht lebenswichtige Dinge wie den Titel, Meta-Tags und Ähnliches. Ich nehme an, das bereinigt das Dokument ein wenig (auf Kosten einer Anfrage), aber wichtiger ist, dass man so mehr in diese "ersten 14 KB" packen kann – was für das Laden des kritischen Pfades wichtig ist.


Apropos Meta-Tags, hier ist ein neues

<meta name="theme-color" content="#db5945">

Nur eine einfache Möglichkeit, das Aussehen Ihrer Website in die Browser-Oberfläche einfließen zu lassen (zumindest unter Chrome für Android). Das passt zu aktuellen Designtrends (z. B. all die Transparenz / Farbverläufe, die in Yosemite zu sehen sind).


Wahrscheinlich war das aufregendste für mich die Rede über das Übertragen von Elementen über Seitenaufrufe hinweg.

1. Teilen Sie der aktuellen Seite mit, was Sie übertragen möchten

<meta name="transition-elements" content="#move-me, .move-all-these">

2. Verknüpfen Sie eine spezielle CSS-Datei nur für diese Übergänge

Um den Übergang vor dem Ausblenden durchzuführen

<!-- I imagine you'd defer loading of this one -->
<link rel="transition-exiting-stylesheet" href="page-transitions.css">

Oder um ein Element zum neuen Ort auf der eingehenden Seite zu übertragen

<!-- But this one you'd want to link up right at the top -->
<link rel="transition-entering-stylesheet" href="page-transitions.css">

3. Verwenden Sie @keyframes, um die Elemente zu verschieben

@keyframes moveToNewPosition {
  from { /* where ever it was before */ }
  to { top: 0; }
}

#move-me {
  animation: moveToNewPosition 0.5s;
}

Sicherlich wurden größere, weitaus wichtigere Dinge besprochen, die die Zukunft des Webs beeinflussen. Aber hey, ich mag Tricks. Anscheinend wurde dies hinter einem Flag in Chrome 38 veröffentlicht, aber ich hatte noch keine Zeit, es zum Laufen zu bringen.


Ein vorherrschendes Thema, das heutzutage in der gesamten Branche präsent ist, ist, dass wir, wenn wir wollen, dass das Web "gewinnt" (das tun wir, es ist gut für die Welt), sicherstellen müssen, dass es im Wettbewerb mit nativen Apps steht. Das bedeutet Dinge wie "installierbare" Websites (Präsenz auf Startbildschirmen), Offline-Funktionen und echte (Push-)Benachrichtigungen.

Von den beiden letzteren ist Service Workers die Lösung. Es ist größtenteils über meinen Kopf hinaus, aber so wie ich es verstehe, ist es ein Zugang zu einigen Low-Level-Web-Sachen, die wir noch nie zuvor hatten. Wie weitaus bessere Kontrolle über Offline/Cache, als wir sie zuvor hatten (es ist nicht nur "eine Liste von Dateien, die lokal gespeichert werden sollen", wie frühere Versuche waren).

Service Workers sind der Ort, an dem Sie Benachrichtigungen registrieren (d. h. navigator.push.register()). Selbst wenn eine Website geschlossen ist, können Sie (irgendwie) Benachrichtigungen erhalten. Desktop Safari hat sie, aber ich denke, das ist proprietär. Da es mehrere Wege geben wird, werden Zwischenhändler wie Roost sicher zu einer Möglichkeit, sie mit weniger Komplexität zu nutzen.

Die Idee ist, die Grenze zwischen nativen Apps und Websites besser zu verwischen, und dann wird der Rest dessen, was das Web großartig macht (plattformübergreifend, URLs, Allgegenwart...), es zum Sieg führen.


Es war cool, Paul Lewis über die Gestaltung einer echten Website (der Chrome Dev Summit-Website selbst) sprechen zu hören. Ich denke, wir alle haben mittlerweile einige "Material Design"-Sachen gesehen, wie expandierende Bereiche. Aber das ist meistens in mobilen Apps. Es ist nett zu sehen, wie es hier in responsiven Design funktioniert.

Das Ziel überall für ein ruckelfreies Gefühl ist "60fps". Sechzig Bilder pro Sekunde. Paul sprach viel darüber, wie man das auf dieser Website erreicht, einschließlich kleiner interessanter Details wie der Tatsache, dass man nicht immer 60fps braucht, sondern nur, wenn sich etwas bewegt. Wenn Sie also teure Operationen verschieben können, tun Sie das, wenn sich nichts bewegt.

Ich habe versucht, dieses GIF in 60fps aufzunehmen, aber es ist nicht ganz so flüssig wie das Original.

Paul animierte die (veraltete) clip-Eigenschaft in CSS, um vieles davon zu tun. Ich sprach mit ihm darüber und er sagte, er hätte eine bessere Leistung daraus erzielt als mit dem neueren clip-path.

Es ist jedoch keine reine CSS-Angelegenheit. Jede Animation wird im Grunde wie folgt behandelt:

  • Sammeln Sie viele Informationen über das aktuelle Element über getBoundingClientRect();
  • Animieren Sie diese Positionen zu neuen Positionen

Clever, da man nichts fest in CSS einstellen muss (oder im Voraus wissen muss), um diese Animationen durchzuführen. Der Seitenfluss kann völlig normal bleiben. Ich vermute, wir werden in Zukunft viel von dieser Art von Dingen sehen. Finden Sie heraus, was in JS passiert, animieren Sie mit CSS.

Hier ist sein Vortrag (und von dort aus können Sie zu allen anderen gelangen)

Verpassen Sie nicht den Teil über die Verwendung von DevTools zur Inspektion und Steuerung von Animationen. Wie das Verlangsamen, das Anzeigen, welche Elemente betroffen sind, und das Durchsuchen der gesamten Animation mit einem Schieberegler.


Ich könnte mich irren, dass Animationen größtenteils in CSS bleiben, da die Web Animations API kommt.

Eine für Autoren sichtbare Funktion ist .animate() – die so ziemlich wie jQuery (oder Velocity) .animate() ist, bei der Sie ihr einige CSS-Eigenschaften und Werte übergeben und sie dorthin animiert. Es ist jetzt einfach nativ, anstatt eine Bibliothek zu benötigen. Ich stelle mir vor, dass Dinge wie GSAP beginnen werden, native Unterstützung zu erkennen und diese zu nutzen oder auf rAF oder weiter zurückzufallen.

Ich habe mit Alex Danilo darüber gesprochen und ein besseres Verständnis gewonnen. Ich schätze, das Wichtige ist, dass dies nicht nur eine neue API für uns Autoren ist, sondern eine ganze Animations-Engine im Hintergrund. Anstatt also drei verschiedene Animations-Engines (CSS-Übergänge, die etwas anderes waren als CSS-Animationen, die etwas anderes waren als SMIL), ist es nur eine Engine, die alles verwendet.

Ich habe Gerüchte gehört, dass die SMIL-Unterstützung aus Blinks SVG-Unterstützung entfernt wird, und wollte das eigentlich hören. Anscheinend liegt der Ursprung darin, dass es einfach schlecht ist, dass es seine eigene Animations-Engine ist und die Quelle für ziemlich viele Sicherheitsprobleme darstellt. Jetzt gibt es anscheinend einen Mann, der eingestellt wurde, um zu sehen, ob er SMIL unter der Haube die Web Animations API nutzen lassen kann. Wenn ja, großartig, wenn nicht, wird SMIL so selten verwendet (und für eher unwichtige Dinge wie Spinner), dass es entfernt werden könnte.

Meine Sorge ist, dass SMIL einige ziemlich coole Dinge kann, von denen ich nicht zu 100% sicher bin, dass die Web Animations API sie kann, wie Shape Morphing und das Auslösen von Animationen durch Ereignisse (oder andere Animationen).


Es gab viel Polymer-Gerede. Sie sind mit Polymer an einem interessanten Punkt, was das Verständnis der Entwickler angeht. Ich glaube, viele Leute denken dabei an "ein Web-Komponenten-Polyfill", aber

  • Web Components ist eigentlich nur ein Überbegriff für vier verschiedene Technologien: Templates, Custom Elements, Shadow DOM und HTML Imports. (gute Anleitung von Googles Rob Dodson).
  • Jede dieser Technologien hat einen anderen Polyfill
  • Keiner dieser Polyfills ist Polymer

Polymer ist

  • Eine Bibliothek, die die Arbeit mit Web Components einfacher und leistungsfähiger macht
  • Eigentlich sehr klein: 6 KB komprimiert.

Ein benutzerdefiniertes Element mit einem benutzerdefinierten Shadow DOM hat eine Grenze. Ähnlich wie ein iframe, bei dem die Styles der Elterngruppe nicht durchdringen und die Styles darin nicht austreten. Das ist *wirklich* cool, aber vielleicht nicht immer ideal, denn wenn Sie eine ganze Website um diese Komponenten herum aufbauen, möchten Sie vielleicht, dass Ihre Styles diese Grenzen durchdringen und Dinge stylen, wie wir es von CSS gewohnt sind.

Es gab mehrere Versuche mit Shadow DOM durchdringenden CSS-Selektoren, wie .outside ^^ .inside, eine Pseudo-Klasse, die ich vergessen habe, wie .outside:shadow(.inside). Es gibt eine, die jetzt in Chrome funktioniert, wie .outside /deep/ .inside, aber anscheinend wird das auch nicht die Lösung sein (schwer schnell zu machen, war ein Grund, den ich hörte).

Ich bin gespannt auf eine Lösung hier, denn sie wird das Styling von SVG <use> durch die Shadow DOM-Grenze beeinflussen, was ziemlich interessant sein sollte.


Es gab auch viel "Material Design"-Gerede. Ich fühle mich aus irgendeinem Grund immer, als müsste ich es in Anführungszeichen setzen. Ich mag es sehr, aber ich habe das Gefühl, es ist nur der Name einer Sache, keine echte Sache. Es ist eine Musterbibliothek. Es ist eine Reihe von Richtlinien. Es ist einfach schlichtes, geschmackvolles Design. Ich stimme Khoi Vinh hier zu

Ich bin mir nicht sicher, ob Material Design viel Beachtung finden würde, abgesehen von der Google-Verbindung. Zur Protokollierung: Ich finde Material Design als schöne Arbeit und es ist sicherlich attraktiv, aber die Rhetorik darum erscheint mir viel heiße Luft.

Ein riesiges Unternehmen wie Google mit zig Eigenschaften braucht ein kohärentes System, um alles zusammenzuhalten, und jetzt haben sie es, und das ist großartig. Du und ich können davon lernen, aber wir müssen es nicht direkt verwenden oder es seltsam in lockere Gespräche einfügen. Fühlen Sie sich frei, das bei Ihrer nächsten Cocktailparty nicht zu verwenden

„Wie, ich habe das Gefühl, dass diese Material Design-Bewegung das Arts and Crafts-Bewegung des späten 19. Jahrhunderts parallelisiert, da es darum geht, einfache Formen zu schaffen. Es geht darum, sparsam und sorgfältig mit dem umzugehen, was wir haben. Es geht darum, zu dem zurückzukehren, was einfach und wichtig ist, Mann.“


Chris Palmer sprach viel über Transport Layer Security (TLS). Ich nannte es immer SSL, aber anscheinend ist das die alte Version. Im Grunde URL-Adressen, die mit https:// beginnen.

Es gibt einen großen Vorstoß, das gesamte Internet so zu gestalten, und Chris hat es nachdrücklich unterstützt. Ohne es kann jeder, der sich dazwischen befindet (viele Leute), die übermittelten Daten manipulieren. Es ist für einige ISPs zur Standardpraxis geworden, ihre eigene Google AdSense-ID in den HTML-Code von Websites einzufügen, anstelle der ID des Website-Eigentümers. Das ist Wahnsinn. Kann nicht mit HTTPS gemacht werden, da das, was über die Leitung geht, verschlüsseltes Kauderwelsch ist.

Ein Gegenargument hierzu ist, dass HTTPS "langsam" ist, und wie alle guten Mythen steckt auch hier etwas Wahres drin. Es gibt einige Teile, die Millisekunden dauern können. Aber vieles davon kann durch allgemein kluges Handeln (wie das Zusammenfassen von Anfragen) gemildert werden. Plus, viel moderner Kram, wie das sehr fantastische Zeug in HTTP2 und Service Workers, erfordert HTTPS, also ist es wirklich Zeit, es zu tun.

Ich denke, das ist auf CSS-Tricks einfach genug, aber auf CodePen kann jeder leicht auf unsichere Ressourcen verlinken, daher müssen wir bewerten, wie die UX für eine reine HTTPS-Einrichtung aussieht.


PUH! Das ist viel zu lernen. Es gab dort viel mehr als die wenigen Dinge, die ich abgedeckt habe. Und ich komme gerade von zwei Tagen auf der An Event Apart, also ist mein Gehirn ziemlich voll.