<h3>Check out our lastest hires! <small>Straight from our employee API!</small></h3>
<ul class="employee-list js-employee-list"></ul>
* {
box-sizing: border-box;
}
.employee-list {
background: lavender;
padding: 2rem 0.5rem;
border: 1px solid royalblue;
border-radius: 0.5rem;
max-width: 320px;
}
.employee {
list-style: none;
}
.employee + .employee {
padding-top: 0.5rem;
}
.employee:after {
content: ' ';
height: 0;
display: block;
clear: both;
}
.employee-photo {
float: left;
padding: 0 0.5rem 0.5rem 0;
}
// wrap things in an IIFE to keep them neatly isolated from other code.
(() => {
// strict mode to prevent errors and enable some ES6 features
'use strict'
// takes an employee and turns it into a block of markup
function employee_markup (employee) {
return `<li class="employee">
<img src="${employee.picture.thumbnail}" alt="Photo of ${employee.name.first}" class="employee-photo">
<div class="employee-name">${employee.name.first} ${employee.name.last}</div>
<div class="employee-location">${employee.location.city}, ${employee.location.state}</div>
</li>`
}
// let's use jQuery's ajax method to keep the code terse.
// Pull data from randomuser.me as a stub for our 'employee API'
// (recall that this is really just a fake tweet list).
$.ajax({
url: 'https://randomuser.me/api/',
dataType: 'json',
// query string parameters to append
data: {
results: 3
},
success: (data) => {
// success! we got the data!
let employees_markup = ''
data.results.forEach((employee) => {
employees_markup += employee_markup(employee)
})
$('.js-employee-list').append(employees_markup)
}
})
})()
This Pen doesn't use any external CSS resources.