Drag n drop
This commit is contained in:
parent
d29ac3e28f
commit
e3ea569cb6
20
drag-n-drop/index.html
Normal file
20
drag-n-drop/index.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
<title>Drag N Drop</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="empty">
|
||||||
|
<div class="fill" draggable="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="empty"></div>
|
||||||
|
<div class="empty"></div>
|
||||||
|
<div class="empty"></div>
|
||||||
|
<div class="empty"></div>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
39
drag-n-drop/script.js
Normal file
39
drag-n-drop/script.js
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
const fill = document.querySelector('.fill')
|
||||||
|
const empties = document.querySelectorAll('.empty')
|
||||||
|
|
||||||
|
fill.addEventListener('dragstart', dragStart)
|
||||||
|
fill.addEventListener('dragend', dragEnd)
|
||||||
|
|
||||||
|
for(const empty of empties) {
|
||||||
|
empty.addEventListener('dragover', dragOver)
|
||||||
|
empty.addEventListener('dragenter', dragEnter)
|
||||||
|
empty.addEventListener('dragleave', dragLeave)
|
||||||
|
empty.addEventListener('drop', dragDrop)
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragStart() {
|
||||||
|
this.className += ' hold'
|
||||||
|
setTimeout(() => this.className = 'invisible', 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragEnd() {
|
||||||
|
this.className = 'fill'
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragOver(e) {
|
||||||
|
e.preventDefault()
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragEnter(e) {
|
||||||
|
e.preventDefault()
|
||||||
|
this.className += ' hovered'
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragLeave() {
|
||||||
|
this.className = 'empty'
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragDrop() {
|
||||||
|
this.className = 'empty'
|
||||||
|
this.append(fill)
|
||||||
|
}
|
44
drag-n-drop/style.css
Normal file
44
drag-n-drop/style.css
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: steelblue;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty {
|
||||||
|
height: 150px;
|
||||||
|
width: 150px;
|
||||||
|
margin: 10px;
|
||||||
|
border: solid 3px black;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fill {
|
||||||
|
background-image: url('https://source.unsplash.com/random/150x150');
|
||||||
|
height: 145px;
|
||||||
|
width: 145px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hold {
|
||||||
|
border: solid 5px #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hovered {
|
||||||
|
background-color: #333;
|
||||||
|
border-color: white;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
body {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
@ -1,39 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="style.css" />
|
|
||||||
<title>Social Links</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container a b c" id="container">
|
|
||||||
<button id="open" class="open-btn">
|
|
||||||
<i class="fas fa-share-alt"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<a href="https://youtube.com" class="ytb" target="_blank">
|
|
||||||
<i class="fab fa-youtube"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://twitter.com" class="twt" target="_blank">
|
|
||||||
<i class="fab fa-twitter"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="#" class="x" id="close">
|
|
||||||
<i class="fas fa-times"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://linkedin.com" class="lin" target="_blank">
|
|
||||||
<i class="fab fa-linkedin"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://instagram.com" class="ins" target="_blank">
|
|
||||||
<i class="fab fa-instagram"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="script.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,7 +0,0 @@
|
|||||||
const container = document.getElementById('container')
|
|
||||||
const open = document.getElementById('open')
|
|
||||||
const close = document.getElementById('close')
|
|
||||||
|
|
||||||
open.addEventListener('click', () => container.classList.add('open'))
|
|
||||||
|
|
||||||
close.addEventListener('click', () => container.classList.remove('open'))
|
|
@ -1,102 +0,0 @@
|
|||||||
@import url('https://fonts.googleapis.com/css?family=Muli&display=swap');
|
|
||||||
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 50px;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
transition: 0.4s ease;
|
|
||||||
height: 70px;
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container.open {
|
|
||||||
width: 350px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container .open-btn {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
|
|
||||||
background-image: linear-gradient(
|
|
||||||
110.1deg,
|
|
||||||
rgba(241, 115, 30, 1) 18.9%,
|
|
||||||
rgba(231, 29, 54, 1) 90.7%
|
|
||||||
);
|
|
||||||
color: #fff;
|
|
||||||
cursor: pointer;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 50%;
|
|
||||||
font-size: 26px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0;
|
|
||||||
height: 70px;
|
|
||||||
width: 70px;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container.open .open-btn {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container a {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
font-size: 26px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: 10px;
|
|
||||||
height: 50px;
|
|
||||||
width: 50px;
|
|
||||||
text-decoration: none;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container.open a {
|
|
||||||
position: static;
|
|
||||||
opacity: 1;
|
|
||||||
transition: 0.4s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container a.ytb {
|
|
||||||
background-color: #ff0000;
|
|
||||||
}
|
|
||||||
.container a.twt {
|
|
||||||
background-color: #1da1f2;
|
|
||||||
}
|
|
||||||
.container a.x {
|
|
||||||
background-color: #282c37;
|
|
||||||
}
|
|
||||||
.container a.lin {
|
|
||||||
background-color: #007bb5;
|
|
||||||
}
|
|
||||||
.container a.ins {
|
|
||||||
background-color: #c32aa3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container a i {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user