"card"
Bootstrap 3.0.0 Snippet by evarevirus

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <!DOCTYPE html><html class=''> <head><script src='//production-assets.codepen.io/assets/editor/live/console_runner-079c09a0e3b9ff743e39ee2d5637b9216b3545af0de366d4b9aad9dc87e26bfd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/events_runner-73716630c22bbc8cff4bd0f07b135f00a0bdc5d14629260c3ec49e5606f98fdd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/css_live_reload_init-2c0dc5167d60a5af3ee189d570b1835129687ea2a61bee3513dee3a50c115a77.js'></script><meta charset='UTF-8'><meta name="robots" content="noindex"><link rel="shortcut icon" type="image/x-icon" href="//production-assets.codepen.io/assets/favicon/favicon-8ea04875e70c4b0bb41da869e81236e54394d63638a1ef12fa558a4a835f1164.ico" /><link rel="mask-icon" type="" href="//production-assets.codepen.io/assets/favicon/logo-pin-f2d2b6d2c61838f7e76325261b7195c27224080bc099486ddd6dccb469b8e8e6.svg" color="#111" /><link rel="canonical" href="https://codepen.io/Bobdacious/pen/qZJroM" /> <style class="cp-pen-styles">body{ font:15px/1.3 'Open Sans', sans-serif; color: #5e5b64; text-align:center; } section, footer, header, aside, nav{ display: block; } h1{ font-family: 'Montserrat', sans-serif; font-size: 40px; margin-bottom: 10px; } .search{ background-color:#5c9bb7; background-image:-webkit-linear-gradient(top, #5c9bb7, #5392ad); background-image:-moz-linear-gradient(top, #5c9bb7, #5392ad); background-image:linear-gradient(top, #5c9bb7, #5392ad); box-shadow: 0 1px 1px #ccc; border-radius: 2px; width: 400px; padding: 14px; margin: 45px auto 20px; margin-top: 20px; position:relative; } .search input{ background:#fff no-repeat 13px 13px; background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU5NEY0RTlFMTA4NzExRTM5RTEzQkFBQzMyRjkyQzVBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU5NEY0RTlGMTA4NzExRTM5RTEzQkFBQzMyRjkyQzVBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTk0RjRFOUMxMDg3MTFFMzlFMTNCQUFDMzJGOTJDNUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTk0RjRFOUQxMDg3MTFFMzlFMTNCQUFDMzJGOTJDNUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4DjA/RAAABK0lEQVR42pTSQUdEURjG8dOY0TqmPkGmRcqYD9CmzZAWJRHVRIa0iFYtM6uofYaiEW2SRJtEi9YxIklp07ZkWswu0v/wnByve7vm5ee8M+85zz1jbt9Os+WiGkYdYxjCOx5wgFeXUHmtBSzpcCGa+5BJTCjEP+0nKWAT8xqe4ArPGEEVC1hHEbs2oBwdXkM7mj/JLZrad437sCGHOfUtcziutuYu2v8XUFF/4f6vMK/YgAH1HxkBYV60AR31gxkBYd6xAeF3VzMCwvzOBpypX8V4yuFRzX2d2gD/l5yjH4fYQEnzkj4fae5rJulF2sMXVrAsaTWttRFu4Osb+1jEDT71/ZveyhouTch2fINQL9hKefKjuYFfuznXWzXMTabyrvfyIV3M4vhXgAEAUMs7K0J9UJAAAAAASUVORK5CYII=); border: none; width: 100%; line-height: 19px; padding: 11px 0; border-radius: 2px; box-shadow: 0 2px 8px #c4c4c4 inset; text-align: left; font-size: 14px; font-family: inherit; color: #738289; font-weight: bold; outline: none; text-indent: 40px; } #products ul{ list-style: none; width: 500px; margin: 0 auto; text-align: left; } ul li{ border-bottom: 1px solid #ddd; padding: 10px; overflow: hidden; } ul li img{ float:left; border:none; margin-right: 15px; } #products ul li p{ margin-left: 75px; font-weight: bold; padding-top: 5px; color:#6e7a7f; } .categories { -moz-box-shadow:inset 0px 1px 0px 0px #97c4fe; -webkit-box-shadow:inset 0px 1px 0px 0px #97c4fe; box-shadow:inset 0px 1px 0px 0px #97c4fe; background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #3d94f6), color-stop(1, #1e62d0)); background:-moz-linear-gradient(top, #3d94f6 5%, #1e62d0 100%); background:-webkit-linear-gradient(top, #3d94f6 5%, #1e62d0 100%); background:-o-linear-gradient(top, #3d94f6 5%, #1e62d0 100%); background:-ms-linear-gradient(top, #3d94f6 5%, #1e62d0 100%); background:linear-gradient(to bottom, #3d94f6 5%, #1e62d0 100%); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#3d94f6', endColorstr='#1e62d0',GradientType=0); background-color:#3d94f6; -moz-border-radius:6px; -webkit-border-radius:6px; border-radius:6px; border:1px solid #337fed; display:inline-block; cursor:pointer; color:#ffffff; font-family:Arial; font-size:15px; font-weight:bold; padding:6px 24px; text-decoration:none; text-shadow:0px 1px 0px #1570cd; } .categories:hover { background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #1e62d0), color-stop(1, #3d94f6)); background:-moz-linear-gradient(top, #1e62d0 5%, #3d94f6 100%); background:-webkit-linear-gradient(top, #1e62d0 5%, #3d94f6 100%); background:-o-linear-gradient(top, #1e62d0 5%, #3d94f6 100%); background:-ms-linear-gradient(top, #1e62d0 5%, #3d94f6 100%); background:linear-gradient(to bottom, #1e62d0 5%, #3d94f6 100%); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e62d0', endColorstr='#3d94f6',GradientType=0); background-color:#1e62d0; } .categories:active { position:relative; top:1px; } .selected { -moz-box-shadow:inset 0px 1px 0px 0px #3dc21b; -webkit-box-shadow:inset 0px 1px 0px 0px #3dc21b; box-shadow:inset 0px 1px 0px 0px #3dc21b; background-color:#32ad1f; -moz-border-radius:6px; -webkit-border-radius:6px; border-radius:6px; border:1px solid #18ab29; display:inline-block; cursor:pointer; color:#ffffff; font-family:Arial; font-size:15px; font-weight:bold; padding:6px 24px; text-decoration:none; text-shadow:0px 1px 0px #2f6627; } .selected:hover { background-color:#30ad4d; } .selected:active { position:relative; top:1px; } #cart { position: fixed; right: 300px; top: 0px; width: 400px; } #cartName { width: 200px; } #cartName ul li p { margin-left: 0px; font-weight: normal; padding-top: 0px; }</style></head><body> <link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'> <h1>Puter Parts</h1> <form> <div class="search"> <input type="text" v-model="searchString" placeholder="Search" /> </div> </form> <button id="GPU" class="categories" @click="selectCategory('Graphics Card')">Graphics Cards</button> <button id="CPU" class="categories" @click="selectCategory('Processor')">Processors</button> <button id="Mobo" class="categories" @click="selectCategory('Motherboard')">Motherboards</button> <div id="products"> <ul> <li v-for="i in products | searchFor searchString | filterBy selectedCategory in 'category'"> <img v-bind:src="i.image" /> <p>{{i.product}}</p> <p>£{{i.price}} <select v-model="quantity[i.id].quantity" number> <option selected>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> <button id="GPU" class="categories" @click="addToCart(i.id)">Add To Cart</button> </p> </li> </ul> </div> <div id="cart" v-show="shoppingCart.length > 0"> <h2>Shopping Cart</h2> <ul> <li v-for="i in shoppingCart"> <p id="cartQuan">{{i.quantity}} X {{i.name}}</p> <p id="cartPrice">{{i.price}} <button @click="removeFromCart(i, i.productId)">X</button></p> </li> <li>Total: £{{ totalPrice }}</li> </ul> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.21/vue.js"></script> <script src="https://cdn.jsdelivr.net/lodash/4.11.2/lodash.min.js"></script> <script src='//production-assets.codepen.io/assets/common/stopExecutionOnTimeout-b2a7b3fe212eaa732349046d8416e00a9dec26eb7fd347590fbced3ab38af52e.js'></script> <script >Vue.filter('searchFor', function (value, searchString) { var result = []; if(!searchString){ return value; } searchString = searchString.trim().toLowerCase(); result = value.filter(function(item){ if(item.product.toLowerCase().indexOf(searchString) !== -1){ return item; } }) return result; }) new Vue({ el: 'body', data: { searchString: "", selectedCategory: "", shoppingCart: [], quantity: [ { "id": "0", "quantity": 1 }, { "id": "1", "quantity": 1 }, { "id": "2", "quantity": 1 }, { "id": "3", "quantity": 1 }, { "id": "4", "quantity": 1 }, { "id": "5", "quantity": 1 }, { "id": "6", "quantity": 1 }, { "id": "7", "quantity": 1 }, { "id": "8", "quantity": 1 }, { "id": "9", "quantity": 1 } ], products: [ { "id": "0", "product": "Asus GeForce GTX 980Ti DS3 Strix", "price": 559.99, "category": "Graphics Card", "image": "https://www.overclockers.co.uk/media/image/thumbnail/GX388AS_119199_105x105.jpg", "inCart": false }, { "id": "1", "product": "EVGA GeForce GTX 980Ti Superclocked ACX 2.0+", "price": 559.99, "category": "Graphics Card", "image": "https://www.overclockers.co.uk/media/image/thumbnail/GX288EA_112617_105x105.jpg", "inCart": false }, { "id": "2", "product": "Asus Radeon R9390X DS3 OC Strix", "price": 329.99, "category": "Graphics Card", "image": "https://www.overclockers.co.uk/media/image/thumbnail/GX373AS_117053_105x105.jpg", "inCart": false }, { "id": "3", "product": "Sapphire Radeon R9390X Nitro", "price": 349.99, "category": "Graphics Card", "image": "https://www.overclockers.co.uk/media/image/thumbnail/GX376SP_121594_105x105.jpg", "inCart": false }, { "id": "4", "product": "Intel Core i7-6700K 4.0GHz (Skylake)", "price": 289.99, "category": "Processor", "image": "https://www.overclockers.co.uk/media/image/thumbnail/CP581IN_114995_105x105.jpg", "inCart": false }, { "id": "5", "product": "Intel Core i5-6600K 3.9GHz (Skylake)", "price": 197.99, "category": "Processor", "image": "https://www.overclockers.co.uk/media/image/thumbnail/CP579IN_114994_105x105.jpg", "inCart": false }, { "id": "6", "product": "AMD Piledriver FX-8 9590 Black Edition 4.70GHz (5.00GHz Turbo)", "price": 161.99, "category": "Processor", "image": "https://www.overclockers.co.uk/media/image/thumbnail/CP336AM_60876_105x105.jpg", "inCart": false }, { "id": "7", "product": "AMD Piledriver FX-8 8350 Black Edition 4.00GHz", "price": 139.99, "category": "Processor", "image": "https://www.overclockers.co.uk/media/image/thumbnail/CP336AM_60876_105x105.jpg", "inCart": false }, { "id": "8", "product": "Asus Maximus VIII Hero Intel Z170 (Socket 1151) ATX Motherboard", "price": 176.99, "category": "Motherboard", "image": "https://www.overclockers.co.uk/media/image/thumbnail/MB651AS_114892_105x105.jpg", "inCart": false }, { "id": "9", "product": "Asus Crosshair V Formula Z AMD 990FX (Socket AM3+) Motherboard", "price": 184.99, "category": "Motherboard", "image": "https://www.overclockers.co.uk/media/image/thumbnail/MB554AS_83151_105x105.jpg", "inCart": false } ] }, computed: { totalPrice: function() { var total = 0 this.shoppingCart.forEach(function(item) { total += item.price * item.quantity }) return total } }, methods: { selectCategory: function(category) { if(category == "Graphics Card"){ var button = 'GPU' document.getElementById(button).className = "selected" document.getElementById('CPU').className = "categories" document.getElementById('Mobo').className = "categories" } else if(category == "Processor"){ var button = 'CPU' document.getElementById(button).className = "selected" document.getElementById('GPU').className = "categories" document.getElementById('Mobo').className = "categories" } else{ var button = 'Mobo' document.getElementById(button).className = "selected" document.getElementById('GPU').className = "categories" document.getElementById('CPU').className = "categories" } if(this.selectedCategory !== category){ this.selectedCategory = category } else{ this.selectedCategory = "" document.getElementById(button).className = "categories" } }, addToCart: function(id) { var id = id var index = this.shoppingCart.length if(this.products[id].inCart == false) { this.products[id].inCart = true this.shoppingCart.$set(index, { productId: id, quantity: this.quantity[id].quantity, name: this.products[id].product, price: this.products[id].price, }) } else { product = _.find(this.shoppingCart, ['productId', id]) product.quantity = product.quantity + this.quantity[id].quantity } }, removeFromCart: function(i, productId) { id = productId this.products[id].inCart = false this.shoppingCart.$remove(i) } } }); //# sourceURL=pen.js </script> </body></html>

Related: See More


Questions / Comments: