<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ScrollTrigger PinSpacing: false Example</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
.section {
height: 100vh;
/* Chiếm toàn bộ chiều cao viewport */
display: flex;
justify-content: center;
align-items: center;
font-size: 2em;
color: white;
text-align: center;
}
.section-1 {
background-color: #a7d9f2;
}
/* Xanh dương nhạt */
.section-2 {
background-color: #8cde8c;
}
/* Xanh lá nhạt */
.section-3 {
background-color: #ff9999;
}
/* Đỏ nhạt */
.section-4 {
background-color: #ffff99;
}
/* Vàng nhạt */
.section-5 {
background-color: #cc99ff;
}
/* Tím nhạt */
.pin-box {
width: 200px;
height: 150px;
background-color: #007bff;
/* Xanh dương đậm */
color: white;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.5em;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
/* Để dễ thấy sự khác biệt khi pinSpacing: false */
margin: 20px;
position: relative;
/* Quan trọng để pin hoạt động với pinSpacing: false */
z-index: 10;
/* Đảm bảo nó nằm trên các phần tử khác khi ghim */
}
.content-after-pin {
background-color: #f7e1b5;
/* Cam nhạt */
padding: 50px;
text-align: center;
color: #333;
font-size: 1.2em;
/* Tự thêm padding/margin để tránh bị chồng lên pin-box khi pinSpacing: false */
margin-top: 170px;
/* Ví dụ: nếu pin-box cao 150px + 20px margin-top + 20px margin-bottom */
}
/* Thêm một số nội dung để trang dài hơn */
.long-text {
padding: 50px;
font-size: 1.1em;
line-height: 1.6;
background-color: #fff;
margin-top: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body>
<div class="section section-1">
<h1>Phần 1: Cuộn xuống để thấy hiệu ứng ghim</h1>
</div>
<div class="section section-2">
<p>Phần 2</p>
</div>
<div class="pin-box">
HỘP NÀY ĐƯỢC GHIM
</div>
<div class="content-after-pin">
<p>Đây là nội dung ngay sau "HỘP NÀY ĐƯỢC GHIM".</p>
<p>Khi `pinSpacing: false`, nội dung này sẽ cuộn lên và có thể **chồng lên** hộp được ghim, vì ScrollTrigger không
tự động thêm khoảng trống bù.</p>
<p>Bạn sẽ cần tự điều chỉnh CSS (ví dụ: `margin-top` cho phần tử này) nếu muốn tránh sự chồng chéo.</p>
</div>
<div class="section section-3">
<p>Phần 3</p>
</div>
<div class="section section-4">
<p>Phần 4</p>
</div>
<div class="section section-5">
<p>Phần 5</p>
</div>
<div class="long-text">
<h2>Giới thiệu về nội dung dài</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Maecenas in massa efficitur, dapibus nisi nec, scelerisque ipsum. Mauris vitae nisl et nibh hendrerit vestibulum.
Sed non risus at orci eleifend faucibus. Proin ut elit non turpis malesuada bibendum. Fusce vel enim ac nisi
aliquet congue. Phasellus sit amet lorem non libero egestas laoreet. Praesent aliquet metus at tellus feugiat, non
hendrerit lacus finibus.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec dictum, libero eu
vulputate dictum, elit odio efficitur arcu, a consequat magna enim ac velit. Aliquam erat volutpat. Sed vitae
felis at neque suscipit facilisis. Nam sit amet velit quis metus volutpat suscipit. Sed quis dolor id elit blandit
semper eu vel urna.</p>
<p>Nunc quis justo vitae nulla efficitur tincidunt. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Morbi id ligula non metus feugiat dictum. Vestibulum vitae purus id odio
ullamcorper vehicula. Curabitur elementum orci a sem elementum, vel vulputate velit tristique.</p>
<p>Aenean ut lorem nec velit mattis feugiat. Integer vel justo in quam euismod laoreet. Quisque scelerisque risus eu
justo volutpat, at maximus neque consectetur. Praesent commodo magna id arcu bibendum, ac vulputate leo malesuada.
Curabitur vel turpis ac lectus hendrerit tincidunt.</p>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
<script>
// Đăng ký plugin ScrollTrigger
gsap.registerPlugin(ScrollTrigger);
gsap.to(".pin-box", {
scrollTrigger: {
trigger: ".pin-box",
pin: true,
start: "top center", // Bắt đầu ghim khi đỉnh của pin-box chạm vào giữa viewport
end: "+=500", // Ghim trong khoảng 500px cuộn
pinSpacing: true, // <-- ĐÂY LÀ PHẦN QUAN TRỌNG
markers: true, // Hiển thị markers để dễ debug
}
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>CodePen - A Pen by michael</title>
<link rel="stylesheet" href="./style.css">
</head>
<body>
<!-- partial:index.partial.html -->
<div class='content content--center'>
<h3 class='title'>Techne</h3>
<h2 class='text' data-expand-2>
<span class='content--center-text'>Technical skill</span>
<span class='content--center-text'>is mastery of complexity</span>
<span class='expanding-text expanding-text--center'>
<span class='aright'>while </span>
<span class='expanding-text-img'>
<span
class='expanding-text-img-inner'
style='background-image: url(https://placehold.co/600x400.png)'></span>
</span>
<span class='anim'>creativity</span>
</span>
<span class='content--center-text'>is mastery of simplicity.</span>
</h2>
<p class='block'>
<a
rel='noopener'
target='_blank'
href='https://knowyourmeme.com/memes/inside-you-there-are-two-wolves'
>Inside me are two wolves</a
>. One fascinated with the complexities of modern software, and the other attracted to
minimalism and simplicty. As an engineer, i harness the strengths of both wolves to
balance complexity and simplicity in all my work. In other words, i use complex tools
to create simple solutions.
</p>
</div>
<!-- partial -->
<script src='https://unpkg.com/gsap@3/dist/gsap.min.js'></script>
<script src='https://assets.codepen.io/16327/Flip.min.js'></script>
<script src='https://unpkg.com/gsap@3/dist/ScrollTrigger.min.js'></script><script src="./script.js"></script>
</body>
</html>