2015-08-14 9 views
8

Görünüm penceresini, esnek kutu kapsayıcılarına dayalı bir düzen ile azalttıktan sonra küçük bir fark gördüm. Aşağıdaki kod parçacığı iki kapsayıcı içinde birkaç bağlantı içerir (.container ve .subcontainer). Chrome'da (45 beta), element sınıfına sahip div'lar, görünüm boyutu ne olursa olsun aynı genişliğe sahiptir. Ancak, Firefox'ta (40), her divun genişliği içeriğine bağlı olarak değişir. div genişliği, Firefox vs Chrome'da farklı görünümlerde farklı bir görünüm sergiliyor.

html, 
 
    body { 
 
    margin: 0; 
 
    padding: 0; 
 
    } 
 
    .container { 
 
    position: relative; 
 
    display: flex; 
 
    flex-direction: column; 
 
    width: 50%; 
 
    } 
 
    .element { 
 
    flex: 1 0 0; 
 
    padding: 0.5em; 
 
    text-align: center; 
 
    position: relative; 
 
    background-color: red; 
 
    margin-right: 1em; 
 
    } 
 
    .subcontainer { 
 
    flex: 0 1 auto; 
 
    display: flex; 
 
    } 
 
    .element a { 
 
    color: black; 
 
    }
<!DOCTYPE html> 
 
<html> 
 

 
<body> 
 
    <div class="container"> 
 
    <div class="subcontainer"> 
 
     <div class="element"><a>abc</a> 
 
     </div> 
 
     <div class="element"><a>abcdef</a> 
 
     </div> 
 
     <div class="element"><a>abcdef</a> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</body> 
 

 
</html>
ben "Run kod parçacığı" işlevi bu değişikliği görmesine izin vermez düşünüyorum, bu yüzden fark gösteren videoları bir çift sağlar:

Krom:

enter image description here

Firefox:

enter image description here

Gördüğünüz gibi, kutular Chrome'da aynı genişliğe, ancak Firefox oldukça belirgin ilk kutuyu kısıtlar ve diğer kutuları da aynı tutarak. Bu tutarsızlığın sebebi nedir ve nasıl düzeltebilirim? Her kutu için aynı genişliğe sahip olmak isterim. İlk etapta flex: 1 0 0 kullanmanın amacı buydu. Herhangi İhtiyacınız değeri, ya da sadece 0px için min-width ayarlamak için

Teşekkür

+0

Ne demek 'değişimi görmenize izin vermiyor'? Fx40'ım var ve snippet'i çalıştırırken ekran görüntüsünde yakalanan sorunu görmüyorum. – klaar

+0

Evet. SO'da "Kod snippet'ini çalıştır" özelliğine atıfta bulundum (tarayıcınızın boyutunu kaydırma çubuğu oluşturmadan azaltmanıza izin vermez). Ancak, html snippet'ini başka bir pencerede kullanıyorsanız, yeniden boyutlandırmanız gerekir. tarayıcı farkı görmek için biraz. Bir noktada, Firefox içeriğe bağlı olarak her divun genişliğini değiştirir. –

cevap

6

Dene:

.element 
{ 
    ... 
    min-width: 0px; 
} 

Fiddle

Ayrıntıları Firefox esnek öğeleri için

varsayılan olarak min-width:min-content sahiptir sivri here olarak

Bu uygulamalar bu anahtar kelime için biraz daha basit davranış uygulanması: Bu esnek öğeleri-içeriği min bilgisayarlı ve her şeyin üzerinde 0'a hesaplar. jsfiddle - biz Chrome için min-width:-webkit-min-content ayarlarsanız

Yani, aynı istenmeyen davranış olacaktır.

+0

İlginç. İşe yarıyor. Teşekkür ederim. Min-width neden biliyor musunuz: 0px; bu sorunu giderir mi? –

+0

@RobertSmith, –

+0

cevabım ile ilgili ayrıntıları ekledim. "Px" olmadan "min-width: 0" yazabilirsiniz. –