দীর্ঘদিন ধরে, ওয়েব ডিজাইনাররা আয়তক্ষেত্রের সীমাবদ্ধতার মধ্যে তৈরি করতে বাধ্য হয়েছেন। ওয়েবে বেশিরভাগ বিষয়বস্তু এখনও সাধারণ বাক্সে আটকে আছে কারণ অ-আয়তাকার লেআউটে বেশিরভাগ সৃজনশীল উদ্যোগ হতাশার মধ্যে শেষ হয়। এটি Chrome 37 থেকে শুরু করে উপলব্ধ CSS আকারগুলির প্রবর্তনের সাথে পরিবর্তন হতে চলেছে৷ CSS আকারগুলি ওয়েব ডিজাইনারদেরকে কাস্টম পাথগুলির চারপাশে সামগ্রী মোড়ানোর অনুমতি দেয়, যেমন বৃত্ত, উপবৃত্ত এবং বহুভুজ, এইভাবে আয়তক্ষেত্রের সীমাবদ্ধতা থেকে মুক্ত হয়৷
আকারগুলি ম্যানুয়ালি সংজ্ঞায়িত করা যেতে পারে বা সেগুলি চিত্র থেকে অনুমান করা যেতে পারে।
এর একটি খুব সহজ উদাহরণ তাকান.
সম্ভবত আপনি আমার মতোই নির্বোধ ছিলেন যখন প্রথমবার স্বচ্ছ অংশগুলির সাথে একটি ছবি ভাসিয়েছিলেন যাতে বিষয়বস্তুটি মোড়ানো এবং ফাঁক পূরণ করার আশা করে, শুধুমাত্র উপাদানটির চারপাশে আয়তক্ষেত্রাকার মোড়ানো আকৃতির কারণে হতাশ হতে হয়। এই সমস্যা সমাধানের জন্য CSS Shapes ব্যবহার করা যেতে পারে।
shape-outside: url(image.png) CSS ঘোষণা ব্রাউজারকে ইমেজ থেকে একটি আকৃতি বের করতে বলে।
shape-image-threshold প্রপার্টি পিক্সেলের ন্যূনতম অপাসিটি লেভেল নির্ধারণ করে যা আকৃতি তৈরি করতে ব্যবহার করা হবে। এর মান অবশ্যই 0.0 (সম্পূর্ণ স্বচ্ছ) এবং 1.0 (সম্পূর্ণ অস্বচ্ছ) এর মধ্যে হতে হবে। সুতরাং, shape-image-threshold: 0.5 অর্থ হল আকৃতি তৈরি করতে 50% এবং তার বেশি অপাসিটি সহ শুধুমাত্র পিক্সেল ব্যবহার করা হবে।
float সম্পত্তি এখানে মূল. যদিও shape-outside সম্পত্তিটি সেই এলাকার আকৃতিকে সংজ্ঞায়িত করে যার চারপাশে বিষয়বস্তু মোড়ানো হবে, ভাসা ছাড়া, আপনি আকৃতির প্রভাব দেখতে পাবেন না।
উপাদানগুলির float মানের বিপরীত দিকে একটি ফ্লোট এলাকা রয়েছে। উদাহরণস্বরূপ, যদি একটি কফি কাপ চিত্র সহ একটি উপাদান বাম দিকে ভাসানো হয়, তাহলে ফ্লোট এলাকাটি কাপের ডানদিকে তৈরি হবে। যদিও আপনি উভয় দিকে ফাঁক দিয়ে একটি চিত্র প্রকৌশলী করতে পারেন, তবে বিষয়বস্তু শুধুমাত্র ফ্লোট সম্পত্তি দ্বারা মনোনীত বিপরীত দিকের আকৃতির চারপাশে মোড়ানো হবে, বাম বা ডান, উভয়ই নয়।
ভবিষ্যতে, সিএসএস এক্সক্লুশনের ভূমিকার সাথে ভাসমান নয় এমন উপাদানগুলিতে shape-outside ব্যবহার করা সম্ভব হবে।
ম্যানুয়ালি আকার তৈরি করা
চিত্রগুলি থেকে আকারগুলি বের করার বাইরে, আপনি সেগুলিকে ম্যানুয়ালি কোডও করতে পারেন৷ আকৃতি তৈরি করতে আপনি কয়েকটি কার্যকরী মান থেকে বেছে নিতে পারেন: circle() , ellipse() , inset() এবং polygon() । প্রতিটি আকৃতি ফাংশন স্থানাঙ্কের একটি সেট গ্রহণ করে এবং এটি একটি রেফারেন্স বাক্সের সাথে যুক্ত হয় যা স্থানাঙ্ক ব্যবস্থা স্থাপন করে। এক মুহূর্তের মধ্যে রেফারেন্স বাক্স সম্পর্কে আরো.
বৃত্ত() ফাংশন
একটি বৃত্তের আকৃতির মানের জন্য সম্পূর্ণ স্বরলিপি হল circle(r at cx cy) যেখানে r হল বৃত্তের ব্যাসার্ধ, যখন cx এবং cy হল X-অক্ষ এবং Y-অক্ষের বৃত্ত কেন্দ্রের স্থানাঙ্ক। বৃত্ত কেন্দ্রের স্থানাঙ্কগুলি ঐচ্ছিক৷ আপনি যদি সেগুলি বাদ দেন, তাহলে উপাদানটির কেন্দ্র (এর তির্যকগুলির ছেদ) ডিফল্ট হিসাবে ব্যবহার করা হবে৷
উপরের উদাহরণে, বিষয়বস্তু একটি বৃত্তাকার পথের বাইরের চারপাশে মোড়ানো হবে। একক যুক্তি 50% বৃত্তের ব্যাসার্ধ নির্দিষ্ট করে, যা এই নির্দিষ্ট ক্ষেত্রে, উপাদানটির প্রস্থ বা উচ্চতার অর্ধেক। উপাদানের মাত্রা পরিবর্তন বৃত্তের আকৃতির ব্যাসার্ধকে প্রভাবিত করবে। এটি একটি মৌলিক উদাহরণ কিভাবে CSS আকার প্রতিক্রিয়াশীল হতে পারে।
আরও এগিয়ে যাওয়ার আগে, দ্রুত একপাশে: এটা মনে রাখা গুরুত্বপূর্ণ যে CSS আকারগুলি শুধুমাত্র একটি উপাদানের চারপাশে ফ্লোট এলাকার আকৃতিকে প্রভাবিত করে। যদি উপাদানটির একটি ব্যাকগ্রাউন্ড থাকে তবে এটি আকৃতি দ্বারা ক্লিপ করা হবে না। সেই প্রভাব অর্জন করতে, আপনাকে অবশ্যই CSS মাস্কিং থেকে বৈশিষ্ট্যগুলি ব্যবহার করতে হবে - হয় ক্লিপ-পাথ বা মাস্ক-ইমেজ । clip-path প্রপার্টি খুব সহজে আসে কারণ এটি CSS আকারের মতো একই স্বরলিপি অনুসরণ করে, তাই আপনি মানগুলি পুনরায় ব্যবহার করতে পারেন।
এই নথি জুড়ে চিত্রগুলি আকৃতি হাইলাইট করতে এবং প্রভাবগুলি বুঝতে সাহায্য করতে ক্লিপিং ব্যবহার করে।
বৃত্তের আকারে ফিরে যান।
বৃত্ত ব্যাসার্ধের জন্য শতাংশ ব্যবহার করার সময়, মানটি আসলে একটি সামান্য জটিল সূত্র দিয়ে গণনা করা হয়: sqrt(প্রস্থ^2 + উচ্চতা^2) / sqrt(2)। এটি বোঝার জন্য এটি দরকারী কারণ এটি আপনাকে কল্পনা করতে সাহায্য করবে যে উপাদানটির মাত্রা সমান না হলে ফলাফলের বৃত্তের আকার কেমন হবে।
সমস্ত CSS ইউনিটের ধরন আকৃতি ফাংশন স্থানাঙ্কে ব্যবহার করা যেতে পারে - px, em, rem, vw, vh, এবং আরও অনেক কিছু। আপনি আপনার প্রয়োজনের জন্য নমনীয় বা যথেষ্ট অনমনীয় একটি বেছে নিতে পারেন।
আপনি এর কেন্দ্রের স্থানাঙ্কের জন্য সুস্পষ্ট মান সেট করে বৃত্তের অবস্থান সামঞ্জস্য করতে পারেন।
.element{
shape-outside: circle(50% at 0 0);
}
এটি স্থানাঙ্ক ব্যবস্থার উৎপত্তিস্থলে বৃত্ত কেন্দ্রকে অবস্থান করে। সমন্বয় ব্যবস্থা কি? এখানেই আমরা রেফারেন্স বক্স প্রবর্তন করি।
CSS আকারের জন্য রেফারেন্স বক্স
রেফারেন্স বক্স হল উপাদানের চারপাশে একটি ভার্চুয়াল বক্স, যা আকৃতি আঁকতে এবং অবস্থান করতে ব্যবহৃত স্থানাঙ্ক ব্যবস্থা স্থাপন করে। স্থানাঙ্ক সিস্টেমের উৎপত্তি তার উপরের-বাম কোণে X-অক্ষ ডানদিকে নির্দেশ করে এবং Y-অক্ষ নীচে নির্দেশ করে।
মনে রাখবেন যে shape-outside ফ্লোট এলাকার আকৃতি পরিবর্তন করে যার চারপাশে বিষয়বস্তু মোড়ানো হবে। ফ্লোট এলাকাটি margin সম্পত্তি দ্বারা সংজ্ঞায়িত বাক্সের বাইরের প্রান্ত পর্যন্ত প্রসারিত। এটিকে margin-box বলা হয় এবং এটি একটি আকৃতির জন্য ডিফল্ট রেফারেন্স বক্স যদি কোনোটিই স্পষ্টভাবে উল্লেখ না থাকে।
নিম্নলিখিত দুটি CSS ঘোষণার অভিন্ন ফলাফল রয়েছে:
.element{
shape-outside: circle(50% at 0 0);
/* identical to: */
shape-outside: circle(50% at 0 0) margin-box;
}
আমরা এখনও উপাদানের উপর একটি মার্জিন সেট না. এই মুহুর্তে এটি অনুমান করা নিরাপদ যে স্থানাঙ্ক সিস্টেমের উত্স এবং বৃত্ত কেন্দ্রটি উপাদানটির বিষয়বস্তু এলাকার উপরের-বাম কোণে রয়েছে৷ আপনি যখন একটি মার্জিন সেট করেন তখন এটি পরিবর্তিত হয়:
.element{
shape-outside: circle(50% at 0 0) margin-box;
margin: 100px;
}
স্থানাঙ্ক সিস্টেমের উৎপত্তি এখন উপাদানের বিষয়বস্তুর এলাকার বাইরে (100px উপরে এবং 100px বামে), বৃত্ত কেন্দ্রের মতো। margin-box রেফারেন্স বক্স দ্বারা প্রতিষ্ঠিত স্থানাঙ্ক সিস্টেমের বর্ধিত পৃষ্ঠের জন্য বৃত্ত ব্যাসার্ধের গণনা করা মানও বৃদ্ধি পায়।