카테고리 없음
[베이직 포트폴리오] 둥둥 떠오르는 박스
개춘기뽀삐
2024. 9. 6. 15:26
<section id="skillSection" class="section-content">
<div class="list-container">
<div>
<p class="list-title">FrontEnd</p>
<ul id="frontend-list"></ul>
</div>
<div>
<p class="list-title">BackEnd</p>
<ul id="backend-list"></ul>
</div>
</div>
</section>
.list-container {
width: 100%;
display: flex;
margin: 1%;
flex-direction: row;
justify-content: space-around;
.list-title {
color: aqua;
font-weight: bold;
font-size: 2vw;
}
div {
width: 48%;
height: 40vh;
padding: 3% 0;
display: flex;
flex-direction: column;
align-items: center;
filter: brightness(50%);
}
div:hover {
border: 10px solid rgb(255, 151, 0);
box-shadow: 0 0 20px 8px rgb(255, 151, 0);
filter: brightness(100%);
animation: flightBox 2s ease-in-out infinite;
}
ul {
list-style: none;
display: flex;
width: 100%;
height: 100%;
justify-content: space-evenly;
align-items: center;
}
li {
img {
width: 80px;
height: 80px;
border-radius: 5px;
}
img:hover {
box-shadow: 0 0 20px 8px white;
}
}
}
@keyframes flightBox {
50% {
transform: translateY(-1vw);
}
100% {
transform: translateY(0);
}
}
동적으로 이미지를 넣어주기 위한 js
유지보수를 쉽게 하기 위해 적용했다
const frontendImages = [
{ src: "/img/icons/next.png", alt: "Next.js" },
{ src: "/img/icons/js.png", alt: "JavaScript" },
{ src: "/img/icons/ts.png", alt: "Typescript" },
{ src: "/img/icons/redux.png", alt: "Redux" },
{ src: "/img/icons/zustand.png", alt: "Zustand" },
{ src: "/img/icons/axios.png", alt: "Axios" },
{ src: "/img/icons/query.png", alt: "TanStack-Query" },
{ src: "/img/icons/tailwind.png", alt: "Tailwind css" },
{ src: "/img/icons/style.png", alt: "Styled-components" },
];
const backendImages = [
{ src: "/img/icons/Java.png", alt: "Java" },
{ src: "/img/icons/cat.png", alt: "Apache Tomcat" },
{ src: "/img/icons/oracle.png", alt: "Oracle" },
{ src: "/img/icons/sql.png", alt: "SQL" },
{ src: "/img/icons/my.png", alt: "MySQL" },
];
const frontendList = document.getElementById("frontend-list");
const backendList = document.getElementById("backend-list");
frontendImages.forEach((image) => {
const li = document.createElement("li");
const img = document.createElement("img");
img.src = image.src;
img.alt = image.alt;
li.appendChild(img);
frontendList.appendChild(li);
});
backendImages.forEach((image) => {
const li = document.createElement("li");
const img = document.createElement("img");
img.src = image.src;
img.alt = image.alt;
li.appendChild(img);
backendList.appendChild(li);
});