এগারো পর্ব শেষে এখন আমরা CSS-এর প্রায় সবকিছু জানি — Selector, Color/Font, Box Model, Display, Position, Flexbox, Grid, Media Query, Pseudo-class/element, Animation, ও CSS Variables। আজকের এই শেষ পর্বে আমরা HTML সিরিজের পর্ব ১০-এ বানানো সাদামাটা ল্যান্ডিং পেজটাকে সম্পূর্ণ সুন্দর ও responsive বানিয়ে ফেলবো।
আমরা কী কী প্রয়োগ করবো
| পর্ব | এই পেজে যেখানে ব্যবহার হবে |
|---|---|
| পর্ব ১ ও ১১ | :root-এ CSS Variables দিয়ে থিম সেট করা |
| পর্ব ২ | Color, gradient, font styling |
| পর্ব ৩ | Box model — padding, border-radius, box-sizing |
| পর্ব ৫ | Sticky navbar |
| পর্ব ৬-৭ | Flexbox দিয়ে navbar ও form layout |
| পর্ব ৮ | Grid দিয়ে skills ও responsive layout |
| পর্ব ৯ | Media Query দিয়ে মোবাইল-ফ্রেন্ডলি বানানো |
| পর্ব ১০ | Hover effect, transition, animation |
সম্পূর্ণ কোড
<!DOCTYPE html>
<html lang="bn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>আরিফ — ওয়েব ডেভেলপার</title>
<style>
:root {
--primary: #3949ab;
--primary-dark: #1a237e;
--accent: #e91e63;
--bg: #fafafa;
--text: #2c2c2c;
--radius: 10px;
--spacing: 20px;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Segoe UI', Arial, sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.7;
}
header {
background: linear-gradient(to right, var(--primary), var(--primary-dark));
color: white;
text-align: center;
padding: 60px 20px;
}
header p {
opacity: 0.9;
}
nav {
position: sticky;
top: 0;
display: flex;
justify-content: center;
gap: 24px;
background: white;
padding: 14px;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
z-index: 10;
}
nav a {
color: var(--text);
text-decoration: none;
font-weight: 600;
transition: color 0.3s ease;
}
nav a:hover {
color: var(--primary);
}
main {
max-width: 900px;
margin: 0 auto;
padding: var(--spacing);
}
section {
padding: 40px 0;
}
section h2 {
color: var(--primary-dark);
margin-bottom: var(--spacing);
border-left: 4px solid var(--accent);
padding-left: 12px;
}
#about {
display: flex;
gap: var(--spacing);
align-items: center;
flex-wrap: wrap;
}
#about img {
width: 150px;
border-radius: 50%;
border: 4px solid var(--primary);
}
.skills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 12px;
}
.skill-item {
background: white;
padding: 16px;
text-align: center;
border-radius: var(--radius);
box-shadow: 0 2px 6px rgba(0,0,0,0.06);
transition: transform 0.3s ease;
}
.skill-item:hover {
transform: translateY(-5px);
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: var(--radius);
overflow: hidden;
}
th {
background: var(--primary);
color: white;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #eee;
}
tr:nth-child(even) {
background: #f8f8f8;
}
form {
display: flex;
flex-direction: column;
gap: 12px;
max-width: 500px;
}
input, textarea {
padding: 12px;
border: 1px solid #ddd;
border-radius: var(--radius);
font-family: inherit;
transition: border-color 0.3s ease;
}
input:focus, textarea:focus {
outline: none;
border-color: var(--primary);
}
button {
background: var(--accent);
color: white;
border: none;
padding: 14px;
border-radius: var(--radius);
font-size: 16px;
cursor: pointer;
transition: background 0.3s ease;
}
button:hover {
background: #c2185b;
}
footer {
text-align: center;
padding: 20px;
background: var(--text);
color: white;
}
footer a {
color: #90caf9;
}
@media (max-width: 600px) {
header {
padding: 40px 15px;
}
nav {
gap: 14px;
font-size: 14px;
}
#about {
flex-direction: column;
text-align: center;
}
}
</style>
</head>
<body>
<header>
<h1>আরিফ</h1>
<p>ফ্রিল্যান্স ওয়েব ডেভেলপার</p>
</header>
<nav>
<a href="#about">পরিচিতি</a>
<a href="#skills">দক্ষতা</a>
<a href="#projects">প্রজেক্ট</a>
<a href="#contact">যোগাযোগ</a>
</nav>
<main>
<section id="about">
<img src="profile.jpg" alt="আরিফের প্রোফাইল ছবি">
<div>
<h2>আমার সম্পর্কে</h2>
<p>আমি একজন সেল্ফ-টট ওয়েব ডেভেলপার, যিনি Firebase, Cloudflare
এবং vanilla JavaScript নিয়ে কাজ করতে ভালোবাসেন।</p>
</div>
</section>
<section id="skills">
<h2>আমার দক্ষতা</h2>
<div class="skills-grid">
<div class="skill-item">HTML</div>
<div class="skill-item">CSS</div>
<div class="skill-item">JavaScript</div>
<div class="skill-item">Firebase</div>
</div>
</section>
<section id="projects">
<h2>সাম্প্রতিক প্রজেক্ট</h2>
<table>
<tr>
<th>প্রজেক্ট</th>
<th>ধরন</th>
</tr>
<tr>
<td>Midnight Craving</td>
<td>PWA Dashboard</td>
</tr>
<tr>
<td>Pathokghar</td>
<td>Ebook Platform</td>
</tr>
</table>
</section>
<section id="contact">
<h2>যোগাযোগ করো</h2>
<form>
<input type="text" placeholder="তোমার নাম" required>
<input type="email" placeholder="ইমেইল" required>
<textarea rows="4" placeholder="বার্তা"></textarea>
<button type="submit">পাঠাও</button>
</form>
</section>
</main>
<footer>
<p>© ২০২৬ আরিফ · <a href="mailto:arif@example.com">ইমেইল করো</a></p>
</footer>
</body>
</html>
কোডে যা লক্ষ করার মতো
:root-এ variable রাখায় রঙ বদলাতে এখন এক জায়গায় গেলেই হবেnav-এposition: stickyদেওয়ায় স্ক্রল করলেও মেনু সবসময় উপরে দেখা যাবে.skills-grid-এauto-fitওminmax()থাকায় স্কিল কার্ডগুলো নিজে থেকেই স্ক্রিন সাইজ অনুযায়ী সাজবে- প্রতিটা
.skill-item-এ hover করলে হালকা উপরে উঠে যায় (transform: translateY+transition) - টেবিলে
nth-child(even)দিয়ে zebra stripe - ফর্মে
:focusদিয়ে ইনপুটে ক্লিক করলে বর্ডার হাইলাইট হয় - শেষে
@media (max-width: 600px)দিয়ে মোবাইলে পরিচিতি সেকশন কলামে সাজানো হয়েছে
টিপস: এই কোডটা কপি করে নিজের ব্রাউজারে খুলে দেখো, তারপর একটা একটা করে property বদলে বদলে দেখো কী পরিবর্তন হয় — এভাবে হাতে-কলমে experiment করাই CSS শেখার সবচেয়ে কার্যকর উপায়।
এরপর কী?
HTML দিয়ে কাঠামো, CSS দিয়ে সৌন্দর্য — এই দুটো এখন তোমার হাতে আছে। কিন্তু এখনো এই পেজটা "স্থির" — ফর্ম সাবমিট করলে কিছুই হয় না, বাটনে ক্লিক করলে কোনো অ্যাকশন নেই। পরের ধাপ হলো JavaScript — যেটা দিয়ে পেজটাকে সত্যিকারের ইন্টারঅ্যাক্টিভ বানানো যায়।
নিজে চেষ্টা করো
Exercise:
- উপরের কোডটা কপি করে নিজের তথ্য দিয়ে বদলে ফেলো
--primaryও--accentvariable বদলে নিজের পছন্দের রঙে সাজাও- মোবাইল স্ক্রিনে (developer tools দিয়ে) পেজটা কেমন দেখাচ্ছে যাচাই করো
- নিজের আরও কিছু স্কিল বা প্রজেক্ট যোগ করে গ্রিড ও টেবিল বড় করো
সিরিজ শেষ — অভিনন্দন!
বারো পর্ব শেষ করে তুমি এখন CSS-এর একটা শক্তপোক্ত ভিত্তি পেয়ে গেছো — Selector থেকে Grid, Media Query থেকে Animation, সবকিছু। HTML আর CSS মিলিয়ে এখন তুমি যেকোনো সুন্দর, responsive স্ট্যাটিক ওয়েবসাইট বানাতে পারবে।
পরের সিরিজ "JavaScript এর হাতেখড়ি"-তে দেখা হবে, যেখানে আমরা এই পেজগুলোকে সত্যিকারের ইন্টারঅ্যাক্টিভ ও ডাইনামিক বানাবো।