2012-06-09 24 views
8

this example'dan da görebileceğiniz gibi, input, üst div "taşması" gibi görünüyor. Ebeveynini taşmasına gerek kalmadan input'a dolgu eklemek istiyorum.Yastıklı alt öğe üst öğesinin taşmasını nasıl önler?

Her tarayıcı için en iyi çözümü/çözümü (IE, Firefox, Chrome vb. Dahil) bilmek istiyorum.

+0

Bu önceki sorunun cevabına bakın: [width: 100% -padding?] (Http://stackoverflow.com/questions/5219175/width-100-padding) –

cevap

25

Sen this answer görebilirsiniz ama eğer beğenmezseniz' böyle t, böyle box-sizing CSS3 özelliği kullanabilirsiniz:

input { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

Live jsFiddle example

+0

Nitekim iyi çözüm maalesef CSS3 olan –

+1

@RicardoRodrigues Çoğu modern tarayıcı zaten bakın bu özelliği desteklemektedir: .. http://caniuse.com/#search=box-sizing –

+0

Uhm yüzden desteklendi bilmiyordum. Teşekkürler ve üzgünüm. –

0

İç alanın genişliğini 100% olarak belirtmeyin. Bir div, ebeveyn kabının genişliğine otomatik olarak sığar. giriş div içinde olduğunu ancak sol üst köşesinde yer almaktadır gibi Demo

+0

Ama bir girdi kullandım, işe yaramadı benim örneğim için. –

+0

Oh, sen değiştirdin. Bu jsfiddle ilk revizyonunda bir div oldu .. – sachleen

+0

Deneme için teşekkürler, ama oldu .. ama stackoverflow örneğiydi girdi. –

0

görünüyor. Giriş, div genişliğinin% 100'ünü aldığından, div'un kırmızı arka planını engeller. Div daha uzun olduğundan, girişin üstte olduğu gibi görünmesini sağlayarak tabana yapışır. Aşağıdakileri yapın:

  • dış div değil giriş kutusu
    ait CSS dolgu uygulayın.
    İsterseniz girdiye bir kenar boşluğu uygulayabilirsiniz, ancak sanırım doldurma bölmesini içeren dolgu daha iyidir.
    • div (<% 100)
+0

O halde mükemmel merkeze uymuyor. Yardım için teşekkürler –

+0

Girdi üzerinde bir marj-sol ortalamak için hile yapardı. – GrantVS

2

doldurma için nesnesinin genişliği ekler daha giriş kutusu az geniş olun. Bir seçenek, sol/sağ dolguyu girişten kaldırmak ve sadece sağ dolguyu kaldırmasına rağmen sadece metin girintisini kullanmak olacaktır.

.inside{ 
    background: blue; 
    border: none; 
    padding-bottom: 10px; 
    padding-top: 10px; 
    text-indent: 10px; 
    width: 100%; 
} 

Alternatif bunun yerine, yüzdeler kullanabilir ve genişliği o değerini çıkarmak olabilir senin dolgu için kodlanmış piksel genişlikleri kullanmanın:

.inside{ 
    padding: 3%; 
    width: 94%; 
} 
+0

Sorun, sınırdaki girişteki metnin istemesini istemiyor. Ama bahşiş için teşekkürler –

+0

Eh, düşündüğüm çözümlerden biri. Diğer cevapları göreceğim, çünkü en iyi yol ve crossbrowser çözümünü arıyorum. Başka bir fikir şu pozisyonu kullanıyordu: absolute; Sağ: 0; left: 0 ve bir genişlik tanımlayın, ardından kenar boşluğunu kullanarak ortalayın: auto; –

İlgili konular