Html dikey merkez hizalaması. Form öğelerinin hizalanması. Streç hizalama

  • 05.06.2019

Elemanların yatay ve dikey hizalanması farklı şekillerde yapılabilir. Yöntem seçimi, eleman tipine (blok veya satır içi), konumlandırma tipine, boyutlara vb. bağlıdır.

1. Blok / sayfanın ortasına yatay hizalama

1.1. Blok bir genişliğe sahipse:

div (genişlik: 300 piksel; kenar boşluğu: 0 otomatik; / * öğeyi üst blok içinde yatay olarak ortalayın * /)

Bir satır içi öğeyi bu şekilde hizalamak istiyorsanız, display:block;

1.2. Blok başka bir blokta yuvalanmışsa ve bunun için genişlik ayarlanmamışsa/ayarlanmamışsa:

.wrapper (metin hizalama: orta;)

1.3. Blok bir genişliğe sahipse ve ana bloğun merkezine sabitlenmesi gerekiyorsa:

.wrapper (konum: göreceli; / * daha sonra kutunun kesinlikle içine yerleştirilebilmesi için ana kutu için göreceli konumlandırmayı ayarlayın * /) .box (genişlik: 400 piksel; konum: mutlak; sol: %50; sol kenar boşluğu : -200px; / * bloğu genişliğinin yarısı kadar sola kaydır * /)

1.4. Bloklar için genişlik belirtilmemişse, üst sarmalayıcı bloğunu kullanarak ortalayabilirsiniz:

.wrapper (metin hizalama: merkez; / * bloğun içeriğini merkeze yerleştirin * /) .box (ekran: satır içi blok; / * blokları yatay olarak sıralayın * / kenar boşluğu: -0.25em ; / * bloklar arasındaki sağ girintiyi kaldırın * /)

2. Dikey hizalama

2.1. Metin, örneğin düğmeler ve menü öğeleri için bir satıra yayılıyorsa:

.button (yükseklik: 50 piksel; satır yüksekliği: 50 piksel;)

2.2. Bir ana blok içinde bir bloğu dikey olarak hizalamak için:

.wrapper (konum: göreli;) .box (yükseklik: 100 piksel; konum: mutlak; üst: %50; kenar boşluğu: -50 piksel 0 0 0;)

2.3. Tablo türüne göre dikey hizalama:

.wrapper (ekran: tablo; genişlik: %100;) .box (ekran: tablo hücresi; yükseklik: 100 piksel; metin hizalama: merkez; dikey hizalama: orta;)

2.4. Bir bloğun genişliği ve yüksekliği varsa ve ana blokta ortalanması gerekiyorsa:

.wrapper (konum: göreceli;) .box (yükseklik: 100 piksel; genişlik: 100 piksel; konum: mutlak; üst: 0; sağ: 0; alt: 0; sol: 0; kenar boşluğu: otomatik; taşma: otomatik; / * ile içerik sürünmedi * /)

2.5. CSS3 dönüşümü kullanılarak sayfanın / bloğun ortasında mutlak konumlandırma:

eleman boyutlandırılmışsa

div (genişlik: 300 piksel; / * blok genişliğini ayarlayın * / yükseklik: 100 piksel; / * blok yüksekliğini ayarlayın * / transform: translate (-50%, -50%); konum: mutlak; üst: %50; sol: %50 ;)

eleman boyutlandırılmamışsa ve boş değilse

Burada biraz metin

h1 (kenar boşluğu: 0; dönüştürme: çevir (-50%, -%50); konum: mutlak; üst: %50; sol: %50;)

Her düzen tasarımcısı sürekli olarak içeriği bir blokta yatay veya dikey olarak hizalama ihtiyacıyla karşı karşıyadır. Bu konuda birkaç iyi makale var, ancak hepsi birçok ilginç, ancak birkaç pratik seçenek sunuyor, bu yüzden ana şeyi vurgulamak için fazladan zaman harcamanız gerekiyor. Artık google'da aramamak için bu bilgileri benim için uygun olan formda göndermeye karar verdim.

Blokları Bilinen Boyutlarla Hizalama

CSS'yi kullanmanın en kolay yolu, önceden belirlenmiş bir yüksekliğe (dikey hizalama için) veya genişliğe (yatay hizalama için) sahip blokları hizalamaktır.

Dolgu ile hizalama

Bazen bir öğeyi ortalayamazsınız, ancak ona " ile kenarlıklar ekleyebilirsiniz. dolgu malzemesi".

Örneğin 200x200px bir resminiz varsa, 240x300 blokta ortalamak istiyorsunuz.Dış kutunun yüksekliğini ve genişliğini 200px olarak ayarlayıp, üstte ve altta 20px, solda 50'şer adet ekleyebiliriz. sağ.

