CSS3 দিয়ে কলাম তৈরি - nanodesigns

পত্রিকার ডিযাইনে কলাম দেখা যায়, ছবিগুলো অ্যালবামে কলাম আকারে সাজানো থাকে, আপনার পোর্টফোলিও কলাম আকারে গুছিয়ে দেখাতে পারেন – কলাম ডিযাইন তৈরি ঘুরেফিরেই আপনার প্রয়োজন হবে। এজন্যই এর আগে আমরা দেখেছিলাম কিভাবে পিএইচপি লুপ ব্যবহার করে ওয়েবসাইটে কলামের ডিযাইন করা যায়। আমরা সেদিন বলেছিলাম, CSS3 দিয়েও কাজটা আরো সহজে করা যায়। এতোদিন পরে হলেও আমরা কথা রাখতে পেরেছি, আজ আমরা সেটাই দেখবো ইনশাল্লাহ।

সিএসএস৩ দিয়ে তৈরি কলাম আরো পরিচ্ছন্ন, আরো সহজ। এখানে স্তবকে স্তবকে সাজানো <div>-গুলোকে কোনো ক্লাস কিংবা সিলেক্টরের তোয়াক্কা না করে শ্রেফ সিএসএস দিয়ে ধরে ধরে কলাম আকারে সাজিয়ে ফেলা যাবে। এবং রেসপন্সিভ ডিযাইনেও একই কৌশল কাজে লাগিয়ে লেআউটকে বিভিন্ন ভিউপোর্টে ইচ্ছামতো বদলে নেয়া যাবে।

আসুন দেখা যাক, কিভাবে সেটা করা হয়। আমরা সহজ করার জন্য সবটুকু কাজ একটা ফাইলের মধ্যেই করে দেখাচ্ছি:Continue reading

জ্ঞানস্তর: প্রাথমিক

সিএসএস (CSS: Cascade StyleSheet) হলো ওয়েব ডিযাইনের একটি ভাষা, যা দিয়ে ওয়েবসাইটের HTML দিয়ে লেখা কাঠামোগুলোকে সাজানো হয়। ক্যাসক্যাড কথাটার মানে হলো ‘জলপ্রপাতের মতো নেমে আসা’, তবে ইলেকট্রনিক্সের পরিভাষায় এর অর্থটা এরকম: A series of components or networks, the output of each of which serves as the input for the next — বাংলা করলে দাঁড়ায়: ক্যাসক্যাড হলো এমন ধারাবাহিক কিছু, যার একটি দিয়ে অন্যটির সূত্রপাত হয়। সোজা বাংলায় সিএসএসের কোডগুলো ঝরণার মতোই ধাপে ধাপে সাজানো, যেখানে পরের কোডটা, আগের কোডের চেয়ে প্রাধান্য পায়।

রহিম { যাও: ওদিকে;}

রহিম { যাও: এদিকে;}

আগের কমান্ডে রহিমকে বললাম, তুমি ওদিকে যাও, পরের কমান্ডে বললাম এদিকে এসো – রহিম তবে কোনটা শুনবে? সিএসএস যেহেতু ক্যাসক্যাড আকারে লিখিত হলো, ধাপে ধাপে, এবং পরের ধাপটি প্রাধান্য পায়, তাই রহিম পরেরটা শুনবে, অর্থাৎ এদিকে আসবে।

সিএসএসের ধরণ: সিএসএস-এর আসলে কোনো প্রকারভেদ নেই, সব সিএসএস-ই একইরকম। কিন্তু কিভাবে সেটা ব্যবহার করা হচ্ছে, তার হিসাবে সিএসএস তিন রকম:

  1. ইনলাইন সিএসএস বা লাইনের মধ্যবর্তী সিএসএস (Inline CSS)
  2. ইন্টারনাল সিএসএস বা অভ্যন্তরীণ সিএসএস (Internal CSS)
  3. এক্সটার্নাল সিএসএস বা বহিঃস্থ সিএসএস (External CSS)

ইনলাইন সিএসএস লেখা হয় HTML এলিমেন্ট বা ট্যাগগুলোর ভিতরে ভিতরে। এক্ষেত্রে HTML এলিমেন্টের মধ্যে লিখতে হয় style আর সিএসএস কোডগুলো লিখতে হয় সমান চিহ্নের (=) পরে ডাবল কোটের (“”) ভিতরে। এভাবে লেখার কারণটা সিএসএসের মধ্যে নয়, বরং HTML-এর মধ্যে, কারণ HTML-এ কোনো প্রোপার্টি লেখার পদ্ধতি হলো এরকম, সমান চিহ্নের পরে ডাবল কোটের ভিতরে লিখতে হয়। উদাহরণ দেখা যাক:

 <p style=”color: red; align: center;” align=”center”>Paragraph</p> 

