JSFiddle - React, Tailwind, and code Playground

by rich_harris

HTML

<main></main>

<script id='template' type='text/ractive'>
    <p>box heights:</p>
    {{#each boxes :i}}
        <p>{{i+1}} ({{size}}): {{heights[i]}}</p>
    {{/each}}
    
    {{#each boxes :i}}
        <div class='box {{size}}' decorator='initHeight:{{i}}'></div>
    {{/each}}
</script>

CSS

body {
    font-family: 'Helvetica Neue', arial, sans-serif;
    font-weight: 200;
    color: #353535;
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 200;
}

.error {
    color: #d00;
    font-family: monospace;
}

.box {
    width: 100px;
    background-color: #333;
    margin: 0 0 1em 0;
}

.small {
    height: 50px;
}

.medium {
    height: 100px;
}

.large {
    height: 150px;
}

JavaScript

var ractive = new Ractive({
    el: 'main',
    template: '#template',
    data: {
        boxes: [
            { size: 'small' },
            { size: 'medium' },
            { size: 'large' }
        ]
    },
    decorators: {
        initHeight: function ( node, index ) {
            this.set( 'heights[' + index + ']', node.offsetHeight );
                     
            return { teardown: function () {} };
        }
    }
});