first commit
BIN
images/git.png
Normal file
After Width: | Height: | Size: 266 KiB |
BIN
images/grad.png
Normal file
After Width: | Height: | Size: 997 KiB |
BIN
images/img.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
images/ksan.png
Normal file
After Width: | Height: | Size: 401 B |
BIN
images/missing.jpg
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
images/missing1080.jpg
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
images/output.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/serv.jpg
Normal file
After Width: | Height: | Size: 395 KiB |
133
index.html
Normal file
@ -0,0 +1,133 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="main.css">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>
|
||||
Website
|
||||
</title>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<div class="start">
|
||||
<div class="welcome">
|
||||
<center>
|
||||
<h1>
|
||||
Đorđe Kšan
|
||||
</h1>
|
||||
<h3>
|
||||
Student at "Elektrotehnički fakultet u Banjaluci"
|
||||
</h3>
|
||||
</center>
|
||||
<h5>(website is still under construction and may have bugs..)</h5>
|
||||
</div>
|
||||
|
||||
<div class="grid-container">
|
||||
<div class="grid-item">
|
||||
<a href="#section1">
|
||||
<h2 class="default">My Projects</h2>
|
||||
<video src="videos/video2.mp4" autoplay muted loop></video>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid-item">
|
||||
<a href="#section2">
|
||||
<h2 class="default">Skill</h2>
|
||||
<h2 class="under-black">and more...</h2>
|
||||
<video src="videos/video4.mp4" autoplay muted loop></video>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid-item">
|
||||
<a href="#section3" style="background-color: #0f1a52;">
|
||||
<center><h2>work in progress</h2></center>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid-item">
|
||||
<a href="#section4">
|
||||
<h2 class="default">Contact me</h2>
|
||||
<video src="videos/background4.mp4" autoplay muted loop></video>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="section1" class="section section-image">
|
||||
<h1>My projects</h1>
|
||||
<h3>you can find most of my project <i><b><u><a href="https://git.ksan.dev/ksan">here</a></u></b></i></h3>
|
||||
<h6>There are only a few for now, still need to migrate the rest..</h6>
|
||||
<div class="grid-container">
|
||||
<div class="grid-item image-background" style="background-image: url('images/missing1080.jpg');">
|
||||
|
||||
<a href="https://git.ksan.dev/ksan">
|
||||
<h2 class="default">will add soon...</h2>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid-item image-background" style="background-image: url('images/serv.jpg');">
|
||||
|
||||
<a href="https://git.ksan.dev/ksan/docker-files">
|
||||
<h2 class="default">My home server</h2>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="section2" class="section section-video">
|
||||
<video autoplay muted loop playsinline class="bg-video">
|
||||
<source src="videos/background4.mp4" type="video/mp4">
|
||||
|
||||
</video>
|
||||
<div class="content">
|
||||
<h1>My Skills</h1>
|
||||
|
||||
<div class="skills">
|
||||
<div class="skills-column">
|
||||
<h3>Programming Languages</h3>
|
||||
<ul>
|
||||
<li>C/C++</li>
|
||||
<li>Java</li>
|
||||
<li>C#</li>
|
||||
<li>Python</li>
|
||||
<li>JavaScript(still learning)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="skills-column">
|
||||
<h3>Tools & Technologies</h3>
|
||||
<ul>
|
||||
<li>Linux</li>
|
||||
<li>Git</li>
|
||||
<li>Bash</li>
|
||||
<li>Docker</li>
|
||||
<li>Vim</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="section3" class="section section-image">
|
||||
Work in progress,
|
||||
go to: <a href="#section4"> contact</a>
|
||||
</div>
|
||||
|
||||
<div id="section4" class="section section-video">
|
||||
<video autoplay muted loop playsinline class="bg-video">
|
||||
<source src="videos/background.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<div class="content">
|
||||
<h1>You can contact me at:<br>
|
||||
<a href="mailto:djordjec@ksan.dev">djordje@ksan.dev</a>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="scripts.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
240
main.css
Normal file
@ -0,0 +1,240 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
/* font-family: Arial, sans-serif;*/
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
background-color: rgb(8, 8, 8);
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
.start{
|
||||
background-image: url(images/grad.png);
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
background-color: #333;
|
||||
color: white;
|
||||
font-size: 2rem;
|
||||
|
||||
|
||||
}
|
||||
.welcome{
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
}
|
||||
.grid-container {
|
||||
position: absolute;
|
||||
top:40%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
gap: 10%;
|
||||
width: 55vw;
|
||||
height: 55vh;
|
||||
margin: auto;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.grid-container {
|
||||
position: absolute;
|
||||
top:40%;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 5%;
|
||||
width: 60vw;
|
||||
height: 60vh;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
}
|
||||
.grid-item {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
border-radius: 22px;
|
||||
box-shadow: 0 4px 8px rgb(0, 0, 0);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.grid-item.image-background {
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.grid-item video {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.grid-item a {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-decoration: none; /* optional: remove underline */
|
||||
color: inherit; /* optional: use inherited color */
|
||||
}
|
||||
.grid-item h2 {
|
||||
margin: 0;
|
||||
padding: 0 10px
|
||||
}
|
||||
|
||||
.grid-item h2.default {
|
||||
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: white;
|
||||
font-size: 2rem;
|
||||
margin: 0;
|
||||
padding: 0 10px;
|
||||
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
|
||||
pointer-events: none;
|
||||
|
||||
}
|
||||
|
||||
.grid-item h2.under-black {
|
||||
position: absolute;
|
||||
top: 70%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: rgb(0, 0, 0);
|
||||
font-size: 2rem;
|
||||
margin: 0;
|
||||
padding: 0 10px;
|
||||
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.section {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
color: white;
|
||||
font-size: 2rem;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.section-video .bg-video {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.section-video .content {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center; /* Vertical centering */
|
||||
height: 100%; /* Full height of section */
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.section-video .skills {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 60px;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.skills-column {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.section-video .skills h3 {
|
||||
margin-bottom: 10px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.section-video .skills ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.section-video .skills li {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
|
||||
margin: 5px 0;
|
||||
padding: 8px 15px;
|
||||
border-radius: 20px;
|
||||
font-size: 1rem;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
.section-image {
|
||||
background-image: url('images/output.png');
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
#section4 {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#section1 {
|
||||
background-image: url('images/output.png');
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
padding-top: 50px;
|
||||
color: white;
|
||||
font-size: 2rem;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
#section2 {
|
||||
|
||||
}
|
||||
|
||||
#section3 {
|
||||
background-color: #142268;
|
||||
}
|
||||
|
||||
.skill-icons img {
|
||||
height: 50px;
|
||||
width: auto;
|
||||
object-fit: contain;
|
||||
filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.5));
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.skill-icons img:hover {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
.no-link-style {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.no-link-style:hover {
|
||||
text-decoration: underline; /* Optional hover effect */
|
||||
}
|
||||
a {
|
||||
color: inherit !important;
|
||||
}
|
16
scripts.js
Normal file
@ -0,0 +1,16 @@
|
||||
const gridItems = document.querySelectorAll('.grid-item');
|
||||
|
||||
gridItems.forEach(item => {
|
||||
const video = item.querySelector('video');
|
||||
|
||||
video.currentTime = 0;
|
||||
video.pause();
|
||||
item.addEventListener('mouseenter', () => {
|
||||
video.play();
|
||||
});
|
||||
|
||||
item.addEventListener('mouseleave', () => {
|
||||
video.pause();
|
||||
//video.currentTime = 0;
|
||||
});
|
||||
});
|