Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. If you link to another Pen, it will include the CSS from that Pen. If the preprocessor matches, it will attempt to combine them before processing.

+ add another resource

JavaScript

Babel is required to process package imports. If you need a different preprocessor remove all packages first.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Behavior

Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <div class="produtos" >
	<!-- Load produtos -->
	<p class="aviso"> Clique no botão para carregar os produtos </p>
</div>
<div class="buttons">
	<button class="btn">Carregar Produtos</button> 
</div>

<script id="produtoTemplate" type="text/x-handlebars-template">

        <div class="produto produto-{{id}}">
        <!-- Caso promoção retorno true, a div com label é adicionada -->
            {{#if promocao}}
                <div class="promocao">20% Off</div>
            {{/if}}
            <h1 class="titulo">{{titulo}}</h1>
            <img src="{{img}}" alt="{{titulo}}" class="imagem">
            <p class="descricao">{{descricao}}</p>
            <a href="{{url}}" class="link"> Ver Produto </a>
        </div>

</script>
              
            
!

CSS

              
                *
	font-family 'Encode Sans', sans-serif
body
	background-color #27586B
.produtos
	width: 100%
	display flex
	flex-wrap wrap
	justify-content space-between
	margin 25px auto
	.aviso
		text-align center
		width 100%
		color #fff
		font-size 18px
		margin 0
	.produto
		width 45%
		display flex
		flex-wrap wrap
		margin-bottom 20px
		background-color #1c3d4a
		padding 20px
		position relative
		.promocao
			background-color #fff
			position absolute
			top 17px
			right 0
			padding 4px
			color #1c3d4a
			font-weight 800
			transform rotate(44deg)
			font-size 12px
		.imagem
			width 100%
			max-width auto
		.titulo
			font-size 20px
			color #6D92A0
			text-transform uppercase
		.descricao
			font-size 18px
			color #6D92A0
		.link
			width 100%
			background-color #022735
			color #fff
			text-align center
			text-decoration none
			padding 10px 0
.buttons
	width 100%
	display flex
	justify-content center
	.btn
		width 220px
		padding 14px 0
		background-color #022735
		font-size 16px
		border 0
		color #fff
		font-weight 800
		text-transform uppercase
		transition background .1s ease-in-out
		border 1px solid transparent
		&:hover
			background-color #fff
			color #022735
			border 1px solid #022735
			
              
            
!

JS

              
                // Produtos
var produtos = [
    {
        id : 1,
        titulo : 'Produto Handlebars 1',
        img : 'http://via.placeholder.com/250x150',
        descricao : 'Meu primeiro template com Handlebars',
        url : '#',
		promocao : false
    },
        {
        id : 2,
        titulo : 'Produto Handlebars 2',
        img : 'http://via.placeholder.com/250x150',
        descricao : 'Meu primeiro template com Handlebars',
        url : '#',
		promocao : true
    },
        {
        id : 3,
        titulo : 'Produto Handlebars 3',
        img : 'http://via.placeholder.com/250x150',
        descricao : 'Meu primeiro template com Handlebars',
        url : '#',
		promocao : false
    },
    {
        id : 4,
        titulo : 'Produto Handlebars 4',
        img : 'http://via.placeholder.com/250x150',
        descricao : 'Meu primeiro template com Handlebars',
        url : '#',
		promocao : true
    }
]
// Compila os dados no Handlebars

// Adiciona cada produto ao HTML
$('.btn').on('click', function(){
	
	$('.aviso').remove();
	
	var source   = $('#produtoTemplate').html(),
		template = Handlebars.compile( source );
	
	$.each( produtos, function( index, produto ){
    	$('.produtos').append( template( produto ) )
	})
})
              
            
!
999px

Console