2010-12-10 15 views

cevap

17

Varsayılan olarak, çevresinde <textarea> öğesi bir kenarlıkla işlenir. Bununla ilgili sorun, bir öğeye width özelliğini ayarladığınızda, yalnızca genişlik değil, içerik genişliğini ayarlamanızdır. Öğenin toplam genişliği (genişlik + kenar + dolgu + kenar boşluğu)'u <textarea>'da% 100 olarak ayarladığınızda içerik genişliği'u 300 piksele ayarlar, ancak toplam genişlik 300px artı varsayılan sınırdır. Bu, 'un 300 piksel genişliğini aşmasına neden olur.

Sen dolgu/marjları kullanılarak <div> bu sınırları alabilecek edersiniz, ancak daha iyi bir çözüm kadar her şeyin toplam genişliğini tanımlamak için width özelliğini zorlamak için border-box için <textarea> üzerine box-sizing özelliğini ayarlamak olacaktır ve öğenin sınırı dahil.

tüm tarayıcılar (örn -moz-box-sizing, -ms-box-sizing, -webkit-box-sizing, vs.) farklı olarak ilan çünkü O mülk üzerinde biraz araştırma yapmanız gerekir

. Bakmanız için Here is the QuirksMode page on box-sizing.

Firefox için box-sizing düzeltme işleri çalışıyor, ancak başka tarayıcılarda test etmedim. Bazıları, özellikle de quirks/legacy modundayken, öğeye bir kenar boşluğu da uygulanabilir. Bu durumda, yapmanız gereken tek şey, kenar boşluklarını CSS ile kaldırmak olacaktır (AFAIK, kenar boşluklarına uzanan, yalnızca içerik, dolgu ve kenarlık için olanlar için box-sizing için geniş bir şekilde desteklenen bir seçenek yoktur).

Bu düzeltme ile spesifik olmak ve sadece sol/sağ kenar boşluklarını kaldırma öneririm

(yani margin-left: 0; margin-right: 0;) onlar ve siz (isterseniz varsa (yani margin: 0;) Herhangi alt/üst kenar boşluklarını korumak için oldukça tamamen marjları kaldırarak daha onları tutmak için). Firefox'un üst/alt kısma 1 piksellik bir marj uyguladığını ve diğer tarayıcıların da kullanılabileceğini biliyorum.

+1

Mükemmel bir cevap. Teşekkür ederim. Bu benim soruyu mükemmel bir şekilde yanıtlıyor –

+0

@ming yeow: Yardım etmekten memnun oldum. – AgentConundrum

+1

Böyle bir açıklama yazmak için ne bir sabır, teşekkürler + 1 – kobe

0

arasında uyumun sağlanmasında bana güçlük çıkaran ben Firefox, Chrome ve IE ve içinde hepsi düzgün gösterdiğini çalıştı. DIV'in başka bir konteynerin içinde olduğundan şüpheleniyorum ve bu da soruna neden oluyor.

Lütfen kodunuzun bir bölümünü ekleyin.

+0

Sorunu FF 3.6'da yeniden oluşturmayı başardım. Detaylar için cevabımı görün. – AgentConundrum

+0

Bence quirks modunda test yapıyorsunuz. Tarayıcıyı standart modda zorlamak için test sayfanızın üst kısmına "" gibi bir doctype ekleyin ve sorunu gün olarak net olarak göreceksiniz. – AgentConundrum

+0

Haklısınız. Mükemmel cevap! –

0

Tekstüre bir kenar boşluğu uygulanmış olabilir. Bu deneyin: Test

<div style="border:1px solid #ccc; width:300px"> 
    <textarea style="width:100%; margin: 0;"></textarea> 
</div> 
+1

FireBug'a göre sorun kenarlık değil kenarlıktır. Detaylar için cevabımı görün. – AgentConundrum

+0

İyi çağrı. İyi cevaplar da var. –

0
<div style="border:1px solid #ccc; width:300px"> 
    <textarea style="width:100%"></textarea> 
</div> 

Firefox 3.6.10, Internet Explorer 8 ve Google Chrome üzerinde çalışıyor.

Ama belki yerine DIV çevrelerdi, sen de bu deneyebilirsiniz: Orijinal koduyla aynı görünüyor hakkında sahiptir

<textarea style="border:1px solid #ccc; width:300px"></textarea> 

.

+0

Standart modda değil, quirks modunda test yaptığınızı göreceksiniz. Benim için de quirks modunda iyi çalışıyor ama standart modda kırılıyor. – AgentConundrum

+0

Aptal ses çıkarsam özür dilerim, ama yine de quirks modu ve standart mod arasındaki farkları anlayamıyorum, evet, Wikipedia makalesini okudum, kısa bir açıklama yapabilir misiniz? –

+0

@rao Sadece 2 farklı modun olduğunu fark ettim! = D –