มีค่า css cross-browser สำหรับ "width: -moz-fit-content;" หรือไม่


86

ฉันต้องการให้ div อยู่ในตำแหน่งกึ่งกลางและพอดีกับความกว้างของเนื้อหาในเวลาเดียวกัน

ตอนนี้ฉันทำแบบนี้:

.mydiv-centerer{

  text-align: center;

  .mydiv {
    background: none no-repeat scroll 0 0 rgba(1, 56, 110, 0.7);
    border-radius: 10px 10px 10px 10px;
    box-shadow: 0 0 5px #0099FF;
    color: white;
    margin: 10px auto;
    padding: 10px;
    text-align: justify;
    width: -moz-fit-content;
  }
}

ตอนนี้คำสั่งสุดท้าย"width: -moz-fit-content;" คือว่าสิ่งที่ฉันต้องการ!

ปัญหาเดียวคือ .. มันใช้งานได้บน Firefox เท่านั้น

ฉันลองใช้"display: inline-block;" ด้วย แต่ฉันต้องการให้ div เหล่านี้ทำงานเหมือน div กล่าวคือทุก div ถัดไปควรอยู่ภายใต้และไม่อยู่ในบรรทัดก่อนหน้า

คุณรู้จักโซลูชันข้ามเบราว์เซอร์ที่เป็นไปได้หรือไม่?


1
ลองใช้คำตอบเหล่านี้ stackoverflow.com/questions/5803030/…
Matt H

4
Chome รองรับfit-contentแล้ว
LinuxDisciple

เบราว์เซอร์ทุกคน (ยกเว้น IE) fit-contentไม่สนับสนุนในขณะนี้ เบราว์เซอร์ Firefox ทุกยกเว้นมันทำงานโดยไม่มีคำนำหน้า, Firefox -moz-fit-contentยังคงต้องการ ดูdeveloper.mozilla.org/en-US/docs/Web/CSS/…
biolauri

คำตอบ:


168

ในที่สุดฉันก็แก้ไขได้ง่ายๆโดยใช้:

display: table;

4
ฉันมาที่นี่เพื่อค้นหาคำศัพท์เดียวกันกับคำถามของคุณ ฉันทำdisplay: tableและตั้งmargin: autoศูนย์กform. เยี่ยมมาก! : D
Leniel Maccaferri

นอกจากนี้ฉันต้องใช้ white-space: pre! important;
Bimal Das

2
max-width: 100%ไม่เคารพคุณลักษณะบางอย่างเช่น
Daniel

เบราว์เซอร์ทุกคน (ยกเว้น IE) fit-contentไม่สนับสนุนในขณะนี้ เบราว์เซอร์ Firefox ทุกยกเว้นมันทำงานโดยไม่มีคำนำหน้า, Firefox -moz-fit-contentยังคงต้องการ ดูdeveloper.mozilla.org/en-US/docs/Web/CSS/…
biolauri

72

MDN ของ Mozilla แนะนำสิ่งต่างๆเช่น [ แหล่งที่มา ] ต่อไปนี้:

 p {
  width: intrinsic;           /* Safari/WebKit uses a non-standard name */
  width: -moz-max-content;    /* Firefox/Gecko */
  width: -webkit-max-content; /* Chrome */
}

เราระบุระยะความกว้างสองเท่าของการกำหนดสไตล์ p ได้ไหม ชอบความกว้าง: เนื้อแท้; / * Safari / WebKit ใช้ชื่อ/ ความกว้างที่ไม่ได้มาตรฐาน: -moz-max-content; / Firefox / Gecko * /
Sagar Bhosale

1
-moz-max-contentเทียบเท่า-moz-fit-contentในขณะที่องค์ประกอบหลักกว้างกว่าเท่านั้น -moz-fit-contentจะพอดีกับเนื้อหาและตัดข้อความ แต่-moz-max-contentจะขยายออกไปนอกองค์ประกอบหลัก เช่นเดียวกันกับ Chrome -webkit-max-contentและfit-content.
LinuxDisciple

อย่าลืมเพิ่มwidth: max-content;.
Tobias Tengler

14

ในกรณีที่คล้ายกันฉันใช้: white-space: nowrap;


1
สิ่งนี้ช่วยแก้ปัญหาของฉันเกี่ยวกับการล้นของเนื้อหาแบบเลื่อนลง ขอบคุณ!
Zach Leighton

8

มีประกาศเดียวที่แก้ไขปัญหานี้สำหรับ Webkit, Gecko และ Blink หรือไม่? ไม่อย่างไรก็ตามมีวิธีแก้ปัญหาข้ามเบราว์เซอร์โดยการระบุค่าคุณสมบัติความกว้างหลายค่าที่สอดคล้องกับรูปแบบของเครื่องมือโครงร่างแต่ละแบบ

.mydiv {  
  ...
  width: intrinsic;           /* Safari/WebKit uses a non-standard name */
  width: -moz-max-content;    /* Firefox/Gecko */
  width: -webkit-max-content; /* Chrome */
  ...
}

ดัดแปลงมาจาก: MDN


2

ฉันใช้สิ่งเหล่านี้:

.right {display:table; margin:-18px 0 0 auto;}
.center {display:table; margin:-18px auto 0 auto;}


-1

ทำไมไม่ใช้brs บ้าง?

<div class="mydiv-centerer">
    <div class="mydiv">Some content</div><br />
    <div class="mydiv">More content than before</div><br />
    <div class="mydiv">Here is a lot of content that
                       I was not anticipating</div>    
</div>

CSS

.mydiv-centerer{
    text-align: center;
}

.mydiv{
    background: none no-repeat scroll 0 0 rgba(1, 56, 110, 0.7);
    border-radius: 10px 10px 10px 10px;
    box-shadow: 0 0 5px #0099FF;
    color: white;
    margin: 10px auto;
    padding: 10px;
    text-align: justify;
    display:inline-block;
}

ตัวอย่าง: http://jsfiddle.net/YZV25/


2
ขอบคุณมากมันใช้งานได้ แต่มันทำให้ยากเกินไปที่จะจัดการระยะขอบบนและล่างระหว่าง div ฉันพบวิธีแก้ปัญหาที่ดีกว่าเพียงแค่ใช้display: table;แทนdisplay: inline-block;.
Darme
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.