This presentation was given at the Adobe Camp Brazil 2012 meet-up held in MaceiĆ³, Alagoas, Brazil on Saturday April 28th. The slides are supporting the presentation, and do not have enough textual information to be understood by themselves.
The presentation is written in HTML5 and uses some features that are only supported by the most recent browsers. It was developed with the latest Chrome nightly browser (requires filter shorthands support). The presentation can be read with Firefox 11 or Chrome 18 but with some limitation because of the lack of filter shorthands support.
You can navigate with the left and right arrow keys and with the up/down keys to drill into sections.
vhardy@adobe.com
April 28th 2012
Created with CSS 3D Slideshow - by Hakim El Hattab
had we found the creativity treasure?
sorry, you cannot use your web graphics on the web!
<canvas>
and SVGrocket icon by John O'Shea, from The Noun Project
<rect ... > <!-- another box!!!! --> <circle cx="10" cy="20" r="50" /> <ellipse ... /> <polygon ... /> <line ... /> <polyline ... /> <path .../>
Icon by Adrijan Karavdic, from The Noun Project
<!doctype html> <html><body> <style> #elephant { fill: #888; stroke: white; stroke-width: 2px; transition: fill 1s linear, stroke 1s linear; } #elephant:hover { fill: #c00; stroke: gold; } </style> <svg ... > <circle cx="10" cy="20" r="50" /> <g id="elephant" ... /> <path .../> </g> </svg> </body></html>
<img> <video> <canvas>
provide many opportunities for creativity such as video capture, image processing, bridge between declarative and imperative programming.
we have gone a long way
web fonts are widely available
no excuses (not to use)
/* Google Fonts */ @import url(http://fonts.googleapis.com/css?family=Vollkorn);
<!-- Typekit --> <script type="text/javascript" src="http://use.typekit.com/[your-typekit-id-here].js"></script> <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
beware of browser behaviors such as faux bold
pepper icon from The Noun Project
<path id="slide" d="M-276-270c39 ..." /> <text font-size="55" font-family="caflish-script-pro"> <textPath xlink:href="#slide" start-offset="10%"> too hot to be true? </textPath> </text>
#my-box { background: <background-style>; } #my-css-text { color: <color-value>; } #my-shape, #my-svg-text { fill: <paint-server> fill-opacity: <opacity-value> }
#my-box { border: <border-style>; } #my-css-text { /* only in -webkit-stroke-color and -webkit-stroke-width */ } #my-shape, #my-svg-text { stroke: <paint-server> stroke-opacity: <opacity-value> }
emulated with svg
#my-box { box-shadow: <shadow-definition> } #my-css-text { text-shadow: <text-shadow-definition> }
See the text-shadow and box-shadow specifications and the box shadow and the text shadow generators
<div id="my-element">...</div>
<style>
#my-element {
filter: grayscale(1);
}
</style>
See the Filter Effects 1.0 shorthands draft
original
grayscale(1)
sepia(0.8)
saturate(0.2)
hue-rotate(90deg)
opacity(0.2)
invert(0.5)
brightness(0.25)
contrast(0.5)
blur(6px)
drop-shadow(...)
picture from iStockPhoto
<filter id="inset-shadow" x="-10%" y="-10%" width="150%" height="150%"> <feFlood flood-color="rg(62,24,22)" /> <feComposite in2="SourceAlpha" operator="out" /> <feGaussianBlur stdDeviation="3"/> <feOffset dx="2" dy="4"/> <feComposite in2="SourceAlpha" operator="in" /> <feMerge> <feMergeNode in="SourceGraphic"/> <feMergeNode/> </feMerge> </filter>
works on svg text now
works on svg content now
<style> #myElement { filter: custom(url(flag.vs) url(scale.fs), 20 20, txf rotateX(30deg), amount 0.5); } </style> <div id="myElement">..</div>
See the web visual effects presentation
#my-element {
blend-mode: <blend-value>;
}
See the CSS Compositing and Blending 1.0 draft
Glass and bottle icons from The Noun Project
<canvas>
?<canvas>
as well<canvas>
with proof of concept done in Firefox and WebKit<canvas>
?A lot more coming:
<style> #regionA, #regionB, #regionC { flow-from: article; } #article-content { flow-into: article; } </style> <div id="grid"> <div id="regionA"></div> <div id="regionB"></div> <div id="regionC"></div> </div> <div id="article-content">...</div>
<style> #floatA { float: left; shape-outside: circle(50%, 50%, 50%); } #exclusionB { wrap-flow: both; shape-outside: polygon(10px 10px, ...); grid-cell: a; } </style> <div id="grid"> ... <div id="floatA">...</div> <div id="exclusionB">..;</div> </div>
<style> #red-rocket { transform-origin: 50% 50%; transform: rotateY(0deg) rotateX(0deg); transition: transform 1s linear; } #red-rocket.txf { transform: rotateY(30deg) rotateX(20deg); } </style> <g id="red-rocket" <path d=".." /> </g>
emulated example: transform on <img> with SVG src instead of transform on SVG <path> or <g> element directly.
see the CSS transform draft
leading the web to its fullgraphical
potential
Icons from the Noun project
Filter sample image and background from iStockPhoto
Textures from Subtle Patterns
Textures from stock.xchng
Fonts