A (very!) simple demo component using Google Polymer.
Whats interesting about this is not the actual implementation of the flip etc but the fact that the behaviour is now abstracted away into an external resource, and that we can choose what is exposed to that resource. Here's how it works:
<link rel="import" href="https://fiery-torch-7498.firebaseapp.com/faceflip.html">
<face-flip> <span class="title">Managing Director</span> <span class="name">Bob Baboon</span> <img src="images/baboon_suit.jpg"/> </face-flip>
So a very simple structure, a couple of spans and an image - the minimum unique elements for each instance.
<template> <div class="face-flip-container" onclick="this.classList.toggle('flipped');"> <div class="front"> <h2> <content select=".title"></content> <content select=".name"></content> </h2> </div> <div class="back"> <content select="img"></content> </div> </div> </template>
The markup within each face-flip tag is injected into the content tags, ie: <content select=".title"></content>
This type of distributed/syndicated/franchised content is a huge part of the business model of the web and Polymer/web components have great potential in this area.