ทำให้รายการดิ้นลอยไปทางขวา


114

ฉันมี

<div class="parent">
    <div class="child" style="float:right"> Ignore parent? </div>
    <div> another child </div>
</div>

ผู้ปกครองมี

.parent {
    display: flex;
}

สำหรับลูกคนแรกของฉันฉันต้องการเพียงแค่ลอยสิ่งของไปทางขวา

และ div อื่น ๆ ของฉันเพื่อทำตามกฎการยืดหยุ่นที่กำหนดโดยผู้ปกครอง

สิ่งนี้เป็นไปได้หรือไม่?

ถ้าไม่ฉันจะทำfloat: rightunder flex ได้อย่างไร?

คำตอบ:


213

คุณไม่สามารถใช้floatภายในภาชนะดิ้นและเหตุผลก็คือคุณสมบัติลอยไม่ได้นำไปใช้กับกล่องดิ้นระดับFiddleที่คุณสามารถดูที่นี่

ดังนั้นหากคุณต้องการให้อยู่ในตำแหน่งchildองค์ประกอบไปทางขวาของparentองค์ประกอบที่คุณสามารถใช้margin-left: autoแต่ตอนนี้childองค์ประกอบยังจะผลักดันอื่น ๆไปทางขวาในขณะที่คุณสามารถดูที่นี่divFiddle

คุณสามารถทำอะไรขณะนี้คำสั่งเปลี่ยนแปลงขององค์ประกอบและการตั้งค่าorder: 2ในchildองค์ประกอบจึงไม่ส่งผลกระทบต่อ div สอง

.parent {
  display: flex;
}
.child {
  margin-left: auto;
  order: 2;
}
<div class="parent">
  <div class="child">Ignore parent?</div>
  <div>another child</div>
</div>


ขอบคุณฉันสามารถดูวิธีแก้ปัญหาแรกได้ ฉันไม่ต้องการใช้จอแสดงผล: แน่นอนว่าลูกคนอื่น ๆ ของฉันไม่ควรอยู่ภายใต้ลูกคนแรก
Zhen Liu

4
" ลอยไม่ล่วงล้ำเข้าไปในภาชนะดิ้น ". นั่นเป็นความจริง แต่ไม่ใช่เหตุผล เหตุผลก็คือfloatคุณสมบัติใช้ไม่ได้กับกล่องระดับดิ้น
Oriol

ใช้งานได้ขอบคุณ! เหตุใดjustify-self: end;(หรือสิ่งที่คล้ายกัน) จึงไม่เหมาะกับเด็ก ดูเหมือนจะเป็นวิธีแก้ปัญหาที่ไม่ยืดหยุ่นสำหรับปัญหา flexbox
Brady Dowling

1
@BradyDowling ฉันรู้ว่านี่เป็นการตอบกลับช้า แต่การสิ้นสุดด้วยตัวเองโดยชอบธรรมต้องตั้งค่าการแสดงผลเป็นตาราง Flexboxes จะละเว้น justify-self: end ดูที่นี่: developer.mozilla.org/en-US/docs/Web/CSS/justify-self
Paul

<div> ลูกคนอื่น </div> <div class = "child"> ไม่สนใจพาเรนต์ใช่ไหม </div> คุณสามารถสลับสอง div และไม่มีคำสั่ง 2 ได้เช่นกัน
yeeen

26

คุณไม่จำเป็นต้องลอย ในความเป็นจริงพวกเขากำลังไร้ประโยชน์เพราะลอยจะถูกละเลยใน flexbox

คุณไม่จำเป็นต้องวางตำแหน่ง CSS

มีวิธีการดิ้นหลายวิธี autoอัตรากำไรขั้นต้นได้รับการกล่าวถึงในคำตอบอื่น

นี่คืออีกสองตัวเลือก:

  • การใช้งานjustify-content: space-betweenและorderทรัพย์สิน
  • ใช้justify-content: space-betweenและย้อนกลับลำดับของ div

.parent {
    display: flex;
    justify-content: space-between;
}

.parent:first-of-type > div:last-child { order: -1; }

p { background-color: #ddd;}
<p>Method 1: Use <code>justify-content: space-between</code> and <code>order-1</code></p>

<div class="parent">
    <div class="child" style="float:right"> Ignore parent? </div>
    <div>another child </div>
</div>

<hr>

<p>Method 2: Use <code>justify-content: space-between</code> and reverse the order of 
             divs in the mark-up</p>

<div class="parent">
    <div>another child </div>
    <div class="child" style="float:right"> Ignore parent? </div>
</div>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.