.example-wrapper1 (arka plan: # 535E73; genişlik: 200 piksel; yükseklik: 200 piksel; dolgu: 20 piksel 50 piksel;)

Kesinlikle konumlandırılmış kutuları hizalama

Blok "olarak ayarlanmışsa pozisyon: mutlak", daha sonra en yakın ebeveyne göreli olarak" konum: göreceli " ile konumlandırılabilir. Bunun için tüm özelliklerin (" Tepe","sağ","alt","sol") aynı değeri iç üniteye ve ayrıca" kenar boşluğu: otomatik "a atayın.

* Bir nüans var: İç bloğun genişliği (yüksekliği) + sol (sağ, alt, üst) değeri ana bloğun boyutunu geçmemelidir. Sol (sağ, alt, üst) özelliklerini 0 (sıfır) olarak ayarlamak daha güvenlidir.

.example-wrapper2 (konum: göreli; yükseklik: 250 piksel; arka plan: url (boşluk.jpg);) .cat-king (genişlik: 200 piksel; yükseklik: 200 piksel; konum: mutlak; üst: 0; sol: 0; alt: 0; sağ: 0; kenar boşluğu: otomatik; arka plan: url (king.png);)

Yatay hizalama

"Metin hizalama: merkez" ile hizalayın

Bir bloktaki metni hizalamak için özel bir özellik var " Metin hizalama". Değer ayarlandığında" merkez"metnin her satırı yatay olarak hizalanacaktır. Çok satırlı metinler için bu çözüm çok nadiren kullanılır, daha sık olarak bu seçenek açıklıkları, bağlantıları veya görüntüleri hizalamak için bulunabilir.

Bir keresinde CSS ile metin hizalamanın nasıl çalıştığını göstermek için bir metin bulmam gerekti ama aklıma ilginç bir şey gelmedi. İlk başta bir tekerlemeyi bir yere kopyalamaya karar verdim, ancak bunun makalenin benzersizliğini bozabileceğini ve sevgili okuyucularımızın Google'da bulamayacağını hatırladım. Ve sonra bu paragrafı buraya yazmaya karar verdim - sonuçta mesele onunla değil, nokta aynı hizada.

.example-text (metin hizalama: merkez; dolgu: 10 piksel; arka plan: # FF90B8;)

Bu özelliğin yalnızca metin için değil, aynı zamanda herhangi bir satır içi öğe ("ekran: satır içi") için de çalışacağına dikkat edilmelidir.

Ancak bu metin sola hizalanmıştır, ancak sarıcıya göre ortalanmış olan bloktadır.

.example-wrapper3 (metin hizalama: merkez; arka plan: # FF90B8;) .inline-text (ekran: satır içi blok; genişlik: %40; dolgu: 10 piksel; metin hizalama: sol; arka plan: # FFE Загрузка;)

Kutuları kenar boşluklarıyla hizalama

Genişliği bilinen blok öğeleri, "sol kenar boşluğu: otomatik; kenar boşluğu sağ: otomatik" olarak ayarlanırsa yatay olarak kolayca hizalanır. Kısaltılmış gösterim genellikle kullanılır: " kenar boşluğu: 0 otomatik"(sıfır yerine herhangi bir değer kullanılabilir). Ancak bu yöntem dikey hizalama için çalışmayacaktır.

.lama-sarmalayıcı (yükseklik: 200 piksel; arka plan: # F1BF88;) .lama1 (yükseklik: 200 piksel; genişlik: 200 piksel; arka plan: url (lama.jpg); kenar boşluğu: 0 otomatik;)

Bu, mümkün olduğunda (sabit veya mutlak konumlandırmanın gerekli olmadığı durumlarda) tüm blokları hizalamaya değerdir - en mantıklı ve yeterlidir. Her ne kadar bariz görünse de bazen olumsuz marjlarla ürkütücü örnekler gördüm, bu yüzden açıklığa kavuşturmaya karar verdim.

Dikey hizalama

Dikey hizalamayla ilgili daha birçok sorun var - görünüşe göre bu CSS'de sağlanmamıştı. İstenilen sonuca ulaşmanın birkaç yolu vardır, ancak hepsi çok hoş değildir.

line-height özelliğiyle hizalama

Bir blokta yalnızca bir satır olması durumunda, dikey hizalamasını " satır yüksekliği"ve istenen yüksekliğe ayarlamak. Güvenilirlik için, değeri "line-height" değerine eşit olacak "high" ayarına da değer, çünkü ikincisi tüm tarayıcılarda desteklenmez.

.example-wrapper4 (satır yüksekliği: 100 piksel; renk: # DC09C0; arka plan: # E5DAE1; yükseklik: 100 piksel; metin hizalama: merkez;)

Birden çok satırla blok hizalaması elde etmek de mümkündür. Bunu yapmak için ek bir sarmalayıcı blok kullanmanız ve satır yüksekliğini buna ayarlamanız gerekir. İç blok çok satırlı olabilir, ancak "satır içi" gereklidir. Buna "dikey hizalama: orta" uygulamanız gerekir.

.example-wrapper5 (satır yüksekliği: 160 piksel; yükseklik: 160 piksel; yazı tipi boyutu: 0; arka plan: # FF9B00;) .example-wrapper5 .text1 (görüntüleme: satır içi blok; yazı tipi boyutu: 14 piksel; satır yüksekliği: 1.5; dikey hizalama: orta; arka plan: # FFFAF2; renk: # FF9B00; metin hizalama: orta;)

Sarıcı blok "font-size: 0" ayarlı olmalıdır. Yazı tipi boyutunu sıfıra ayarlamazsanız, tarayıcı kendisinden birkaç piksel daha ekleyecektir. Bu özellikler üst öğeden miras alındığından, iç blok için yazı tipi boyutunu ve satır yüksekliğini de belirtmeniz gerekecektir.

Tablolarda dikey hizalama

Mülk " dikey hizalama"tablo hücrelerini de etkiler. "Orta" değeri ayarlandığında, hücrenin içindeki içerik ortalanır. Tabii ki, tablo düzeni bugünlerde arkaik olarak kabul edilir, ancak istisnai durumlarda bunu belirterek simüle edebilirsiniz" ekran: tablo hücresi".

Bu seçeneği genellikle dikey hizalama için kullanırım. Aşağıda hazır bir projeden alınmış bir yerleşim örneği verilmiştir. Bu şekilde dikey olarak ortalanmış olan resim ilgi çekicidir.

.one_product .img_wrapper (ekran: tablo hücresi; yükseklik: 169 piksel; dikey hizalama: orta; taşma: gizli; arka plan: #fff; genişlik: 255 piksel;) .one_product img (maksimum yükseklik: 169 piksel; maksimum genişlik: 100 %; minimum genişlik: 140 piksel; ekran: blok; kenar boşluğu: 0 otomatik;)

Unutulmamalıdır ki, bir öğenin "yok" dışında "kayan" özelliği varsa, o zaman her durumda blok olacaktır (ekran: blok) - o zaman ek bir sarmalayıcı blok kullanmanız gerekecektir.

Ek bir satır içi öğeyle hizalama

Ve satır içi öğeler için uygulayabilirsiniz " dikey hizalama: orta". Bu durumda, tüm öğeler ile" ekran: satır içi"aynı çizgide olanlar ortak merkez çizgisiyle hizalanacaktır.

Ana bloğun yüksekliğine eşit yükseklikte bir yardımcı blok oluşturmanız gerekir, ardından istenen blok ortalanacaktır. Bunun için: Before or: after sözde öğelerini kullanmak uygundur.

.example-wrapper6 (yükseklik: 300 piksel; metin hizalama: merkez; arka plan: # 70DAF1;) .pudge (görüntüleme: satır içi blok; dikey hizalama: orta; arka plan: url (pudge.png); arka plan rengi: # fff; genişlik: 200 piksel; yükseklik: 200 piksel;) .riki (ekran: satır içi blok; yükseklik: %100; dikey hizalama: orta;)

Ekran: esnet ve hizala

Explorer 8 kullanıcılarını çok fazla umursamıyorsanız veya onların iyiliği için fazladan javascript eklemeye hazır olduğunuza o kadar önem veriyorsanız, o zaman "display: flex" kullanabilirsiniz. Esnek kutular, hizalama sorunlarıyla harika bir iş çıkarır ve içindeki içeriği ortalamak için "margin: auto" yazmanız yeterlidir.

Şimdiye kadar, bu yöntemle pratik olarak karşılaşmadım, ancak bunun için özel bir kısıtlama yok.

.example-wrapper7 (ekran: esnek; yükseklik: 300 piksel; arka plan: # AEB96A;) .example-wrapper7 img (kenar boşluğu: otomatik;)

CSS hizalaması hakkında yazmak istediğim tek şey bu. Artık içeriği ortalamak sorun olmayacak!

Bir web sitesinde veya sayfada olduğu gibi çeşitli öğeleri hizalamak, başlangıçta metnin dikey hizalamasını sallayan biri için zor bir iştir. İşin garibi, CSS kullanmanın en zor yollarından biri içeriğinizi ortalamaktır. İçeriği yatay olarak ortalamak, zaman içinde belirli noktalarda nispeten kolaydır. İçeriği dikey olarak ortalamak neredeyse her zaman zordur. CSS kullanarak dikey olarak hizalanacak farklı bir öğeyi ortalamak. Bu kesinlikle tasarımcılar ve web yöneticileri için sorun yaratan çok sık sorulan bir sorudur. Bununla birlikte, dikey merkezleme yapmak için birçok teknik vardır ve her birinin kullanımı oldukça kolaydır.

Daha önce denediyseniz, özellikle tablo kullanmaktan kaçınmak istiyorsanız, bu yanıltıcıdır. Neyse ki, yardım çığlıklarımız duyuldu ve bu sorunu çözmek için CSS cephaneliğine eklenen yeni silahlardan biri, esnek kutu düzeni olarak bilinen bir düzen türüdür. Birkaç dakika içinde öğreneceğiniz gibi, karmaşık yerleşimleri basitleştirmek için size gerçekten harika özellikler sağlar. Bu harika işlevlerden bazıları, içeriğinizi dikey ve yatay olarak ortalamanıza da olanak tanır; bu eğitimde ele alacağımız şey budur. Bunu bir dereceye kadar dolgu ile yapabilirsiniz, ancak düzeninizi daha küçük ekranlara taşıyabilir. Stil sayfanıza özel bir CSS sınıfı eklemek, herhangi bir içeriği saniyeler içinde dikey olarak ortalayabileceğiniz anlamına gelir.

Yatay hizalama, bir paragrafın sol ve sağ kenarlarının metin kutusunun sol ve sağ kenarları arasında nasıl hizalanacağını belirler. Dikey hizalama, karakterin metin kutusundaki dikey yerleşimini belirler. Öğeleri CSS'de dikey olarak ortalamak için iyi yolların olmaması, neredeyse tüm varlığıyla ilgili itibarında karanlık bir kusurdu.

Satır yüksekliği ile ilk yöntem

İlk yöntem basit ve biraz banal olup, uygulamada bir sınırlama olacağı dezavantajları vardır. Bir site için html sayfalarını kodlarken, metin içeriğinin satır aralığı muhtemelen varsayılan olarak kalan niteliklerden biridir. Genel olarak, blok için aynı yükseklikle gelen çizginin yüksekliğini ayarlamamız gerekir. satır yüksekliği Emlak.


Bu, demolarda gösterilen ilk yöntemdir



CSS

Constutesim_first (
kenarlık: 2 piksel katı # bf1515;
yükseklik: 175 piksel;
}
.constutesim_first> p (
satır yüksekliği: 175 piksel;
kenar boşluğu: 0;
metin hizalama: merkez;
dolgu: 0;
yazı tipi boyutu: 17 piksel;
renk: # 3152a0;
yazı tipi ailesi: Tahoma;
yazı tipi ağırlığı: kalın;
}


Ayrıca, gerçekte her şeyin nasıl görüneceğini hemen görebilirsiniz.

Benzer bir yöntemle, merkezde ve kesinlikle dikey olacak olan görüntünün nasıl ortaya çıkarılacağını uygulamak mümkündür. Yalnızca dikey hizalama özelliği kaydetmek için kalır: orta; resmin görüntülenmesinden sorumludur.


.png "> Resimle birlikte gelen ikinci varyasyon


CSS

İkinci varyasyon (
kenarlık: 2 piksel düz kırmızı;
satır yüksekliği: 158 piksel;
}

İkinci varyasyon div (
metin hizalama: merkez;
}
.ikinci varyasyon img (
dikey hizalama: orta;
kenarlık: 0px katı # 3a3838;
}


Görüntüleri merkezde ve dikey yönde uygularız.

Pozisyon özelliği ile hizalama

Bu muhtemelen en iyi bilinen tekniktir, ancak CSS ile kullanım için en yaygın olanıdır. Ancak burada ideal olmadığını da eklemelisiniz ve bu yöntemin ayrıca, öğenin merkeziyle ilişkili kendi küçük nüansları vardır, yüzde olarak ayarlanırsa, sol tarafında ortalanır. üst taraf, blogun içinde.




CSS

Yarışma seçeneği (
kenarlık: 2 piksel katı # d40e0e;
yükseklik: 162 piksel;
pozisyon: göreceli;
}
.competaird-seçenek div (
pozisyon: mutlak;
üst: %50;
sol: %50;
yükseklik: %28;
genişlik: %49;
marj: -2% 0 0 -25%;
kenarlık: 2 piksel katı # 4a4848;
}


Satır aralığı veya satır yüksekliği, oluşturulmuş bir HTML sayfasındaki metin satırları arasındaki dikey yüksekliktir. Neredeyse her zaman, bu mesafe değeri, tarayıcı veya oluşturucu tarafından karşılık gelen değere ayarlanır. Bu değer genellikle görüntülenen sayfanın yazı tipine ve diğer faktörlere bağlıdır.

tablo özelliği ile hizalama

Bu yöntemde, elemanları hücrelerin bulunduğu bir tabloya dönüştüreceğimiz denenmiş ve doğru yöntemi kullanıyoruz. Table adlı etikete gelince, burada kullanılmayacak, burada tamamen farklı bir CSS özelliği ayarlayacağız, bu display: table ;, display: table-cell ;. IE'nin en eski sürümlerinden bahsedersek, veriler burada görüntülenmez. Umarım tarayıcınızı güncellemişsinizdir, çünkü güncelliğini yitirir ve hemen hemen her şey düzgün görüntülenmez.

Chevert varyasyonu (
kenarlık: 2 piksel katı # c30b0b;
yükseklik: 173 piksel;
ekran: tablo;
genişlik: %100;
yazı tipi boyutu: 17 piksel;
yazı tipi ağırlığı: kalın;
renk: # 3945a0;
}

Chevert varyasyon div (
ekran: tablo hücresi;
dikey hizalama: orta;
metin hizalama: merkez;
}


Her şeyden önce, çoğu tarayıcı tarafından kullanılan varsayılana bir göz atalım. Çoğu modern gündüz tarayıcısında satır aralığı.

flex özelliği ile hizalama

Burada, bir İnternet kaynağının düzeninde nadiren bulunabilen, kendi özelliklerine sahip daha orijinal bir versiyona geliyoruz. Ama yine de uygulanırlar, bazı durumlarda faydalıdırlar. Bu, ana ekseni, esneme yönünün tanımının disket kabına sığması için ayarlar.


flex özelliği ile hizalama


CSS

Varyant-yatay (
kenarlık: 2 piksel katı # d20c0c;
yükseklik: 147 piksel;
ekran: esnek;
hizalama öğeleri: merkez;
haklı içerik: merkez;
yazı tipi boyutu: 18 piksel;
yazı tipi ağırlığı: kalın;
renk: # 49518c;
}


Satır yüksekliği için, tıpkı css'de sayı, piksel boyutu veya yüzde olarak diğer herhangi bir boyutu belirttiğiniz gibi bir değer belirleyebilirsiniz.

transform özelliğiyle hizalama

Ve şimdi en uç yönteme geldik, ancak web tasarımında kullanmak açısından en sonuncusu değil. Burada her şey basit, belirtilen öğeyi ihtiyacınız olan değere göre dikey olarak kaydırmanız gerekiyor. Mülk dönüştürmek, bu, yükleyicinin paketi yüklerken uyguladığı dönüşümlerin bir listesidir. Yükleyici, dönüşümleri, özellikte belirtilen sırayla uygular.


transform özelliğiyle hizalama


CSS

Dikey-medilpasudsa (
kenarlık: 2 piksel katı # e00a0a;
yükseklik: 158 piksel;
yazı tipi boyutu: 19 piksel;
yazı tipi ağırlığı: kalın;
renk: # 353c71;
}
.vertical-medilpasudsa> div (
pozisyon: göreceli;
üst: %50;
transform: translateY (-50%);
metin hizalama: merkez;
}


Değerleri sayı olarak verdiğinizde o anki font boyutu baz alınacaktır. Geçerli yazı tipi boyutu, satır yüksekliğini veya satırlar arasındaki boşluğu hesaplamak için belirttiğiniz sayı ile çarpılır.

Karakterleri bir öğede yatay olarak ortalamak istiyorsanız, text-align: center kullanmanız gerekir. Bir seçenek, dikey olarak ortalamak istiyorsanız ve sabit bir altbilginiz ve bir satır metniniz varsa, satır yüksekliğini altbilgi yüksekliğinizle aynı olacak şekilde ayarlayın.

Metni div, başlık veya paragraf gibi bir öğe içinde ortalamanız gerekiyorsa, CSS metin hizalama özelliğini kullanabilirsiniz.

Metin hizalamanın birkaç geçerli özelliği vardır:

Merkez: Doku ortalanır;
sol: Konteynerin sol tarafına hizalanacak;
sağ: Konteynerin sağ tarafına hizalanmış
savunmak: Aşırı çizgiler hariç, kabın hem solunda hem de sağ kenarında hizalanmaya zorlanan;
hepsini haklı çıkar: Aşırı satırın karakterleri haklı çıkarmasına neden olur;
Başlat: Soldakiyle aynı, yalnızca yön soldan sağa gidiyorsa. Ancak başlangıçta sağdan sola olacak olan metin yönünün yönünü ayarlarsanız doğru olacaktır;
Son: Başlığın tersi;
eşleşme ebeveyni: Kalıtımla benzer şekilde, başlangıç ​​ve bitiş hariç, ana öğeye göre hesaplanır;

Bir üst öğe veya sarma div içindeki metni hizalamak için bu özellikleri kullanın. Metni bir öğede yatay olarak ortalamak istiyorsanız, text-align: center kullanmanız gerekir.

Bir seçenek, dikey olarak ortalamak istiyorsanız, sabit bir altbilginiz ve bir satır metniniz varsa, satır yüksekliğini altbilgi yüksekliğinizle aynı olacak şekilde ayarlayın.

Bir web sayfasındaki öğeleri hizalamak, özellikle metni dikey olarak hizalamak söz konusu olduğunda zor olabilir. Bu soru genellikle forumlarda karşılaşılır ve özellikle acemi kullanıcıların bu sorunu çözmesi zordur. Ama aslında, burada karmaşık bir şey yok. Tek ihtiyacınız olan basamaklı CSS stil sayfası hakkında biraz bilgi. Bu, tüm kuralları pahasına yapıldığından beri.

Dikey hizalamayı en az beş farklı şekilde gerçekleştirebilirsiniz. Durumun koşulları ve ayrıntıları göz önüne alındığında, her biri kendi yolunda iyidir. Birkaç örneğe bakacağız ve koşullara göre kendiniz için uygun bir büyüme seçeceksiniz.

Satır yüksekliği ile ilk yöntem

İlk yöntem çok yaygın ve kullanımını sınırlayan büyük bir dezavantajı var. Ama yine de, ne derse desin, işe yarayabilir ve hatta istenen sonucu getirebilir. Bu koşullu bir hizalama olacaktır, çünkü özünde satır yüksekliği özelliğini kullanarak satır yüksekliğini blok yüksekliğiyle eşleşecek şekilde ayarlıyoruz.

ilk örnek. 1 numaralı demo

ilk örnek. 1 numaralı demo

/ * # 1 * / .talign1 (kenarlık: 1 piksel düz kırmızı; yükseklik: 200 piksel; / * blok yüksekliği * /) .talign1> p (satır yüksekliği: 200 piksel; / * satır yüksekliğini blok yüksekliğine göre ayarla * / kenar boşluğu : 0; / * varsa kenar boşluklarını kaldırın * / text-align: center; / * metni yatay olarak ortaya hizalayın * / padding: 0; / * varsa kenar boşluklarını kaldırın * /) / * end # 1*/

Tam olarak aynı şekilde, bir resmi dikeyin ortasına uygulamak mümkündür, ancak yeni bir özellik ekleyerek, dikey hizalama: orta; ...

Örnek. Demo # 2

Örnek. Demo # 2

/ * # 2 * / .talign2 (kenarlık: 1 piksel düz kırmızı; satır yüksekliği: 200 piksel; / * satır yüksekliği bloğu * /) .talign2 div (metin hizalama: merkez; / * öğeleri yatay olarak ortaya hizala * /) .talign2 img (dikey hizalama: orta; / * görüntüleri ortada dikey olarak hizala * / kenarlık: 1 piksel düz siyah;) / * bitiş # 2 * /

Pozisyon özelliği ile hizalama

Bu yöntem, görevimiz hariç pek çok CSS görevinde yaygın olarak kullanılmaktadır. Ancak tamamen mükemmel olmadığı ve kendine has yan etkileri olduğu da belirtilmelidir. Bunun nedeni, yüzde olarak verilen elemanın ortalanmasının iç ünitenin sol üst tarafında ortalanacak olmasıdır.

Bu nedenle, dış dolguya negatif bir değer ayarlamanız gerekir. Üst kenar boşluğu iç ünitenin yüksekliğinin yarısı, sol kenar boşluğu genişliğin yarısı olmalıdır. Böylece mutlak merkezi elde ederiz.

Bu durumda, alt öğenin tam yüksekliğini ve genişliğini bilmek muhtemelen zorunludur. Aksi takdirde, merkezleme hataları meydana gelebilir.

/ * # 3 * / .talign3 (kenarlık: 1 piksel düz kırmızı; yükseklik: 200 piksel; / * blok yüksekliği * / konum: göreceli;) .talign3 div (konum: mutlak; üst: %50; sol: %50; yükseklik: %30; genişlik: %50; kenar boşluğu: -5% 0 0 -%25; kenarlık: 1 piksel düz siyah;) / * bitiş # 3 * /

tablo özelliği ile hizalama

Burada öğeleri hücrelerle bir tabloya dönüştürerek eski tekniği kullanıyoruz. Bu durumda tablo etiketleri

uygulanmaz, ancak display: table; , görüntüleme: tablo hücresi; ... IE'nin eski sürümlerinde bu yöntem çalışmaz ve gerekli değildir. Onları başka kullanan var mı?

Örnek. demo # 4

Örnek. demo # 4

/ * # 4 * / .talign4 (kenarlık: 1 piksel düz kırmızı; yükseklik: 200 piksel; / * blok yüksekliği * / ekran: tablo; genişlik: %100;) .talign4 div (ekran: tablo hücresi; dikey hizalama: orta ; metin hizalama: orta;) / * bitiş # 4 * /

flex özelliği ile hizalama

Bu, site düzeninde çok yaygın olmayan özelliklerle zaten daha spesifik bir seçenektir. Ancak, yine de, nadir durumlarda çok faydalıdırlar.

CSS kullanarak bir nesneyi dikey olarak ortalamanın temelde farklı birkaç yolu vardır, ancak doğru olanı seçmek zor olabilir. Bazılarını ele alacağız ve ayrıca edinilen bilgileri kullanarak küçük bir site yapacağız.

CSS ile dikey merkez hizalaması elde etmek kolay değildir. Birçok yol vardır ve hepsi tüm tarayıcılarda çalışmaz. 5 farklı yönteme ve her birinin artıları ve eksilerine bir göz atalım. Örnek.

1. yol

Bu yöntem, bazı öğeleri ayarladığımızı varsayar.

görüntüleme yöntemi bir tablo gibidir, bundan sonra dikey hizalama özelliğini kullanabiliriz (farklı öğelerde farklı şekilde çalışır).

Merkezlenmesi gereken bazı yararlı bilgiler.
#wrapper (ekran: tablo;) #hücre (ekran: tablo hücresi; dikey hizalama: orta;)

profesyoneller

  • İçerik dinamik olarak yüksekliği değiştirebilir (yükseklik CSS'de tanımlanmamıştır).
  • Yeterli alan yoksa içerik kırpılmaz.

eksiler

  • IE 7 veya daha düşük sürümlerde çalışmıyor
  • Birçok iç içe etiket

2. yöntem

Bu yöntem, üst değerini %50'ye ve üst kenar boşluğunu içerik yüksekliğinin yarısına ayarlayan div'in mutlak konumunu kullanır. Bu, nesnenin CSS stillerinde tanımlanan sabit bir yüksekliğe sahip olması gerektiği anlamına gelir.

Yükseklik sabit olduğu için overflow: auto; içeriği içeren div için, bu nedenle içerik sığmazsa kaydırma çubukları görünecektir.

Buradaki İçerik
#içerik (konum: mutlak; üst: %50; yükseklik: 240 piksel; kenar boşluğu: -120 piksel; / * yüksekliğin eksi yarısı * /)

profesyoneller

  • Tüm tarayıcılarda çalışır.
  • Gereksiz yuvalama yok.

eksiler

  • Yeterli alan olmadığında içerik kaybolur (örneğin, div gövdenin içindedir ve kullanıcı pencereleri küçültmüştür, bu durumda kaydırma çubukları görünmez.

3. yöntem

Bu yöntemde, div içeriğini başka bir div ile saracağız. Yüksekliğini %50'ye (yükseklik: %50;) ve alt kenar boşluğunu yüksekliğin yarısına (kenar boşluğu-alt: -contentheight;) ayarlayalım. İçerik, kayan noktayı temizleyecek ve ortalanacaktır.

işte içerik
#floater (kayan nokta: sol; yükseklik: %50; kenar boşluğu: -120 piksel;) #içerik (açık: her ikisi; yükseklik: 240 piksel; konum: göreli;)

profesyoneller

  • Tüm tarayıcılarda çalışır.
  • Yeterli alan olmadığında (örneğin, pencere küçültüldüğünde) içerik kırpılmadığında, kaydırma çubukları görünecektir.

eksiler

  • Bence tek bir şey var: fazladan boş bir öğe kullanılıyor.

4. yöntem.

Bu yöntem, konum özelliğini kullanır: mutlak; sabit boyutlu (genişlik ve yükseklik) div'ler için. Sonra koordinatları en üste ayarladık: 0; alt: 0; , ancak sabit bir yüksekliğe sahip olduğu için esnemez ve ortalanır. Bu, sabit genişlikli bir blok öğesini yatay olarak ortalamak için iyi bilinen yönteme çok benzer (margin: 0 auto;).

Önemli bilgi.
#içerik (konum: mutlak; üst: 0; alt: 0; sol: 0; sağ: 0; kenar boşluğu: otomatik; yükseklik: 240 piksel; genişlik: %70;)

profesyoneller

  • Çok basit.

eksiler

  • Internet Explorer'da çalışmıyor
  • Kapta yeterli alan yoksa içerik kaydırma çubukları olmadan kırpılacaktır.

5. yöntem

Bu yöntemle, bir metin satırını ortaya hizalayabilirsiniz. Sadece metin yüksekliğini (satır yüksekliği) elemanın yüksekliğine (yükseklik) eşit olarak ayarladık. Bundan sonra, çizgi ortada görüntülenecektir.

Bazı metin satırı
#content (yükseklik: 100 piksel; satır yüksekliği: 100 piksel;)

profesyoneller

  • Tüm tarayıcılarda çalışır.
  • Uygun değilse metni kesmez.

eksiler

  • Yalnızca metinle çalışır (blok öğeleriyle çalışmaz).
  • Birden fazla metin satırı varsa, çok kötü görünüyor.

Bu teknik, metni bir düğme veya metin kutusunda ortalamak gibi küçük öğeler için çok kullanışlıdır.

Artık dikey merkez hizalamasını nasıl elde edeceğinizi bildiğinize göre, sonunda buna benzeyen basit bir web sitesi oluşturalım:

Aşama 1

Anlamsal işaretleme ile başlamak her zaman iyidir. Sayfamız şu şekilde yapılandırılacaktır:

  • #floater (içeriği ortalamak için)
  • #centred (merkez eleman)
    • #yan
      • #logo
      • #nav (liste
      • #içerik
    • #bottom (telif hakları ve diğer şeyler için)

    Aşağıdaki html işaretlemesini yazalım:

    Merkezli Bir Şirket

    Sayfa başlığı

    Süreç merkezli işbirliği ve fikir paylaşımından sonra katma değerli dış kaynak kullanımını bütünsel olarak yeniden tasarlayın. Etkinleştirilmiş zorunluluklar aracılığıyla etkili niş pazarları enerjik bir şekilde basitleştirin. Zorlayıcı senaryolardan sonra premium inovasyona bütünsel olarak hakim olun. Son teknoloji ürünü ürünlerle insan sermayesindeki yüksek standartları sorunsuz bir şekilde yeniden özetleyin. Sağlam girdaplardan önce standartlarla uyumlu şemaları ayırt edici bir şekilde birleştirin. Kullanıma hazır bilgilerle karşılaştırıldığında, kaldıraçlı web hazırlığını benzersiz bir şekilde yeniden özetleyin.

    Başlık 2

    Müşteri odaklı süreçler yerine özelleştirilmiş web hazırlığını verimli bir şekilde benimseyin. Proaktif teknolojiler karşısında platformlar arası zorunlulukları iddialı bir şekilde büyütün. Kurumsal çapta arabirimler olmadan çok disiplinli meta hizmetleri uygun şekilde güçlendirin. Odaklanmış e-pazarlarla rekabetçi stratejik tema alanlarını uygun şekilde düzene sokun. Katma değerli pazarlar karşısında birinci sınıf toplulukları fosfofloresan olarak birleştirin. Sağlam e-hizmetlerden önce bütünsel hizmetleri uygun şekilde yeniden icat edin.

    Telif hakkı bildirimi buraya gelir

    Adım 2

    Şimdi öğeleri sayfada konumlandırmak için en basit CSS'yi yazacağız. Bu kodu style.css dosyanıza kaydetmelisiniz. Bağlantının html dosyasına kayıtlı olması ona aittir.

    Html, gövde (kenar boşluğu: 0; dolgu: 0; yükseklik: %100;) gövde (arka plan: url ("page_bg.jpg") %50 %50 tekrarsız # FC3; yazı tipi ailesi: Georgia, Times, serifs; ) #floater (konum: göreli; kayan nokta: sol; yükseklik: %50; kenar boşluğu: -200 piksel; genişlik: 1 piksel;) #merkezli (konum: göreceli; temizle: sol; yükseklik: 400 piksel; genişlik: %80; maks. -genişlik: 800 piksel; minimum genişlik: 400 piksel; kenar boşluğu: 0 otomatik; arka plan: #fff; kenarlık: 4 piksel katı # 666;) #alt (konum: mutlak; alt: 0; sağ: 0;) #nav (konum: mutlak; sol: 0; üst: 0; alt: 0; sağ: %70; dolgu: 20 piksel; kenar boşluğu: 10 piksel;) #içerik (konum: mutlak; sol: %30; sağ: 0; üst: 0; alt: 0; taşma: otomatik; yükseklik: 340 piksel; dolgu: 20 piksel; kenar boşluğu: 10 piksel;)

    İçeriğimizi merkezlemeden önce gövde ve html yüksekliğini %100 olarak ayarlamamız gerekiyor. Yükseklik, iç ve dış kenar boşlukları (dolgu ve kenar boşluğu) olmadan hesaplandığından, kaydırma çubuğu olmaması için onları (girintileri) 0'a ayarladık.

    "Floater" -a öğesinin alt dolgusu, içeriğin yüksekliğinin eksi yarısına (400 piksel), yani -200 piksele eşittir;

    Sayfanız şimdi şöyle görünmelidir:

    #centered öğesinin genişliği %80'dir. Bu, sitemizi zaten küçük ekranlarda ve büyük ekranlarda daha geniş hale getirir. çoğu site sol üst köşedeki yeni geniş monitörlerde müstehcen görünüyor. Min-width ve max-width özellikleri de sayfamızı çok geniş veya çok dar görünmeyecek şekilde kısıtlar. Internet Explorer bu özellikleri desteklemez. Bunun için sabit bir genişlik ayarlamanız gerekir.

    #centered öğesi position:relative olarak ayarlandığından, içindeki öğelerin mutlak konumlandırmasını kullanabiliriz. Ardından taşmayı ayarlayın: otomatik; #content öğesi için, içeriğin sığmaması durumunda kaydırma çubuklarının görünmesi için.

    Aşama 3

    Ve yapacağımız son şey, sayfanın biraz daha çekici görünmesi için bazı stiller eklemek. Menü ile başlayalım.

    #nav ul (liste stili: yok; dolgu: 0; kenar boşluğu: 20px 0 0 0; metin girintisi: 0;) #nav li (dolgu: 0; kenar boşluğu: 3px;) #nav li a (ekran: blok; arka plan rengi: # e8e8e8; dolgu: 7 piksel; kenar boşluğu: 0; metin dekorasyonu: yok; renk: # 000; kenarlık-alt: 1 piksel katı #bbb; metin hizalama: sağ;) #nav li a :: after ( içerik: "" "; renk: #aaa; yazı tipi ağırlığı: kalın; görüntü: satır içi; kayan nokta: sağ; kenar boşluğu: 0 2 piksel 0 5 piksel;) #nav li a: vurgulu, #nav li a: odak (arka plan: # f8f8f8; border-bottom-color: # 777;) #nav li a: hover :: after (margin: 0 0 0 7px; color: # f93;) #nav li a: active (dolgu: 8px 7px 6px 7px;)

    Menünün daha iyi görünmesi için yaptığımız ilk şey, liste stili özniteliğini yok olarak ayarlayarak işaretçileri kaldırmak ve ayrıca farklı tarayıcılarda varsayılan olarak çok farklı oldukları için dolgu ve dolguyu ayarlamaktı.

    Daha sonra bağlantıların blok öğeleri olarak görüntülenmesi talimatını verdiğimizi unutmayın. Şimdi, görüntülendiklerinde, bulundukları öğenin tüm genişliği boyunca uzanırlar.

    Menü için kullandığımız bir diğer ilginç şey ise sözde sınıflardan önce ve sonra:. Bir öğeden önce ve sonra herhangi bir şey eklemenize izin verirler. Bu, her bağlantının sonuna ok gibi simgeler veya simgeler eklemenin iyi bir yoludur. Bu numara, Internet Explorer 7 ve altındaki sürümlerde çalışmaz.

    4. Adım

    Son olarak, daha da fazla güzellik için tasarımımıza bazı değişiklikler ekleyeceğiz.

    #centered (-webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px;) h1, h2, h3, h4, h5, h6 (font-family: Helvetica, Arial, sans- serif; yazı tipi ağırlığı: normal; renk: # 666;) h1 (renk: # f93; kenarlık-alt: 1 piksel katı #ddd; harf aralığı: -0.05em; yazı tipi ağırlığı: kalın; kenar boşluğu: 0; padding-top: 0;) #bottom (padding: 10px; font-size: 0.7em; color: #f03;) #logo (font-size: 2em; text-align: center; color: #999;) #logo güçlü (yazı tipi ağırlığı: normal;) #logo yayılma alanı (ekran: blok; yazı tipi boyutu: 4em; satır yüksekliği: 0,7em; renk: # 666;) p, h2, h3 (satır yüksekliği: 1,6em;) a (renk: # f03;)

    Bu stillerde, #centered öğesi için yuvarlatılmış köşeler belirledik. CSS3'te border-radius özelliği bundan sorumlu olacaktır. Mozilla Firefox ve Safari / Webkit için -moz ve -webkit öneklerini kullanmadığınız sürece, bu henüz bazı tarayıcılar tarafından uygulanmamaktadır.

    uyumluluk

    Muhtemelen tahmin ettiğiniz gibi, uyumluluk sorunlarının ana kaynağı Internet Explorer'dır:

    • #floater öğesi genişliğine ayarlanmalıdır.
    • IE 6, menülerin etrafında ekstra dolguya sahiptir



Bilgisayar yardım sitesi

© Telif hakkı 2021,
rzdoro.ru - Bilgisayar yardım sitesi

  • Kategoriler
  • Demir
  • Windows 10
  • Tarama
  • Windows 7
  • Demir
  • Windows 10
  • Tarama
  • Windows 7