2012-06-17 18 views
32

tanımlanan I ettik genişlikleri. Sınır genişliği px ise kapsayıcı genişlik% iken, bir sınır (bir genişliğin sağ tarafında 3px) eklemek istiyorum, kabın genişliğini nasıl ayarlayabilirim?CSS: yüzdesi kapların yüzdesi genişliği ve Sınırlar

<div class="wrap"> 
    <div class="left">...</div> 
    <div class="right">...</div> 
</div> 

.wrap{ 
    width:100%; 
} 

.left{ 
    width:30%; 
} 

.right{ 
    width:70%; 
} 

.pft. Sağ tarafına 3px kenarlık eklemek istiyorum. Örneğin:

I% genişliği tanımladık
.left{ 
    width:30%; 
    border:3px solid #000; 
} 

, .left genişliğini yeniden ayarlamak için en iyi yolu budur. Kabaca kabaca% 29 oranında düşürebilirim, ama kesinlikle yapmak istiyorum. biraz zor ama bir şekilde bu yazı check out

+0

kaba * dolgu * ekleyerek ....

border-width: 10vw; 

Its için

border-width: 10px; 

gibi vw için px do değiştirmek? * Genişlik:% 100 * 'i kaldırmanız gerektiğini unutmayın. arasında –

+1

Olası kopyalar (http [kimin genişliği yüzdesi olan bir div 1px sınır I nasıl eklerim?]: // stackoverflow.com/questions/8278523/how-do-i-add-1px-border-to-a-div-kimin-width-bir-yüzdesi) – Fractalizer

cevap

81

kullanın box-sizing: border-box özelliği. Kutu modelinin, elemanın toplam genişliğinin bir parçası olarak dolgu ve kenarlığı işlemek için davranışını modifiye eder (kenar boşlukları değil). Bu eleman grubu genişlik veya yükseklik dolgu ve kenarlığın ayarlanmış boyutları içerir anlamına gelir. Sizin durumunuzda, bu elemanın genişliği anlamına gelecektir ve sınırın genişliği mevcut alanın% 30'unu tüketecektir.

.left { 
    width: 30%; 
    border: 3px solid #000; 

    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    -ms-box-sizing: border-box; 
    box-sizing: border-box; 
} 

fazla bilgi MDN ve Quirksmode bulunabilir: bunun için

CSS box model

Destek mükemmel değildir, ancak satıcı önekleri tümü olmasa bile çoğu modern tarayıcılar yakalayacak. (-moz-, -webkit- ve -ms-) Yukarıdaki 3 satıcı önekleri kullanılarak

According to Quirksmode

, Tüm tarayıcılarda bile IE8 için destek alın.

+18

neden bu varsayılan davranış değil – magritte

+1

"Tüm tarayıcılar" Yukarıda belirtilen şu anlama gelir: http://caniuse.com/#search=border-box - Yani, IE6 ve IE7 yok. –

+0

@Emil – Bojangles

4

en kolay çapraz tarayıcı yolu dış bölümlerde; sınır ayarlayın ve yerine .left içinde YENİ div üzerinde ayarlayın DEĞİL etmektir. Basit ve iyi çalışıyor. Yüzde yapmak neyin

+0

Teşekkürler, en temiz çözüm işe yarıyor. – Alex

1

Sadece

+0

vw ve vh yüzde kaçını yapmazlar. Görünüş alanı birimleridir ve görünüm alanı içinde öğeleri göz ardı ederek görünümün genişliğini temel alır. – Carlin

İlgili konular