কিংবা,

 <div style=”font-size: 12px; color: #333;”>Section is called ‘div’ in HTML</div> 

কিংবা,

 <div style=”font-weight: bold; color: black;”> The color of the text is black, but <span style=”color: red;”>the text inside this span is red</span>.</div> 

লক্ষ করুন, প্রথম উদাহরণে style-এর ভিতরে যে align লেখা হয়েছে, এটা সিএসএস, কিন্তু বাইরে যে align লেখা হয়েছে, তা এইচটিএমএল। এখানে তৃতীয় উদাহরণে লক্ষ করুন, কিভাবে লাইনের ভিতরে ভিতরে সিএসএস করা হয়েছে – এজন্যই একে ইনলাইন সিএসএস বলা হয়।

ইন্টারনাল সিএসএস, HTML এলিমেন্টের ভিতর লেখা হয় না, তবে HTML ফাইলের ভিতরে লেখা হয় বলেই একে অভ্যন্তরীণ সিএসএস বলে। এধরণের সিএসএস লেখা হয় HTML-এর <style> ট্যাগের ভিতরে। এভাবে:

<style>
div{color: black;}
</style>

ইনলাইন সিএসএস-এ যেহেতু আমি HTML এলিমেন্ট বা ট্যাগের ভিতরে ভিতরেই প্রয়োজনীয় সিএসএস কোড বসাতে পারছি, সেহেতু কোন সিএসএস কোনো ট্যাগের জন্য বসানো হচ্ছে, তা সহজেই বোঝা যাচ্ছে। কিন্তু ইন্টারনাল সিএসএস-এ সমস্যা হলো সিএসএস-কে HTML থেকে আলাদা করে লেখা হচ্ছে, তাই তখন রহিম, করিম ইত্যাদি নাম ধরে ডাকতে হয় HTML এলিমেন্টগুলোকে। অর্থাৎ HTML এলিমেন্টগুলো কিংবা তাদেরকে দেয়া id কিংবা class-এর নাম ধরে ডাকতে হয় তখন। যেমন:

<div id=”my-div” style=”font-weight: bold; color: black;”>The color of the text is black, but <span id=”this-is-span” style=”color: red;”>the text inside this span is red</span>.</div></p>
 <style>
  #my-div{color: black;}
  #this-is-span{color: red;}
 </style>

