সমস্যাটি
ফ্লেক্সবক্স কেন্দ্রিংকে খুব সহজ করে তোলে।
কেবলমাত্র প্রয়োগ align-items: center
এবং justify-content: center
ফ্লেক্স ধারকটিতে, আপনার ফ্লেক্স আইটেমগুলি উল্লম্ব এবং অনুভূমিকভাবে কেন্দ্রিক হবে।
যাইহোক, ফ্লেক্স আইটেমটি ফ্লেক্স ধারকের চেয়ে বড় হলে এই পদ্ধতিতে সমস্যা রয়েছে।
প্রশ্নে উল্লিখিত হিসাবে, ফ্লেক্স আইটেমটি ধারকটি যখন প্রবাহিত হয় তখন শীর্ষটি অ্যাক্সেসযোগ্য হয়ে যায়।
অনুভূমিক ওভারফ্লোর জন্য, বাম বিভাগটি অ্যাক্সেসযোগ্য (বা ডান বিভাগ, আরটিএল ভাষায়) হয়ে যায়।
এখানে এলটিআর ধারক justify-content: center
এবং তিনটি ফ্লেক্স আইটেমের উদাহরণ রয়েছে :
এই আচরণের ব্যাখ্যার জন্য এই উত্তরটির নীচে দেখুন।
সমাধান # 1
এই সমস্যা সমাধানের জন্য ব্যবহার flexbox স্বয়ংক্রিয় মার্জিন পরিবর্তে, justify-content
।
সঙ্গে auto
মার্জিন, একটি সজল আনমন আইটেমটি উল্লম্বভাবে এবং অনুভূমিকভাবে এর কোন অংশ অ্যাক্সেস হারানো ছাড়া কেন্দ্রিক করা যেতে পারে।
সুতরাং ফ্লেক্স ধারকটিতে এই কোডের পরিবর্তে:
#flex-container {
align-items: center;
justify-content: center;
}
ফ্লেক্স আইটেমটিতে এই কোডটি ব্যবহার করুন:
.flex-item {
margin: auto;
}
সংশোধিত ডেমো
সমাধান # 2 (এখনও বেশিরভাগ ব্রাউজারে প্রয়োগ করা হয়নি)
safe
আপনার কীওয়ার্ড প্রান্তিককরণ নিয়মে এই মানটি যুক্ত করুন :
justify-content: safe center
অথবা
align-self: safe center
থেকে সিএসএস বক্স সারিবদ্ধতা মডিউল স্পেসিফিকেশন :
4.4। ওভারফ্লো সারিবদ্ধতা: safe
এবং unsafe
কীওয়ার্ড এবং স্ক্রল নিরাপত্তা সীমা
[ফ্লেক্স আইটেম] যখন [ফ্লেক্স ধারক] এর চেয়ে বড় হয়, তখন এটি উপচে পড়বে। কিছু প্রান্তিককরণ মোড, যদি এই পরিস্থিতিতে সম্মানিত হয় তবে ডেটা ক্ষতি হতে পারে: উদাহরণস্বরূপ, যদি কোনও সাইডবারের বিষয়বস্তু কেন্দ্রিক হয়, যখন তারা উপচে পড়ে থাকে তবে তারা ভিউপোর্টের শুরু প্রান্তের পাশের তাদের বাক্সগুলির কিছু অংশ প্রেরণ করতে পারে, যা এখানে স্ক্রল করা যায় না to ।
এই পরিস্থিতি নিয়ন্ত্রণ করতে, একটি ওভারফ্লো প্রান্তিককরণ মোড স্পষ্টভাবে নির্দিষ্ট করা যেতে পারে। Unsafe
প্রান্তিককরণ অতিরিক্ত প্রবাহ পরিস্থিতিতে নির্দিষ্ট প্রান্তিককরণ মোডকে সম্মান করে, এমনকি এটি ডেটা হ্রাস ঘটায়, অন্যদিকে safe
অ্যালাইনমেন্ট তথ্য ক্ষতি হ্রাস করার প্রয়াসে প্রবাহ পরিস্থিতিগুলিতে প্রান্তিককরণ মোড পরিবর্তন করে।
ডিফল্ট আচরণ হ'ল স্ক্রোলযোগ্য অঞ্চলের মধ্যে প্রান্তিককরণ বিষয়বস্তু থাকা, যদিও লেখার সময় এই সুরক্ষা বৈশিষ্ট্যটি এখনও প্রয়োগ করা হয়নি।
safe
যদি [ফ্লেক্স আইটেমটির আকার] [ফ্লেক্স ধারক] উপচে পড়ে যায় তবে [ফ্লেক্স আইটেম] এর পরিবর্তে এমনভাবে সাজানো হয় যেন সাজানো মোড [ flex-start
] ছিল।
unsafe
[ফ্লেক্স আইটেম] এবং [ফ্লেক্স ধারক] এর আপেক্ষিক আকারের নির্বিশেষে প্রদত্ত সারিবদ্ধ মানটি সম্মানিত।
দ্রষ্টব্য: বক্স অ্যালাইনমেন্ট মডিউলটি কেবল নমনীয় নয়, একাধিক বাক্স বিন্যাসের মডেলগুলিতে ব্যবহারের জন্য। সুতরাং উপরে বর্ণিত অংশে, বন্ধনীগুলির শর্তাদি আসলে "প্রান্তিককরণ বিষয়", "প্রান্তিককরণ ধারক" এবং " start
" বলে। আমি এই বিশেষ সমস্যার উপর দৃষ্টি নিবদ্ধ রাখতে ফ্লেক্স-নির্দিষ্ট শর্তাদি ব্যবহার করেছি।
এমডিএন থেকে স্ক্রোল সীমাবদ্ধতার জন্য ব্যাখ্যা:
নমনীয় আইটেম বিবেচনা
ফ্লেক্সবক্সের প্রান্তিককরণ বৈশিষ্ট্য সিএসএসের অন্যান্য কেন্দ্রিক পদ্ধতির মত নয়, "সত্য" কেন্দ্রীকরণ করে। এর অর্থ হ'ল ফ্লেক্স আইটেমগুলি কেন্দ্রে থাকবে, এমনকি যদি তারা ফ্লেক্স ধারকটি উপচে পড়ে যায়।
এটি কখনও কখনও সমস্যাযুক্ত হতে পারে, তবে যদি তারা পৃষ্ঠার উপরের প্রান্ত, বা বাম প্রান্তটি অতিক্রম করে তবে [...], আপনি সেখানে area অঞ্চলে স্ক্রোল করতে পারবেন না, এমনকি সেখানে সামগ্রী থাকলেও!
ভবিষ্যতের প্রকাশে, সারিবদ্ধ বৈশিষ্ট্যগুলিকে পাশাপাশি একটি "নিরাপদ" বিকল্প রাখতে প্রসারিত করা হবে।
আপাতত, যদি এটি উদ্বেগজনক হয় তবে আপনি এর পরিবর্তে কেন্দ্রিকতা অর্জনের জন্য মার্জিনগুলি ব্যবহার করতে পারেন, কারণ তারা "নিরাপদ" উপায়ে প্রতিক্রিয়া জানাবে এবং সেগুলি প্রবাহিত হলে কেন্দ্রিকরণ বন্ধ করবে।
বৈশিষ্ট্যগুলি ব্যবহার করার পরিবর্তে, আপনি যে ফ্লেক্স আইটেমগুলিকে কেন্দ্র করতে চান তাতে align-
কেবল auto
মার্জিন রাখুন।
justify-
বৈশিষ্ট্যের পরিবর্তে, প্রথম এবং শেষ ফ্লেক্স আইটেমগুলির বাইরের প্রান্তগুলিতে ফ্লেক্স ধারকটিতে অটো মার্জিন রাখুন।
auto
মার্জিন "আনমন" এবং অবশেষ স্থান অনুমান করবে আনমন আইটেম কেন্দ্র করে যখন সেখানে স্থান অবশেষ, এবং যখন সাধারণ প্রান্তিককরণ স্যুইচ করা হচ্ছে।
তবে, আপনি যদি justify-content
একাধিক-লাইন ফ্লেক্সবক্সে মার্জিন-ভিত্তিক কেন্দ্রীকরণের সাথে প্রতিস্থাপনের চেষ্টা করছেন, তবে আপনি সম্ভবত ভাগ্য থেকে দূরে রয়েছেন, কারণ আপনাকে প্রতিটি লাইনের প্রথম এবং শেষ ফ্লেক্স আইটেমটির মার্জিন স্থাপন করা দরকার। কোন আইটেমগুলি কোন লাইনে শেষ হবে তার আগে আপনি যদি ভবিষ্যদ্বাণী করতে না পারেন তবে justify-content
সম্পত্তিটি প্রতিস্থাপনের জন্য আপনি মূল অক্ষটিতে নির্ভরযোগ্যভাবে মার্জিন-ভিত্তিক কেন্দ্রে ব্যবহার করতে পারবেন না ।