parent
18b0851332
commit
b414f37f3a
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>28 github profiles</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form action="" id="form">
|
||||||
|
<input type="search" name="search" id="search" placeholder="Search a github user">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div id="profile"></div>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,108 @@
|
|||||||
|
const form = document.getElementById("form");
|
||||||
|
const search = document.getElementById("search");
|
||||||
|
const profile = document.getElementById("profile");
|
||||||
|
|
||||||
|
let searchVal = "";
|
||||||
|
|
||||||
|
form.addEventListener("submit", (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
searchVal = search.value;
|
||||||
|
fetchURL("https://api.github.com/users/" + searchVal).then((data) => {
|
||||||
|
displayData(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fetchURL(url) {
|
||||||
|
const res = await fetch(url);
|
||||||
|
const data = await res.json();
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayData(user) {
|
||||||
|
profile.innerHTML = "";
|
||||||
|
|
||||||
|
const {
|
||||||
|
avatar_url,
|
||||||
|
bio,
|
||||||
|
followers,
|
||||||
|
following,
|
||||||
|
name,
|
||||||
|
public_repos,
|
||||||
|
starred_url,
|
||||||
|
} = user;
|
||||||
|
|
||||||
|
const container = document.createElement("div");
|
||||||
|
container.classList.add("container");
|
||||||
|
|
||||||
|
const leftDiv = document.createElement("div");
|
||||||
|
leftDiv.classList.add("left");
|
||||||
|
|
||||||
|
const img = document.createElement("img");
|
||||||
|
img.src = avatar_url;
|
||||||
|
img.alt = name;
|
||||||
|
|
||||||
|
const rightDiv = document.createElement("div");
|
||||||
|
rightDiv.classList.add("right");
|
||||||
|
|
||||||
|
const h2 = document.createElement("h2");
|
||||||
|
h2.classList.add("name");
|
||||||
|
h2.append(document.createTextNode(name));
|
||||||
|
|
||||||
|
const p = document.createElement("p");
|
||||||
|
p.classList.add("bio");
|
||||||
|
p.append(document.createTextNode(bio));
|
||||||
|
|
||||||
|
const panelWrapper = document.createElement("section");
|
||||||
|
|
||||||
|
const followersPanel = document.createElement("div");
|
||||||
|
|
||||||
|
const followersNum = document.createElement("span");
|
||||||
|
followersNum.classList.add("value");
|
||||||
|
followersNum.append(document.createTextNode(followers));
|
||||||
|
|
||||||
|
const followersLabel = document.createElement("strong");
|
||||||
|
followersLabel.append(document.createTextNode("Followers"));
|
||||||
|
|
||||||
|
const followingPanel = document.createElement("div");
|
||||||
|
|
||||||
|
const followingNum = document.createElement("span");
|
||||||
|
followingNum.classList.add("value");
|
||||||
|
followingNum.append(document.createTextNode(following));
|
||||||
|
|
||||||
|
const followingLabel = document.createElement("strong");
|
||||||
|
followingLabel.append(document.createTextNode("Following"));
|
||||||
|
|
||||||
|
const reposPanel = document.createElement("div");
|
||||||
|
|
||||||
|
const reposNum = document.createElement("span");
|
||||||
|
reposNum.classList.add("value");
|
||||||
|
reposNum.append(document.createTextNode(public_repos));
|
||||||
|
|
||||||
|
const reposLabel = document.createElement("strong");
|
||||||
|
reposLabel.append(document.createTextNode("Repos"));
|
||||||
|
|
||||||
|
profile.append(container);
|
||||||
|
|
||||||
|
container.append(leftDiv);
|
||||||
|
leftDiv.append(img);
|
||||||
|
|
||||||
|
container.append(rightDiv);
|
||||||
|
rightDiv.append(h2);
|
||||||
|
rightDiv.append(p);
|
||||||
|
rightDiv.append(panelWrapper);
|
||||||
|
|
||||||
|
panelWrapper.append(followersPanel);
|
||||||
|
panelWrapper.append(followingPanel);
|
||||||
|
panelWrapper.append(reposPanel);
|
||||||
|
|
||||||
|
followersPanel.append(followersNum);
|
||||||
|
followersPanel.append(followersLabel);
|
||||||
|
|
||||||
|
followingPanel.append(followingNum);
|
||||||
|
followingPanel.append(followingLabel);
|
||||||
|
|
||||||
|
reposPanel.append(reposNum);
|
||||||
|
reposPanel.append(reposLabel);
|
||||||
|
}
|
@ -0,0 +1,78 @@
|
|||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
background: #2a2a72;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
width: 600px;
|
||||||
|
padding: 20px 15px;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
|
background-color: #4c2885;
|
||||||
|
border: unset;
|
||||||
|
outline: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
color: #eeeeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
input::placeholder {
|
||||||
|
color: #c4c4c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
background: #4c2885;
|
||||||
|
padding: 50px;
|
||||||
|
border-radius: 20px;
|
||||||
|
display: flex;
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
min-width: 150px;
|
||||||
|
min-height: 150px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-right: 30px;
|
||||||
|
max-width: 150px;
|
||||||
|
max-height: 150px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: #2a2a72;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left img {
|
||||||
|
width: 90%;
|
||||||
|
height: 90%;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bio {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
Loading…
Reference in new issue