সিএসএস-এ হ্যাশ চিহ্ন (#) দিয়ে HTML-এর id-কে বোঝানো হয়ে থাকে।

ইন্টারনাল সিএসএস, HTML কোড ব্লকের যেকোনো জায়গায়ই বসানো যায়। তবে এক্ষেত্রে উত্তম হলো পাতার সমস্ত সিএসএস <head> এবং </head>ট্যাগের ভিতর বসানো। এভাবে:

<head>
 <style>
  #my-div{color: black;}
  #this-is-span{color: red;}
 </style>
</head>

এক্সটার্নাল সিএসএস-এর নাম থেকেই বুঝা যাচ্ছে, এজাতীয় সিএসএস-কে মূল HTML ফাইল থেকেই বিচ্ছিন্ন করে ফেলা হয়। আগেই বলেছি, সিএসএস-এর কোনো রকমভেদ নেই, সব সিএসএসই একই জিনিস, কিন্তু ব্যবহার ভিন্ন বলেই নাম ভিন্ন হয়েছে। তাই সাধারণ সিএসএস কোডই একটা ফাইলে লিখে, তাকে ডট সিএসএস (.css) ফাইল হিসেবে সংরক্ষণ করলেই তাকে এক্সটার্নাল সিএসএস বলা হয়।

ধরা যাক, কোনো একটা ওয়েবসাইটের মূল ফাইলটা যদি হয় index.html, তাহলে সেই HTML এলিমেন্টগুলোর যাবতীয় স্টাইল সাজানো থাকলো style.css ফাইলে। কিন্তু ইনলাইন সিএসএস কিংবা ইন্টারনাল সিএসএস করলে তো সিএসএস কোডগুলো থাকে HTML ফাইলের ভিতরেই, অথচ এক্ষেত্রে আমরা সিএসএস-এর আলাদা একটা ফাইল করেছি। এখন এই দুটোর মধ্যে সংযোগ স্থাপন করবো কিভাবে?

খুবই সহজ। এজন্য HTML-এর <head> এবং </head> ট্যাগের ভিতরে গিয়ে লিখতে হবে:

<link type=”text/css” rel=”stylesheet” href=”style.css”/>

আমরা এখানে HTML-এর <link> ট্যাগটি দিয়ে আমাদের style.css ফাইলটিকে লিংক করছি, যেখানে আমরা বলে দিচ্ছি যে, এই যে ফাইলটা লিংক করছি, তার ধরণ হলো, তাতে সিএসএস কোড text আকারে লেখা রয়েছে, এবং HTML ফাইলটার সাথে ঐ ফাইলটার সম্পর্ক (relation) হলো, ঐ ফাইলটা এই ফাইলের স্টাইলশীট – যা এই ফাইলে ডিযাইন বা স্টাইল যোগ করবে। স্টাইল ফাইলের নাম যে style-ই হতে হবে এমন কোনো কথা নেই হতে পারে styles.css, styleheet.css কিংবা abul.css, kamala.css ইত্যাদি যেকোনো কিছু। তবে style, styles, stylesheet ইত্যাদি বোধগম্য এবং সুন্দর নাম ব্যবহার করতে উৎসাহ দেয়া হয়।

সিএসএস-এর প্রাধান্য: সিএসএস-এ ব্যবহারের ভিত্তিতে করা এই তিন ধরণের মধ্যে একটা খুব মজার বিষয় লুক্কায়িত আছে, আর তা হলো প্রাধান্য বা গুরুত্ব। আচ্ছা, যদি প্রশ্ন করি: পাশের ঘরে আগুন লেগেছে, তার তাপ বেশি অনুভূত হবে, নাকি আপনার হাতে আগুন লেগেছে, তার তাপ? অবশ্যই আপনার হাতের আগুনের তাপ বেশি অনুভূত হবে, তার কারণ হলো নৈকট্য বা প্রক্সিমিটি। সুতরাং খুব সহজেই বোঝা যাচ্ছে যে, এক্সটার্নাল সিএসএস-এর চেয়ে গুরুত্ব বেশি পাবে ইন্টারনাল সিএসএস, আবার ইন্টারনাল সিএসএস-এর চেয়েও বেশি গুরুত্ব পাবে ইনলাইন সিএসএস – কারণ? কারণ ইনলাইন সিএসএস, HTML এলিমেন্টের সবচেয়ে কাছাকাছি থাকে, সেই তুলনায় ইন্টারনাল একটু দূরে, আর এক্সটার্নাল সিএসএস-এর সাথে শুধু পারিবারিক সম্পর্ক (<link rel=”stylesheet”>) আছে, কিন্তু সে থাকে বহুদূরে।
আমরা আগেই বলেছি, উপরের লাইনের সিএসএস-এর চেয়ে [ক্যাসক্যাডিং-এর কারণে] প্রাধান্য পায় তার নিচের লাইনের সিএসএস কোড। এরপর এক্সটার্নাল সিএসএস-এ যে নির্দেশনা দেয়া আছে, ইন্টারনালের নির্দেশনা তারচেয়েও বেশি প্রাধান্য পায়; আবার ইন্টারনালের চেয়ে বেশি প্রাধান্য পায় লাইনের ভিতরে ভিতরে দেয়া সিএসএস।

তবে এই সব সিএসএস-কেই অপ্রধান করেও কোনো সিএসএস প্রোপার্টিকে প্রাধান্য দিতে চাইলে? – সেটা নাহয় আরেকদিন জানবো।

-মঈনুল ইসলাম
গ্রাফিক্স ডিযাইনার অ্যান্ড ওয়েব ডেভলপার
wz.islam@gmail.com

CSS-tooltip-how-it-works
জ্ঞানস্তর: মাধ্যমিক

কোনো একটা লম্বা নামকে সংক্ষিপ্ত করে লেখার দরকার হলো, এজন্য প্রত্যেকটা শব্দের প্রথম অক্ষরগুলো, মানে আদ্যক্ষর নিয়ে, আপনি সেই নামটা তৈরি করলেন, ইংরেজিতে যাকে বলে acronym। যেমন: Bangladesh Agricultural and Rural Development-কে সংক্ষেপে ডাকা হয় BARD বলে; এখানে BARD হলো পুরো নামটার সংক্ষিপ্তরূপ। ধরা যাক, একটা লেখা লিখছেন, যেখানে বারবার আপনি BARD-ই বলে যাচ্ছেন। কিন্তু একজন পাঠক BARD-এর মানে তো নাও জানতে পারেন। তাই এসব ক্ষেত্রে HTML-এর সহজ একটা কৌশল কাজে লাগানো হয়: <acronym> কোডটি।

কোডটার ব্যবহার:

<acronym title=“Bangladesh Agricultural and Rural Development”>BARD</acronym>

এই কোডটা ব্যবহার করলে যখনই আপনি BARD লেখাটার উপরে মাউস আনবেন, একটু অপেক্ষা করলেই সেখানে একটা হলদে বাক্সে দেখাবে BARD-এর মানে, যা আপনি acronym-এর title-এ দিয়েছেন। 

কিন্তু যারা HTML-এর acronym ব্যবহার করে একটু ক্লান্ত, তাদের জন্য রয়েছে সিএসএস (CSS)-এর অপূর্ব একটা কৌশল, যার নাম “tool-tip”। আসুন দেখা যাক কিভাবে ব্যবহার করা যায় এটা:Continue reading