সবচেয়ে সহজ এবং নির্ভরযোগ্য সমাধান হ'ল সঠিক জায়গায় ফ্লেক্স আইটেম inোকানো। যদি তারা যথেষ্ট প্রশস্ত হয় ( width: 100%
), তারা একটি লাইন বিরতিতে বাধ্য করবে।
.container {
background: tomato;
display: flex;
flex-flow: row wrap;
align-content: space-between;
justify-content: space-between;
}
.item {
width: 100px;
background: gold;
height: 100px;
border: 1px solid black;
font-size: 30px;
line-height: 100px;
text-align: center;
margin: 10px
}
.item:nth-child(4n - 1) {
background: silver;
}
.line-break {
width: 100%;
}
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="line-break"></div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="line-break"></div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="line-break"></div>
<div class="item">10</div>
</div>
তবে এটি কুৎসিত এবং শব্দার্থক নয়। পরিবর্তে, আমরা ফ্লেক্স ধারকটির ভিতরে সিউডো-উপাদান তৈরি করতে order
পারি এবং সেগুলি সঠিক স্থানে সরিয়ে নিতে ব্যবহার করতে পারি।
.container {
background: tomato;
display: flex;
flex-flow: row wrap;
align-content: space-between;
justify-content: space-between;
}
.item {
width: 100px;
background: gold;
height: 100px;
border: 1px solid black;
font-size: 30px;
line-height: 100px;
text-align: center;
margin: 10px
}
.item:nth-child(3n) {
background: silver;
}
.container::before, .container::after {
content: '';
width: 100%;
order: 1;
}
.item:nth-child(n + 4) {
order: 1;
}
.item:nth-child(n + 7) {
order: 2;
}
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
</div>
তবে একটি সীমাবদ্ধতা রয়েছে: ফ্লেক্স ধারকটিতে কেবল একটি ::before
এবং ::after
ছদ্ম-উপাদান থাকতে পারে। তার মানে আপনি কেবল 2 লাইন বিরতি জোর করতে পারবেন।
এটি সমাধান করার জন্য, আপনি ফ্লেক্স ধারকের পরিবর্তে ফ্লেক্স আইটেমের ভিতরে সিউডো-উপাদান তৈরি করতে পারেন। এইভাবে আপনি 2 এর মধ্যে সীমাবদ্ধ থাকবেন না But তবে এই ছদ্ম উপাদানগুলি নমনীয় আইটেম হবে না, সুতরাং তারা লাইন ব্রেকগুলিকে বাধ্য করতে সক্ষম হবে না।
তবে ভাগ্যক্রমে, সিএসএস ডিসপ্লে এল 3 চালু করেছে display: contents
(বর্তমানে কেবল ফায়ারফক্স 37 দ্বারা সমর্থিত):
উপাদান নিজেই কোনও বাক্স তৈরি করে না, তবে এর শিশু এবং ছদ্ম-উপাদানগুলি এখনও সাধারণ হিসাবে বাক্স তৈরি করে। বক্স জেনারেশন এবং বিন্যাসের উদ্দেশ্যে, উপাদানটিকে অবশ্যই চিকিত্সা করা উচিত যেন এটি তার শিশু এবং নথির গাছের সিউডো-উপাদানগুলির সাথে প্রতিস্থাপিত হয়েছিল।
সুতরাং আপনি display: contents
ফ্লেক্স পাত্রে বাচ্চাদের জন্য আবেদন করতে পারেন এবং প্রত্যেকের সামগ্রীতে অতিরিক্ত মোড়কের ভিতরে গুটিয়ে রাখতে পারেন। তারপরে, ফ্লেক্স আইটেমগুলি সেই অতিরিক্ত মোড়ক এবং বাচ্চাদের সিউডো-উপাদানগুলি হবে।
.container {
background: tomato;
display: flex;
flex-flow: row wrap;
align-content: space-between;
justify-content: space-between;
}
.item {
display: contents;
}
.item > div {
width: 100px;
background: gold;
height: 100px;
border: 1px solid black;
font-size: 30px;
line-height: 100px;
text-align: center;
margin: 10px;
}
.item:nth-child(3n) > div {
background: silver;
}
.item:nth-child(3n)::after {
content: '';
width: 100%;
}
<div class="container">
<div class="item"><div>1</div></div>
<div class="item"><div>2</div></div>
<div class="item"><div>3</div></div>
<div class="item"><div>4</div></div>
<div class="item"><div>5</div></div>
<div class="item"><div>6</div></div>
<div class="item"><div>7</div></div>
<div class="item"><div>8</div></div>
<div class="item"><div>9</div></div>
<div class="item"><div>10</div></div>
</div>
অন্যথা, অনুযায়ী Fragmenting ফ্লেক্স লেআউট এবং CSS এর ফ্র্যাগমেন্টেশন , flexbox বিরতি ব্যবহার করে জোর করে অনুমতি দেয় break-before
, break-after
অথবা তাদের সিএসএস 2.1 alias লেখা:
.item:nth-child(3n) {
page-break-after: always; /* CSS 2.1 syntax */
break-after: always; /* New syntax */
}
.container {
background: tomato;
display: flex;
flex-flow: row wrap;
align-content: space-between;
justify-content: space-between;
}
.item {
width: 100px;
background: gold;
height: 100px;
border: 1px solid black;
font-size: 30px;
line-height: 100px;
text-align: center;
margin: 10px
}
.item:nth-child(3n) {
page-break-after: always;
background: silver;
}
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
ফ্লেক্সবক্সে জোর করে রেখা বিরতি এখনও ব্যাপকভাবে সমর্থিত নয়, তবে এটি ফায়ারফক্সে কাজ করে।