margin
Özelliği her hangi bir tanımlama sınırlarının bir elemanı etrafında boşluk, dış oluşturma, kutu modelinin en dış kısmını tanımlar.
Kenar boşlukları uzunluklar, yüzdeler veya anahtar sözcük kullanılarak belirlenir auto
ve negatif değerlere sahip olabilir. İşte bir örnek:
.box ( margin: 0 3em 0 3em; )
margin
steno bir özelliktir ve burada gösterilen en fazla dört değeri kabul eder:
.box ( margin: || || || )
Dörtten az değer ayarlanırsa, eksik değerler tanımlananlar temel alınarak varsayılır. Örneğin, aşağıdaki iki kural kümesi aynı sonuçları alacaktır:
.box ( margin: 0 1.5em; ) .box ( margin: 0 1.5em 0 1.5em; )
Bu nedenle, yalnızca bir değer tanımlanırsa, bu, dört kenar boşluğunu da aynı değere ayarlar. Üç değer bildirilmişse, öyledir margin: (top) (left-and-right) (bottom);
.
Tek tek marjlardan herhangi biri uzun el kullanılarak bildirilebilir, bu durumda özellik başına yalnızca bir değer tanımlamanız gerekir:
.box ( margin-top: 20px; margin-right: 10px; margin-bottom: 20px; margin-left: 10px; )
auto
ve merkezleme
Kenar boşluğu özelliklerinin her biri bir değerini de kabul edebilir auto
. Bir değeri auto
temelde tarayıcıya sizin için marjı tanımlamasını söyler. Çoğu durumda, değeri auto
bir değerine 0
(her bir marj özelliği için başlangıç değeridir) veya başka bir şekilde elemanın o tarafında bulunan boşluğa eşdeğer olacaktır . Bununla birlikte, auto
yatay merkezleme için kullanışlıdır:
.container ( width: 980px; margin: 0 auto; )
Bu örnekte, bu öğeyi mevcut alan içinde yatay olarak ortalamak için iki şey yapılmıştır:
- Elemana belirli bir genişlik verilir
- Sol ve sağ kenar boşlukları
auto
Belirtilen genişlik olmadan, auto
değerlerin esasen hiçbir etkisi olmayacak, sol ve sağ kenar boşluklarını 0
ana öğenin içindeki kullanılabilir alan ne olursa olsun ayarlayacaktır .
Aynı zamanda, sivri üzerinden olmalıdır auto
sadece yatay merkezleme için, kullanılarak çok yararlıdır auto
başlayanlar için kafa karıştırıcı olabilir, dikey bir eleman merkezi olmayacak üst ve alt kenar için.
Daralan kenar boşlukları
Birbirine dokunan farklı öğeler üzerindeki dikey kenar boşlukları (dolayısıyla bunları ayıran içerik, dolgu veya kenarlık içermeyen), bitişik kenar boşluklarından büyük olana eşit tek bir kenar boşluğu oluşturarak daralacaktır. Bu, yatay kenar boşluklarında (sol ve sağ) olmaz, yalnızca dikeyde (üst ve alt) olur.
Göstermek için aşağıdaki HTML'yi alın:
Collapsing Margins
Example text.
Ve aşağıdaki CSS:
h2 ( margin: 0 0 20px 0; ) p ( margin: 10px 0 0 0; )
Bu örnekte, h2
öğeye 20 piksellik bir alt kenar boşluğu verilmiştir. Kaynakta onu hemen takip eden paragraf öğesi, 10px olarak ayarlanmış bir üst kenar boşluğuna sahiptir.
Sağduyu h2
, paragraf ile paragraf arasındaki dikey kenar kalınlığının toplam 30 piksel (20 piksel + 10 piksel) olacağını düşündürür. Ancak marj çökmesi nedeniyle, gerçek kalınlık 20 piksel olur. Bu, aşağıdaki gömülü kalemde gösterilmiştir:
Bu Kaleme bakın!
Daralan kenar boşlukları ilk bakışta sezgisel görünmese de, aslında birkaç nedenden dolayı yararlıdır. İlk olarak, boş öğelerin fazladan, genellikle istenmeyen dikey kenar boşluğu eklemesini önlerler.
İkincisi, sayfa öğeleri arasında evrensel kenar boşlukları bildirmek için daha tutarlı bir yaklaşıma izin verirler. Örneğin, başlıklar genellikle dikey kenar boşluğuna sahiptir ve paragraflar da öyle. Kenar boşlukları daralmadıysa, paragrafları takip eden başlıklar (veya tam tersi), tutarlı bir dikey aralık elde etmek için öğelerden birinin kenar boşluklarının yeniden ayarlanmasını gerektirir.
Üçüncüsü, kenar boşluğu daraltması iç içe yerleştirilmiş öğeler için de geçerlidir. Aşağıdaki kaleme bakın:
Bu Kaleme bakın!
Burada, paragraf öğesi 30px olarak ayarlanmış div
bir üst kenar boşluğuna sahiptir ve 40px üst kenar boşluğuna sahip bir öğenin içine yerleştirilmiştir . Ek olarak, h2
öğenin 20 piksellik bir alt kenar boşluğu vardır.
Yine, sağduyu, buradaki toplam dikey kenar boşluğunun 90 piksel (20 piksel + 40 piksel + 30 piksel) olacağını, ancak bunun yerine kenar boşluklarının hepsinin tek bir 40 piksellik kenar boşluğuna (üçün en yükseği) daralacağını önerecektir. Fazladan dikey boşluğu kaldırmak için üst kenar boşluklarını yeniden tanımlamaya gerek olmadığından bu çoğu durumda yararlıdır.
Negatif Marjlar
Şüphelenebileceğiniz gibi, pozitif bir marj değeri diğer öğeleri uzaklaştırırken, negatif bir kenar boşluğu ya öğeyi o yönde çeker ya da diğer öğeleri ona doğru çeker.
Aşağıda, dolgulu bir kapsayıcı örneği verilmiştir ve başlık h2, kendisini bu dolgudan kenarlara doğru çeken negatif kenar boşluklarına sahiptir:
CodePen'de Chris Coyier (@chriscoyier) tarafından Negatif Kenar Boşlukları için Kalem En Yaygın Kullanım
Örneği'ne bakın.
Aşağıda, ilk paragrafın negatif bir alt kenar boşluğuna sahip olduğu ve sonraki paragrafı yukarı çeken bir örnek var.
CodePen'de Chris Coyier (@chriscoyier) tarafından yazılan Pen Negative Margin alt paragrafını çekerek
görün.
Tarayıcı Desteği
Krom | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
İşler | İşler | İşler | İşler | İşler | İşler | İşler |
IE6, çoğu durumda display: inline
kayan öğeye eklenerek çözülebilen iki kat kayan marj hatasına eğilimlidir .