display:block;width:auto;Metin girişimde neden div gibi davranmıyor ve kap genişliğini doldurmuyor?
Bir div'in otomatik genişliğe sahip bir blok öğesi olduğu izlenimi altındaydım. Aşağıdaki kodda div ve giriş aynı boyutlara sahip olmamalıdır?
Girişin genişliği doldurmasını nasıl sağlayabilirim? Girişte dolgu ve kenarlık olduğu için% 100 genişlik çalışmaz (1 piksel + 5 piksel +% 100 + 5 piksel + 1 piksel nihai genişliğe neden olur). Sabit genişlikler bir seçenek değil ve daha esnek bir şey arıyorum.
Geçici bir soruna doğrudan yanıt vermeyi tercih ederim. Bu bir CSS tuhaflığı gibi görünüyor ve daha sonra yararlı olabileceğini anlamak.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
Şunu da belirtmeliyim ki bunu zaten paketleyici çözümleriyle yapabilirim. Bu sayfa semantiği ve CSS seçici ilişkileri ile vidalama dışında sorunun doğasını ve INPUT kendi doğasını değiştirerek üstesinden gelip gelemeyeceğini anlamaya çalışıyorum.
Tamam, bu gerçekten garip! Çözümün sadece max-width:100%bir girdiye eklemek olduğunu gördüm width:100%;padding:5px;. Ancak bu daha fazla soru ortaya çıkarır (ki bu ayrı bir soruda soracağım), ancak genişliğin normal CSS kutusu modelini, max-width ise Internet Explorer sınır kutusu modelini kullanıyor gibi görünüyor. Ne tuhaf.
Tamam, bu sonuncusu Firefox 3'te bir hata gibi görünüyor. Internet Explorer 8 ve Safari 4, maksimum genişliği% 100 + dolgu + sınır ile sınırlandırıyor; Son olarak, Internet Explorer doğru bir şey buldu.
Aman tanrım, bu harika! Bununla oynama sürecinde ve saygın gurus Dean Edwards ve Erik Arvidsson'dan çok yardım alarak, rastgele dolgu ve kenarlıklara sahip öğeler üzerinde% 100 genişlikte gerçek bir çapraz tarayıcı yapmak için üç ayrı çözümü bir araya getirmeyi başardım. Aşağıdaki cevaba bakınız. Bu çözüm fazladan HTML işaretlemesi gerektirmez, sadece bir sınıf (veya seçici) ve eski Internet Explorer için isteğe bağlı bir davranış gerektirir.
inputgörünüşte CSS 2.1 spesifikasyonuna uymayan elemanların problemini ele alırken, bağlandığınız soru, CSS 2.1 spesifikasyonunun sınırları dahilinde mükemmel bir şekilde meydana gelen taşma kutularının nasıl önleneceğini soruyor. Hem sorular hem de çözümleri örtüşüyor, ancak onlara tam kopyalar demek yanlış.