Playing with it and build a simple template_fill function
A Pen by Wolf Wortmann on CodePen.
Playing with it and build a simple template_fill function
A Pen by Wolf Wortmann on CodePen.
| <h1>HTML5 Template Tag</h1> | |
| <h2>the browser did't render it but parses the HTML inside & preload resources</h2> | |
| <div class="target_box"></div> | |
| <template data-template="user"> | |
| <div class="user"> | |
| <img class="avatar" src="{img}" alt="{first_name}'s avatar"> | |
| <div class="data"> | |
| <h1>{first_name} {last_name}</h1> | |
| <h2>{title}</h2> | |
| </div> | |
| </div> | |
| </template> |
| $(document).ready(function(){ | |
| fill_template('user',{ | |
| img: "http://files.elementcode.de/img/face.svg", | |
| first_name: "John", | |
| last_name: "Doe", | |
| title: "Ipsum Person" | |
| }); | |
| }) | |
| function fill_template(template, data){ | |
| var set = { | |
| target_selector: '.target_box', | |
| template, | |
| } | |
| set.template = $('template[data-template="'+template+'"]').html(); | |
| $.each(data, function(key, value){ | |
| var regex = new RegExp('{'+key+'}', 'gi'); | |
| set.template = set.template.replace(regex, value); | |
| }); | |
| $(set.target_selector).append(set.template); | |
| } |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| *{ | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| template{/* We need this only for browsers, that did't understand HTML5 :/ */ | |
| display: none; | |
| } | |
| body{ | |
| background-color: rgb(54,53,56); | |
| font-family: 'Roboto', sans-serif; | |
| } | |
| body>h1{ | |
| font-weight: 300; | |
| color: rgb(255,255,255); | |
| text-align: center; | |
| margin: 60px 60px 30px 60px; | |
| } | |
| body>h2{ | |
| font-weight: 300; | |
| text-align: center; | |
| color: rgb(255,255,255); | |
| max-width: 400px; | |
| margin: auto; | |
| } | |
| .target_box{ | |
| width: 410px; | |
| height: 150px; | |
| position: absolute; | |
| left:0;top:0;right:0;bottom:0; | |
| margin: auto; | |
| box-shadow: 5px 5px 10px 1px rgba(0,0,0, .3); | |
| border-radius: 2px; | |
| overflow: hidden; | |
| } | |
| .user{ | |
| background-color: rgb(78,144,226); | |
| color: rgb(54,53,56); | |
| width: 100%; | |
| height: 100%; | |
| padding: 20px; | |
| display: -webkit-box; | |
| display: -webkit-flex; | |
| display: -ms-flexbox; | |
| display: flex; | |
| } | |
| .user .avatar{ | |
| border-radius: 50%; | |
| background-color: rgba(0,0,0, .1); | |
| height: 100px; | |
| width: 100px; | |
| padding: 10px; | |
| } | |
| .user .data{ | |
| border-left: 1px solid rgba(0,0,0, .1); | |
| padding: 0 30px; | |
| margin-left: 20px; | |
| } | |
| .user h1{ | |
| font-weight: 400; | |
| font-size: 2.4em; | |
| } | |
| .user h2{ | |
| font-weight: 300; | |
| } |
| <link href="http://fonts.googleapis.com/css?family=Roboto:400,300" rel="stylesheet" /> |
Really liked this codepen snippet