728x90
https://ko.quish.tv/build-draggable-slides-with-html-css
HTML CSS 및 JAVASCRIPT로 드래그 가능한 슬라이드 만들기 - 블로그
개발자가 버그 및 문제에 대한 주제를 토론하고 지식을 작성 및 공유하며 전 세계 수백만 개발자와 연결할 수 있는 소셜 네트워크입니다.
ko.quish.tv
GitHub - Basir-PD/100-Projects-HTML-CSS-JavaScript: 100 Projects Challenge
100 Projects Challenge. Contribute to Basir-PD/100-Projects-HTML-CSS-JavaScript development by creating an account on GitHub.
github.com
<div class="container">
<div class="cards">
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 1</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 2</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 3</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 4</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 5</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
<div class="card">
<img src="../../../images/profile-default.png" alt="" />
<div class="card__content">
<h1>Heading 6</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum,
voluptatibus!
</p>
</div>
</div>
</div>
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
font-family: "Montserrat", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
/* global */
img {
width: 100%;
}
h1 {
margin: 0.5rem 0;
}
/* container and cards */
.container {
position: relative;
width: 500px;
height: 100px;
overflow: hidden;
cursor: grab;
/* border-top: 10px solid #f00; */
}
.cards {
position: absolute;
top: 0;
left: 0;
display: grid;
grid-template-columns: repeat(6, 300px);
grid-gap: 50px;
pointer-events: none;
/* border-bottom: 10px solid #00f; */
}
.card {
border: 1px solid #ccc;
border-radius: 1rem;
overflow: hidden;
box-shadow: 0px 5px 20px 0px rgba(69, 67, 96, 0.1);
}
.card__content {
color: #4e4e4e;
padding: 1rem;
}
window.addEventListener("load", function(){
const container = document.querySelector(".container");
const cards = document.querySelector(".cards");
/* keep track of user's mouse down and up */
let isPressedDown = false;
/* x horizontal space of cursor from inner container */
let cursorXSpace;
container.addEventListener("mousedown", (e) => {
isPressedDown = true;
cursorXSpace = e.offsetX - cards.offsetLeft;
container.style.cursor = "grabbing";
});
container.addEventListener("mouseup", () => {
container.style.cursor = "grab";
});
window.addEventListener("mouseup", () => {
isPressedDown = false;
});
container.addEventListener("mousemove", (e) => {
if (!isPressedDown) return;
e.preventDefault();
cards.style.left = `${e.offsetX - cursorXSpace}px`;
boundCards();
});
function boundCards() {
const container_rect = container.getBoundingClientRect();
const cards_rect = cards.getBoundingClientRect();
if (parseInt(cards.style.left) > 0) {
cards.style.left = 0;
} else if (cards_rect.right < container_rect.right) {
cards.style.left = `-${cards_rect.width - container_rect.width}px`;
}
}
});
'개발관련 > front-end' 카테고리의 다른 글
[javascript js] for ...of / for ...in (0) | 2022.05.30 |
---|---|
DOM 은 API 이다. (0) | 2022.04.22 |
JSTL quick reference 작성중, el tag, core tag, forEach (0) | 2022.04.14 |
margin auto 위아래 안될 때 (0) | 2021.11.29 |
자바스크립트 anchor 사용하는 방법 여러가지 관련 사이트 (0) | 2021.10.27 |