Css3 konumlandırma. Kesinlikle konumlandırılmış öğeler, float özelliğini yok sayar. css öğelerinin göreli konumlandırması
26.05.2019
CSS ile ilgili en iyi şeylerden biri, stillerin bize içeriği ve öğeleri bir sayfada aklımıza gelebilecek her şekilde konumlandırma yeteneği vermesidir. Bu, tasarımımıza yapı kazandırır ve içeriğin daha görsel olmasına yardımcı olur.
CSS'de her biri kendi kapsamı olan birkaç farklı konumlandırma türü vardır. Bu bölümde, birkaç farklı kullanım örneğine - yeniden kullanılabilir düzenler oluşturma ve tek seferlik öğeleri benzersiz bir şekilde konumlandırma - göz atacağız ve bunun nasıl yapılacağına ilişkin birkaç yöntemi açıklayacağız.
Şamandıra konumlandırma
Öğeleri sayfada konumlandırmanın bir yolu, float özelliğidir. Bu özellik oldukça çok yönlüdür ve çeşitli şekillerde uygulanabilir.
Temel olarak, float özelliği bir öğeyi alır, onu sayfanın normal akışından çıkarır ve üst öğenin soluna veya sağına konumlandırır. Sayfadaki diğer tüm öğeler, böyle bir öğenin etrafına sarılır. Örneğin, öğe varsa paragraflar görüntünün etrafına sarılır. float özelliği ayarlanır.
Float özelliği aynı anda birden çok öğeye uygulandığında, çok sütunlu bir düzende gösterildiği gibi yüzer öğelerin yan yana veya karşılıklı olduğu bir düzen oluşturmayı mümkün kılar.
Float özelliği birkaç değer alır, en popüler ikisi sol ve sağ olup, bir öğenin üst öğesinin solunda veya sağında yüzmesine izin verir.
Img (kayan: sol;)
pratikte yüzer
Üstte başlık, ortada iki sütun ve altta bir alt bilgi bulunan genel bir sayfa düzeni oluşturalım. İdeal olarak, bu sayfa öğelerle işaretlenmelidir.
,
,
......
Yüzer olmayan bir düzenin gösterilmesi
Burada elementler ve
Bölüm (kayan: sol;) kenara (kayan: sağ;)
Başvuru için, kayan öğeler, ana öğenin kenarı boyunca konumlandırılır. Üst öğe yoksa, kayan öğe sayfanın kenarı boyunca konumlandırılacaktır.
Bir öğeyi düzene koyduğumuzda, onu HTML belgesinin normal akışından kaldırırız. Bu, o öğenin varsayılan genişliğinin içeriğinin genişliği olmasına neden olur. Bazen, örneğin yeniden kullanılabilir bir düzen için sütunlar oluşturduğumuzda, bu davranış istenmeyen bir durumdur. Bu, her sütun için sabit bir genişlik özelliği eklenerek düzeltilebilir. Ayrıca, yüzen öğelerin birbirine değmesini ve bir öğenin içeriğinin diğerinin yanına oturmasını önlemek için, öğeler arasındaki boşluğu ayarlamak için margin özelliğini kullanabiliriz.
Aşağıda, istediğimiz sonucu daha iyi şekillendirmek için her sütuna bir kenar boşluğu ve genişlik ekleyerek önceki kod bloğunu genişletiyoruz.
şamandıralar bir elemanın görüntülenen değerini değiştirebilir
Bir kayan öğenin, öğenin sayfanın normal akışından kaldırıldığını ve öğenin varsayılan görüntüleme değerinin değişebileceğini anlaması da önemlidir. Float özelliği, öğenin blok olarak ayarlanmış görüntüleme değerine dayanır ve önceden bir blok öğesi olarak oluşturulmamışsa öğenin varsayılan görüntüleme değerini geçersiz kılabilir.
Örneğin, satır içi olarak belirtilen görüntüye sahip bir öğe, örneğin satır içi , yükseklik veya genişlik özelliklerini yok sayar. Ancak, bir satır içi öğe için bir kayan nokta belirtirseniz, görüntüleme değeri blok olarak değişir ve ardından öğe zaten yükseklik veya genişlik özelliklerini alabilir.
Bir elemanı yüzdürdüğümüzde, bunun display özelliğinin değerini nasıl etkileyeceği konusunda dikkatli olmalıyız.
İki sütun için bir sütunu ve bir sütunu sağa kaydırabilirsiniz, ancak birden fazla sütun için yaklaşımımızı değiştirmemiz gerekecek. Örneğin, öğelerimiz arasında üç sütunluk bir satır almak istediğimizi varsayalım. ve
......
...
...
Bu üç unsuru düzenlemek için üç sütunluk bir satıra, tüm öğeleri yüzdürmeliyiz sol olarak. Genişliği de ayarlamamız gerekiyor ek sütunları dikkate alarak yan yana yerleştirin.
Burada, tümü eşit genişlik ve kenar boşluklarına sahip üç sütun ve sola ayarlanmış bir kayan nokta var.
3 sütunlu bir şamandıra düzeninin gösterilmesi
İçeriği temizleme ve yüzdürme
Float özelliği, orijinal olarak içeriğin görüntülerin etrafında akmasına izin vermek için tasarlanmıştır. Bir görüntü yüzdürülebilir ve bu görüntünün etrafındaki tüm içerik doğal olarak onun etrafında akar. Bu, resimler için harika olsa da, float özelliğinin gerçekten yerleşim ve konumlandırma amacıyla kullanılması amaçlanmamıştır ve bu nedenle birkaç tuzakla birlikte gelir.
Bu tuzaklardan biri, bazen kayan öğenin yanındaki veya onun ebeveyni olan bir öğede uygun stilin görünmemesidir. Bir öğe yüzdürüldüğünde, sayfanın normal akışından çıkarılır ve sonuç olarak, yüzen öğenin etrafındaki öğelerin stilleri olumsuz etkilenebilir.
Çoğu zaman, kenar boşluğu ve dolgu özelliklerinin değerleri yanlış yorumlanır ve yüzen öğeyle karışmalarına neden olur. Diğer özellikler de etkilenebilir.
Başka bir hata, bazen istenmeyen içeriğin float öğesinin etrafına dolanmaya başlamasıdır. Belge akışından bir öğenin çıkarılması, kayan öğenin etrafındaki tüm öğelerin onu atlamasına ve kayan öğenin etrafındaki, genellikle istenmeyen bir durum olan herhangi bir kullanılabilir alandan yararlanmasına olanak tanır.
İki sütunlu önceki örneğimizde, elemanlara kayan noktalar ekledikten sonra ve
Şamandırayı temizlemeden yerleşimin gösterilmesi
İçeriğin kayan öğelerin etrafına sarılmasını önlemek için kayan noktayı temizlememiz ve sayfayı normal akışına döndürmemiz gerekir. Floatların nasıl temizleneceğine ve ardından içeriklerine bir göz atacağız.
şamandıra temizleme
Floatları temizlemek, birkaç farklı değer alan clear özelliği ile yapılır: en sık kullanılan değerler sol, sağ ve her ikisidir.
Div (temiz: sol;)
Soldaki değer soldaki floatları, sağdaki değer ise sağdaki floatları temizler. Ancak her ikisi de sol ve sağ şamandıraları temizler ve genellikle en ideal seçenektir.
Önceki örneğimize dönersek, clear özelliğini her ikisi ile de eleman üzerinde kullanırsak
Altbilgi (temiz: ikisi de;)
Şamandıra temizlemeli bir yerleşimin gösterilmesi
Kayan içerik
Şamandırayı temizlemek yerine, başka bir seçenek de kayan nokta içeriğini ayarlamaktır. Sonuç hemen hemen aynı, ancak kayan içerik gerçekten de tüm stillerimizin beklendiği gibi görüntülenmesini sağlıyor.
Float içeriğini ayarlamak için, kayan öğelerin ana öğenin içinde olması gerekir, bir kap görevi görecek ve belge akışını bunun dışında tamamen normal bırakacaktır. Bu ebeveyn için stiller, burada gösterildiği gibi grup sınıfını içerir:
Grup :: önce, .grup :: sonra (içerik: ""; görüntü: tablo;) .grup :: sonra (temizle: her ikisi;) .grup (temizle: her ikisi; * yakınlaştırma: 1;)
Burada pek bir şey olmuyor, ancak esasen CSS'nin tek yaptığı, grup öğesi içindeki kayan öğeleri temizlemek ve belgeyi normal akışa döndürmek.
Daha spesifik olarak, Ders 4'te tartışıldığı gibi :: before ve :: after sözde öğeleri, sınıf grubuyla öğenin üstünde ve altında dinamik olarak öğeler üretir. Bu öğeler herhangi bir içerik içermez ve blok öğeler gibi tablo öğeleri olarak görüntülenir. Grup sınıfına sahip öğeden sonra dinamik olarak oluşturulan öğe, daha önce clear gibi, grup sınıfıyla öğenin içindeki şamandırayı temizler. Son olarak, grup öğesi, sol veya sağ bir değere sahip bir kayan nokta olması durumunda, kendisinden önce görünebilecek tüm kayan noktaları da temizler. Ayrıca, eski tarayıcıların güzelce oynamasını sağlayan küçük bir numara da dahildir.
Burada tek clear: Both komutundan daha fazla kod var, ancak oldukça faydalı olabilir.
İki sütunlu sayfa düzenimizi düşünürsek, ve
...
...
Grup :: önce, .grup :: sonra (içerik: ""; görüntü: tablo;) .grup :: sonra (temizle: her ikisi;) .group (temizle: her ikisi; * yakınlaştırma: 1;) bölüm (kayan: sol ; kenar boşluğu: %0 1,5; genişlik: %63;) kenara (kayan: sağ; kenar boşluğu: %0 1,5; genişlik: %30;)
Float içerikli düzen gösterimi
Burada gösterilen teknik "clearfix" olarak bilinir ve genellikle sınıf adı clearfix veya cf ile diğer sitelerde görülür. Bir öğe grubunu temsil ettiği ve içeriği daha iyi ifade ettiği için sınıf adı grubunu kullanmayı seçtik.
Öğeler için kayan noktalar belirtildiğinde, bunların sayfanın akışını nasıl etkilediğini izlemek ve sayfa akışının gerektiği gibi boşaltma veya kayan içerik ile temizlendiğinden emin olmak önemlidir. Aksi takdirde, kayan nokta izleme, özellikle her biri birden çok sütun içeren birden çok satır içeren sayfalarda çok fazla baş ağrısına neden olabilir.
pratikte
Stiller Konferansı sitesine geri dönelim ve bazı içerikleri yüzdürmeyi deneyelim.
Her şeyden önce, herhangi bir öğeyi yüzdürmeden önce, CSS'mize bir düzeltme ekleyerek bu yüzen öğeler için içerik sağlayalım. main.css dosyasında, ızgara stillerimizin hemen altına, daha önce olduğu gibi grup sınıfı adının altına bir düzeltme ekleyin. / * ====================================== Düzeltme ======= = ================================ * / .group :: önce, .group :: after (içerik: " " ; görüntü: tablo;) .grup :: sonra (temizle: her ikisi;) .grup (temizle: her ikisi; * yakınlaştırma: 1;)
Artık şamandırayı kullanabileceğimize göre, ana için ayarlayalım
iç eleman sola ve başlıktaki içeriğin geri kalanının sağa akmasına izin verin.
Bunu yapmak için logo sınıfını öğeye ekleyin.
... Ardından, CSS'imizin içine ana başlık için yeni bir stil bölümü ekleyeceğiz. Bu bölümde, öğeyi seçeceğiz
Hazır buradayken, logomuza biraz daha detay ekleyelim. Öğeyi yerleştirerek başlayalım veya logo metnimizin iki satırda görünmesini sağlamak için "Stiller" ve "Konferans" kelimeleri arasında bir satır sonu.
CSS'de, logomuzun üst kısmına bir kenarlık ve logonun özgürce nefes almasına yardımcı olmak için biraz dikey dolgu ekleyelim.
Logo (kenarlık-üst: 4px katı # 648880; dolgu: 40px 0 22px 0; kayan nokta: sol;)
Elementi yaptığımızdan beri
aerodinamik, sonra şamandıranın içeriğini ayarlamak istiyoruz. En yakın ebeveyn
element mi bu yüzden ona bir grup sınıfı ekleyeceğiz. Bu, daha önce belirlediğimiz düzeltme stillerini uygulayacaktır.
...
eleman şekil alır, öyleyse elemente bir göz atalım
Öğenin aksine ancak, sınıfı doğrudan yüzen öğeye uygulamayacağız. Bu sefer, kayan öğenin ebeveynine bir sınıf ekleyeceğiz ve öğeyi seçmek için benzersiz bir CSS seçici kullanacağız ve sonra onu yüzdüreceğiz.
Pirinç. 5.01. Birden fazla şamandıralı, elemanlar ve
Satır içi blok konumlandırma
Kayan noktaları kullanmaya ek olarak, içeriği konumlandırmanın başka bir yolu da satır içi blok değeriyle birlikte display özelliğini kullanmaktır. Daha sonra tartışacağımız gibi satır içi blok yöntemi, öncelikle sayfa mizanpajları veya öğeleri yan yana bir satıra yerleştirmek için kullanışlıdır.
Display özelliği için satır içi blok değerinin, öğeleri satırda oluşturduğunu ve kutu modelinin yükseklik, genişlik, dolgu, kenarlık ve kenar boşluğu dahil tüm özelliklerini kabul etmelerine izin verdiğini hatırlayın. Satır içi blok kullanmak, herhangi bir kayan noktayı temizleme konusunda endişelenmeden blok modelinden tam olarak yararlanmamızı sağlar.
pratikte satır içi blok
Üç sütunlu örneğimize baştan bir göz atalım. HTML'mizi şu şekilde tutarak başlayacağız:
......
...
...
Şimdi üç elementimiz için yüzerler yerine kenar boşluğu ve genişlik özelliklerini olduğu gibi bırakarak görüntüleme değerlerini satır içi blok olarak değiştireceğiz. Sonuç olarak, CSS'miz şöyle görünecek:
Bölüm (ekran: satır içi blok; kenar boşluğu: %0 1,5; genişlik: %30;)
Ne yazık ki, bu kod tek başına hile ve son öğeyi yapmak için yeterli değildir. yeni bir satıra itilir. Unutmayın, satır içi blok öğeleri birbiri ardına satırda çizildiğinden, aralarında tek bir boşluk bulunur. Her bir boşluğun boyutu, satırdaki tüm öğelerin genişliğine ve yatay kenarına eklendiğinde, toplam genişlik çok büyük olur ve son öğeyi dışarı iter. yeni bir satırda. Tüm öğeleri görüntülemek için bir satırda, her biri arasındaki beyaz boşluğu kaldırmalısınız.
.
Boşluklu satır içi blok elemanlarının gösterimi
Satır içi blok öğeleri arasındaki boşluğu kaldırma
Satır içi blok öğeleri arasındaki boşluğu kaldırmak için birkaç yöntem vardır ve bazıları diğerlerinden daha karmaşıktır. Her biri HTML içinde gerçekleşen en basit iki yönteme odaklanacağız.
İlk çözüm, her yeni açılış öğesi etiketini koymaktır. önceki elemanın kapanış etiketi ile aynı satırda ... Her eleman için yeni bir satır kullanmak yerine, elemanları aynı satırda başlatıyoruz. HTML'miz şöyle görünebilir:
...
...
...
...
Bu şekilde satır içi blok öğeleri yazmak, HTML'de bu tür öğeler arasında boşluk kalmamasını sağlar. Bu nedenle, sayfa işlendiğinde boşluk görünmeyecektir.
Boşluksuz satır içi blok elemanlarının gösterimi
Satır içi blok öğeleri arasındaki boşluğu kaldırmak için başka bir teknik, öğenin kapanış etiketinden hemen sonra bir HTML yorumu açmaktır. Ardından, sonraki öğenin başlangıç etiketinden hemen önce yorumu kapatın. Bu, satır içi blok öğelerinin HTML'de ayrı satırlarda başlayıp bitmesine izin verir ve öğeler arasındaki olası boşlukları "yorumlayacaktır". Sonuç olarak, kod şöyle görünecektir:
...
...
...
...
Bu seçeneklerin hiçbiri mükemmel değil, ancak kullanışlıdır. Daha iyi organizasyon için yorumları kullanma eğilimindeyim, ancak hangi seçeneği seçeceğiniz tamamen size kalmış.
Yeniden kullanılabilir düzenler oluşturun
Bir site oluştururken, başka bir yerde yeniden kullanılabilecek modüler stiller yazmak her zaman en iyisidir ve yeniden kullanılabilir düzenler yeniden kullanılabilir kod listesinin başındadır. Düzenler, kayan noktalar veya satır içi blok öğelerle oluşturulabilir, ancak hangisi en iyi sonucu verir ve neden?
Sayfanın yapısı için hangisinin daha iyi olduğu sorusu - akıcı veya satır içi blok öğeler tartışmaya açıktır. Benim yaklaşımım, bir ızgara veya sayfa düzeni oluşturmak için satır içi blok öğeleri kullanmak ve ardından içeriğin o öğenin etrafında akmasını istediğimde kayar (görüntülerle çalışırken kayanlar bunun içindi). Genel olarak, satır içi blok öğeleriyle çalışmayı daha kolay buluyorum.
Ancak, sizin için en iyi olanı kullanın. Bir yaklaşıma diğerinden daha aşina iseniz, onu kullanın.
Şu anda yeni CSS spesifikasyonları, özellikle de sayfalarınızı en iyi nasıl düzenleyeceğinize karar vermenize yardımcı olacak esnek ve ızgara özellikleri üzerinde çalışıyor. Açılmaya başlarken bu yöntemlere dikkat edin.
pratikte
Yeniden kullanılabilir düzenleri sağlam bir şekilde anlayarak, Stiller Konferansı web sitemizi tanıtmanın zamanı geldi.
Stiller Konferansı web sitesi için satır içi blok öğelerini kullanarak üç sütunlu bir düzen oluşturacağız. Bunu, aynı genişlikte üç sütunumuz veya aralarında toplam genişliği biri için 2/3 ve diğeri için 1/3 olarak bölünmüş iki sütun olacak şekilde yapacağız.
İlk olarak, bu sütunların genişliğini tanımlayan sınıflar oluşturacağız. Bu iki sınıfı üçte biri için col-1-3 ve üçte ikisi için col-2-3 olarak adlandıracağız. main.css dosyamızın Grid bölümünde bu sınıfları ve bunlara karşılık gelen genişlikleri tanımlayalım.
Her iki sütunun da satır içi blok öğeleri olarak görünmesini istiyoruz. Ayrıca, dikey hizalamalarının her sütunun üstüne ayarlandığından emin olmamız gerekir.
Görüntüyü ve dikey hizalamayı paylaşan iki yeni seçici oluşturalım.
Sütun-1-3, .col-2-3 (görüntüleme: satır içi blok; dikey hizalama: üst;)
CSS'ye tekrar bir göz atın. Virgülle ayrılmış iki sınıf seçici col-1-3 ve col-2-3 oluşturduk. İlk seçicinin sonundaki virgül, onu başka bir seçicinin izlediği anlamına gelir. İkinci seçiciden sonra, stil açıklamasının başladığını gösteren bir açılış kaşlı ayracı vardır. Virgülle ayırma seçicileri yardımıyla bir stili aynı anda birden fazla seçiciye bağlayabiliriz.
İçeriği ayırmaya yardımcı olmak için sütunlar arasında biraz boşluk bırakmak istiyoruz. Bu, her sütuna yatay dolgu eklenerek yapılabilir.
Bu iyi çalışır, ancak iki sütun yan yana yerleştirildiğinde, aralarındaki boşluk, dış kenar boşluğundan iki kat daha geniş olacaktır. Bunu dengelemek için tüm sütunlarımızı bir ızgaraya yerleştireceğiz ve ona aynı dolguyu ekleyeceğiz.
Izgaramızı tanımlamak için grid sınıfını kullanalım ve ardından grid, col-1-3 ve col-2-3 sınıfları için aynı yatay dolguyu ayarlayalım. Seçicilerimizi yine virgülle ayırdığımızda CSS'miz şöyle görünür:
Yatay padding ayarlarken dikkatli olmamız gerekiyor. Unutmayın, son eğitimde 960 piksel genişliğindeki bir sayfada tüm içeriğimizin merkezinde sınıf kapsayıcı olan bir kapsayıcı oluşturduk. Şu anda, bir kap öğesinin içine bir ızgara öğesi yerleştirecek olsaydık, yatay dolguları birlikte katlanır ve sütunlarımız sayfanın geri kalanının genişliğiyle orantılı olarak görüntülenmezdi.
Bunu, eski kapsayıcı kural setini aşağıdakilere bölerek başaracağız:
Artık sınıf kapsayıcısı veya ızgarası olan herhangi bir öğe 960 piksel genişliğinde ve sayfada ortalanmış olacak. Ayrıca, sınıf kapsayıcılı herhangi bir öğe için mevcut yatay dolguyu, yeni, ayrı bir kurallar kümesine taşıyarak koruduk.
Tamam, ağı kurmak için gereken tüm zor iş bitti. Şimdi HTML'mizle çalışma ve bu sınıfların nasıl çalıştığını görme zamanı.
Ana sayfadaki, index.html dosyasındaki teaser'ları üç sütun halinde hizalayarak başlayacağız. Teaser'lar şu anda bir öğeyle sarmalanmış durumda sınıf konteyner ile. Container sınıfını grid olarak değiştirmek istiyoruz, böylece içeri sütunları yerleştirmeye başlayabiliriz.
...
...
...
...
Son olarak, sütunlarımızın her biri bir satır içi blok öğesi olduğundan, aralarındaki boşlukları kaldırdığımızdan emin olmamız gerekir. Bunu yapmak için yorumları kullanacağız ve kodumuzu daha iyi organize etmek için her bölüme bazı belgeler ekleyeceğiz.
...
...
...
Doğrulama için - 3. satırda, aşağıdaki Konuşmacılar bölümünü tanımlayan bir yorum bıraktık. 7. satırın sonunda, kapanış etiketinden hemen sonra yorumu açıyoruz. Bu yorumda, 9. satırda bir sonraki "Program" bölümünü tanımlıyoruz. Ardından, açılış etiketinden hemen önce, 11. satırın başındaki yorumu kapatıyoruz. ... Yorumlar için benzer bir yapı, iki öğe arasında 13 ila 17 arasındaki satırlarda görünür. , "Mekan" bölümünden hemen önce. Genel olarak, bölümlerimizi tanımlamak için aynı yorumları kullanırken aynı anda sütunlar arasındaki olası boşlukları yorumladık.
Artık sütun genişliklerini 1/3 ve 2/3 olarak kullanan farklı yerleşimleri destekleyen yeniden kullanılabilir 3 sütunlu bir ızgaramız var. Ana sayfamız artık tüm tanıtımları bölen üç sütun içeriyor.
Pirinç. 5.02. Stiller Konferansı ana sayfası artık 3 sütunlu bir düzen içeriyor
Demo ve kaynak kodu
Aşağıda Styles Conference web sitesini mevcut haliyle görüntüleyebilir ve web sitesinin kaynak kodunu şu anda indirebilirsiniz.
Elemanların benzersiz konumlandırılması
Er ya da geç, herkes bir öğeyi doğru bir şekilde konumlandırmak isteyecektir, ancak yüzer veya satır içi blok öğeleri bu numaraya izin vermez. Sayfa akışından bir öğeyi kaldıran kayan öğeler, çevreleyen öğeler kayan öğenin etrafında yüzdüğü için genellikle istenmeyen sonuçlara yol açar. Satır içi blok öğeleri, sütunlar oluşturmadıkça, doğru konumlandırma söz konusu olduğunda oldukça garip olabilir. Bunun gibi durumlar için, box offset özellikleri ile birlikte position özelliğini kullanabiliriz.
Konum özelliği, öğenin sayfada nasıl konumlandığını ve belgenin normal akışında görünüp görünmeyeceğini belirler. Bir elemanın farklı yönlerde hareket ettirilmesiyle bir elemanın tam olarak nerede konumlandırılacağını belirleyen kutunun üst, sağ, alt ve sol ofset özellikleri ile birlikte kullanılır.
Varsayılan olarak, her öğenin statik bir konum değeri vardır; bu, öğenin belgenin normal akışında var olduğu ve onu dengelemek için herhangi bir özelliği kabul etmediği anlamına gelir. Statik değer, çoğunlukla, daha sonra bakacağımız göreli veya mutlak değer tarafından geçersiz kılınır.
göreceli konumlandırma
Konum özelliğinin göreli değeri, öğelerin sayfanın normal akışında görünmesine, amaçlandığı gibi öğeye yer ayırmasına ve diğer öğelerin etrafına sarılmasına izin vermemesine izin verir. Bununla birlikte, ofset özelliklerini kullanarak bir elemanın konumunu değiştirmenize de izin verir. Örneğin, aşağıdaki HTML ve CSS'yi göz önünde bulundurun:
sınıf ofset konumu göreceli olarak ayarlanmış ve ayrıca sol ve üst iki ofset özelliği ile. Bu, öğenin orijinal konumunu korur ve diğer öğelerin o alana hareket etmesine izin verilmez. Ek olarak, öteleme özellikleri, öğeyi soldan 20 piksel ve üst orijinal konumundan 20 piksel iterek hareket ettirir.
Nispeten konumlandırılmış öğeler için, kutunun ofset özelliklerinin, orijinal konumu göz önüne alındığında öğenin nereye taşınacağını belirlediğini bilmek önemlidir. Böylece, 20 piksellik bir sol özellik, öğeyi etkili bir şekilde 20 piksel sağa doğru iter. 20 piksel değerine sahip top özelliği daha sonra öğeyi 20 piksel aşağı itecektir.
Bir elemanı ofset özelliklerini kullanarak konumlandırdığımızda, eleman, kenar boşluğu veya dolgu özellikleri gibi aşağı itmek yerine altındaki elemanla örtüşür.
Mutlak konumlandırma
Konum özelliğinin mutlak değeri, mutlak olarak konumlandırılmış bir öğenin normal belge akışında görünmemesi ve kesinlikle konumlandırılmış bir öğenin orijinal alanı ve konumunun ayrılmaması nedeniyle göreceli değerden farklıdır.
Ek olarak, kesinlikle konumlandırılmış öğeler, konumlandırılmış üst öğeye göre en yakınlarına göre hareket ettirilir. Göreceli olarak konumlandırılmış bir üst öğe yoksa, kesinlikle konumlandırılmış öğe, öğeye göre konumlanacaktır.
... Bu küçük bir bilgi; bunun bazı kodlarda nasıl çalıştığına bir göz atalım:
...
Bölüm (konum: göreceli;) div (konum: mutlak; sağ: 20 piksel; üst: 20 piksel;)
Mutlak konumlandırmanın gösterilmesi
Bu örnekte, eleman göreceli olarak konumlandırılır, ancak herhangi bir ofset özelliği içermez. Sonuç olarak, konumu değişmez. eleman
sınıf ofseti ile pozisyon değerini mutlak olarak içerir. eleman beri en yakın göreceli olarak konumlandırılmış ebeveyndir
, sonra eleman
elemana göre konumlandırılacak
.
Göreceli olarak konumlandırılmış elemanlar için, öteleme özellikleri elemanın kendisine göre hangi yönde hareket ettiğini belirler. Mutlak olarak konumlandırılmış elemanlar için, ofset özellikleri, elemanın konumlandırılmış ebeveyne göre en yakınına göre hangi yöne hareket ettirildiğini belirler.
Sağ ve üst özelliklerin bir sonucu olarak, eleman
sağdan 20 piksel ve üstten 20 piksel görünecek
.
eleman beri
kesinlikle konumlandırıldığında, sayfanın normal akışında konumlanmamıştır ve çevresindeki tüm öğelerle örtüşecektir. Ayrıca başlangıç pozisyonu
kaydedilmez ve diğer öğeler bu yeri alabilir. Tipik olarak, konumlandırmanın çoğu, konum özellikleri ve ofset özellikleri uygulanmadan gerçekleştirilebilir, ancak bazı durumlarda son derece yararlı olabilirler.
Özet
İçeriğin HTML ve CSS'de konumlandırılmasını öğrenmek, bu dillerde uzmanlaşmak için büyük bir adımdır. Buna blok modelini ekleyin ve ön uç geliştirici olma yolunda ilerliyoruz.
Vlad Merjeviç
Konumlandırma, bir koordinat sistemindeki bir elemanın konumunu ifade eder. Dört tür konumlandırma vardır: normal, mutlak, sabit ve göreli. Konum özelliği ile ayarlanan tipe bağlı olarak koordinat sistemi de değişir.
Konum, sol, üst, sağ ve alt özelliklerinin kombinasyonu sayesinde, bir öğe üst üste bindirilebilir, belirli koordinatlarla bir noktada görüntülenebilir, belirli bir yerde sabitlenebilir, bir öğeyi diğerine göre konumlandırabilir, vb. diğer CSS özellikleri, konumlandırma kontrolü komut dosyaları aracılığıyla kullanılabilir. Böylece sayfayı yeniden yüklemeden, animasyonlar ve çeşitli efektler oluşturmadan öğelerin konumunu dinamik olarak değiştirebilirsiniz.
Normal konumlandırma
Bir öğe için konum özelliği ayarlanmamışsa veya statikse, öğe her zamanki gibi belge akışında oluşturulur. Başka bir deyişle, öğeler HTML kaynak kodunda göründükleri sırayla sayfada görüntülenir.
Tanımlanmışsa, sol, üst, sağ, alt özellikler yoksayılır.
Mutlak konumlandırma
Mutlak konumlandırma ile öğe belge akışında mevcut değildir ve konumu tarayıcının kenarlarına göredir. Bu türü, position özelliğinin mutlak değeri aracılığıyla ayarlayabilirsiniz. Koordinatlar, "görünür alan" olarak adlandırılan tarayıcı penceresinin kenarlarına göre belirlenir (Şekil 3.42).
Pirinç. 3.42. Mutlak olarak konumlandırıldığında sol, sağ, üst ve alt özellik değerleri
Mod aşağıdaki özelliklere sahiptir.
Katman genişliği, açıkça ayarlanmadıysa, içerik genişliği artı kenar boşluğu, kenarlık ve dolgu değerleridir.
Sağ, sol, üst ve alt özellikleri olmayan bir katman orijinal konumunu değiştirmez.
Sol ve üst özellikler, sağ ve alt özelliklere göre önceliklidir. Sol ve sağ birbiriyle çelişiyorsa, sağın değeri yok sayılır. Aynı şey alt için de geçerli.
Left, negatif bir değere ayarlanırsa, katman tarayıcının sol kenarının ötesine geçer ve kaydırma çubuğu görünmez. Bu, bir öğeyi görünümden gizlemenin bir yoludur. Aynısı üst özellik için de geçerlidir, yalnızca katman üst kenarı geçecektir.
left, görüntülenebilir alanın genişliğinden daha büyük bir değere ayarlanırsa veya sağ negatif bir değerle belirtilirse, yatay kaydırma çubuğu görüntülenir. Benzer bir kural top ile çalışır, sadece dikey kaydırma çubuğu hakkında konuşacağız.
Aynı anda, belirtilen özellikler sol ve sağ katmanın genişliğini oluşturur, ancak yalnızca genişlik belirtilmemişse. Genişlik özelliğini ekleyin ve doğru değer yok sayılacaktır. Aynısı katman yüksekliği için de olacaktır, yalnızca üst, alt ve yükseklik özellikleri zaten dahil edilmiştir.
Kesinlikle konumlandırılmış bir öğe, kaydırılırken belgeyle birlikte hareket eder.
Mutlak olarak ayarlanan konum özelliği, bir çerçeve efekti oluşturmak için kullanılabilir. Mutlak konumlandırmaya ek olarak, öğelere otomatik değerle taşma özelliği atanmalıdır. Ardından, içerik görünen alanın yüksekliğini aştığında bir kaydırma çubuğu görünecektir. "Çerçevelerin" yüksekliği ve genişliği, genişlik için sol, sağ ve yükseklik için üst, alt özellikleri aynı anda kullanılarak otomatik olarak oluşturulur (örnek 3.31).
Örnek 3.31. Çerçevelerin bir analogu oluşturma
Mutlak konumlandırma
Dünya halklarının pilavı
fergana pilavı
Özbek pilavı
Sibirya pilavı
İtalyan pilavı
Pilav Estonca
Amerikan pilavı
Hint pilavı
fergana pilavı
Parçalara ayrılmış eti bir kazana koyun ve bir kabuk oluşana kadar kızartın. Halkalar halinde doğranmış soğanı etle birlikte kırmızımsı olana kadar kızartın, ardından şeritler halinde kesilmiş havuçları ekleyin. Tuzun yarısını ekleyin, her şeyi karıştırın ve havuçlar altın rengi olana kadar kızartın. Bundan sonra, gerekli miktarda suyun yarısını dökün ve kaynatın.
Pirinci düz bir tabaka ile örtün, ısıyı arttırın ve pirinci 1–1,5 cm kaplayacak şekilde hemen su dökün, su buharlaştığı anda pilavı bir yüzeyle toplayın, dibe gidin. Ardından pilavın üzerini kapatıp 20-25 dakika dinlendirin.
Bitmiş pilavı iyice karıştırın, büyük bir tabağa aktarın, eti üstüne yayın.
Bu örneğin sonucu Şekil 2'de gösterilmektedir. 3.43. Başlık katmanı akışta her zamanki gibi işlenir ve kenar çubuğu ve içerik katmanları mutlak konumlandırmaya ayarlanır.
Pirinç. 3.43. Mutlak konumlandırma uygulama
IE6'da kesinlikle konumlandırılmış elemanlar aynı anda sol, sağ ve üst, alt özelliklerine ayarlanamaz.
Mutlak konumlandırma, fotoğraflar için araç ipuçları gibi çeşitli efektler oluşturmak için de kullanılır. Etiketin başlık özelliğinin aksine ayrıca araç ipucu metnini de görüntüler, stiller aracılığıyla komut dosyası kullanılarak görüntülenen metnin görünümünü kontrol edebilirsiniz.
İlk olarak, floatTip ID ile boş bir katman oluşturalım ve stilini tanımlayalım. Üç stil özelliği gerekli olmalıdır - mutlak değeriyle konum, yok değeriyle görüntüleme katmanı gizler ve genişlik, ipucu katmanının genişliğini ayarlar. Özelliklerin geri kalanı geliştiricinin isteği üzerine kullanılır ve katmanın görünümünü değiştirmeye yöneliktir (örnek 3.32).
Komut dosyasının kendisi iki işlevden oluşur - moveTip () farenin hareketini izler ve imlecin koordinatlarına göre katmanın konumunu değiştirir ve toolTip () katmanın görünürlüğünü kontrol eder ve içinde istenen metni görüntüler (örnek 3.33).
Örnek 3.33. Katman çıktısı için komut dosyası
Document.onmousemove = moveTip; function moveTip (e) (floatTipStyle = document.getElementById ("floatTip"). style; w = 250; // Katman genişliği // IE tarayıcısı için if (document.all) (x = event.x + document.body.scrollLeft ; y = event.y + document.body.scrollTop; // Diğer tarayıcılar için) else (x = e.pageX; // İmlecin X koordinatı y = e.pageY; // İmlecin Y koordinatı) // Katmanı göster imlecin sağında ise ((x + w + 10)< document.body.clientWidth) {
floatTipStyle.left = x + "px";
// Показывать слой слева от курсора
} else {
floatTipStyle.left = x - w + "px";
}
// Положение от верхнего края окна браузера
floatTipStyle.top = y + 20 + "px";
}
function toolTip(msg) {
floatTipStyle = document.getElementById("floatTip").style;
if (msg) {
// Выводим текст подсказки
document.getElementById("floatTip").innerHTML = msg;
floatTipStyle.display = "block"; // Показываем слой
} else {
floatTipStyle.display = "none"; // Прячем слой
}
}
Kolaylık ve çok yönlülük için, komut dosyası ayrı bir dosyaya yerleştirilmeli ve etiketin src özniteliği ile bağlanmalıdır.
"+" Objektif: Canon EF 24-105 f / 4L IS USM "+" Flaş: Canon Speedlite 580 EX "+" Pozlama: 1/125 Diyafram: 5.6 ")" onmouseout = "toolTip ()" />
Bu örneğin sonucu Şekil 2'de gösterilmektedir. 3.44. toolTip() işlev çağrısındaki metin kaydırmalarının okunabilirlik için olduğunu ve JavaScript sözdizimini kullandığını unutmayın. Safari'de, metin sarıldığında komut dosyası bazen çalışmaz, bu durumda metnin bir satıra yazılması gerekir. Stillere, katmana biraz şeffaflık ekleyen CSS3 opaklık özelliği eklendi. Bu özellik, 9.0 sürümünden önceki IE'de desteklenmez.
Pirinç. 3.44. JavaScript ile oluşturulan araç ipucu
Sabit pozisyon
Katmanın sabit konumu, sabit konum özelliği tarafından belirlenir ve gerçekte mutlak konumlandırmaya benzer. Fakat bunun aksine, ekranda belirtilen sol, üst, sağ ve alt noktaya bağlanır ve web sayfasını kaydırırken konumunu değiştirmez. Mutlaktan bir başka fark da, sabit bir katman görünür alanı sağında veya altında bıraktığında kaydırma çubuklarının görünmemesidir.
Bu tür konumlandırma, menüler, sekmeler, başlıklar, genel olarak sayfaya sabitlenmesi gereken ve her zaman ziyaretçi tarafından görülebilen herhangi bir öğe oluşturmak için kullanılır. Örnek 3.35, sitedeki bilgi miktarına bakılmaksızın tek bir yerde kalan bir altbilginin eklenmesini göstermektedir.
Örnek 3.35. Sabit bodrum
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Sabit bodrum
Sitede listelenen bir aslanı yakalamanın tüm yöntemleri teoriktir ve hesaplama yöntemlerine dayanmaktadır. Yazar, bunları kullanırken güvenliğinizi garanti etmez ve sonuç için herhangi bir sorumluluk kabul etmez. Unutma, aslan bir yırtıcı ve tehlikeli bir hayvandır!
Örneğin sonucu Şekil 1'de gösterilmektedir. 3.45. Sabit altbilgi metinle örtüştüğü ve onu gizlediği için BODY seçicisi için alt dolgu ekledik. IE6 sabit değeri desteklemiyor, bu nedenle bu örnek içinde düzgün çalışmayacaktır.
Pirinç. 3.45. Sayfanın altındaki alt bilgi
göreceli konumlandırma
Konum özelliğinin göreli değerini ayarlarsanız, öğenin konumu orijinal konumuna göredir. Sol, üst, sağ ve alt özelliklerin eklenmesi, öğenin konumunu değiştirir ve onu orijinal konumundan bir tarafa veya diğerine kaydırır. Sol için pozitif bir değer, elemanın sol sınırının sağındaki bir ötelemeyi belirtir, negatif bir değer ise sola bir mahsup belirtir. Top'un pozitif değeri, elemanın aşağı kaymasını belirtir (Şekil 3.46), negatif bir değer ise yukarı kaymayı belirtir.
Pirinç. 3.46. Göreceli konumlandırma için sol ve üst özellik değerleri
Alt ve sağ özellikler zıt etkiye sahiptir. Değer pozitif ise sağ elemanı sağ kenarının soluna, negatif ise sağa kaydırır (Şekil 3.47). Alt değerinin pozitif değeri öğeyi yukarı, negatif değeri aşağı hareket ettirir.
Pirinç. 3.47. Göreceli konumlandırma için sağ ve alt özellik değerleri
Göreceli konumlandırma aşağıdaki özelliklere sahiptir.
Bu tür konumlandırma, hücreler, satırlar, sütunlar vb. gibi tablo öğelerine uygulanamaz.
Bir eleman orijinal konumuna göre yer değiştirdiğinde, elemanın işgal ettiği yer boş kalır ve alt veya üst elemanlarla doldurulmaz.
Örnek 3.36, ona belirli bir yazı stili vermek için başlık metninin aşağı doğru kaymasını gösterir.
Örnek 3.36. Metin başlığı
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Başlık
Yazı tipi biliminin az ve kayınları
Yazı tipi, tasarımı ifade etmenin bir aracıdır, önemsiz bir okuma değil.
Bu örneğin sonucu Şekil 2'de gösterilmektedir. 3.48.
Pirinç. 3.48. Metni orijinal konumundan kaydırma
iç içe katmanlar
Genellikle, göreli konumlandırmanın kendisi sıklıkla kullanılmaz, çünkü aslında aynı rolü, örneğin aynı marjı yerine getiren bir dizi özellik vardır. Ancak iç içe katmanlar için farklı konumlandırma türlerini birleştirmek, en uygun ve pratik yerleşim tekniklerinden biridir. Ana öğe için göreli ve alt öğe için mutlak ayarlarsanız, koordinat sistemi değişecek ve alt öğenin konumu üst öğeye göre gösterilir (Şekil 3.49).
Pirinç. 3.49. İç içe katmanlarda sol, sağ, üst ve alt özellik değerleri
Koordinatlar sınırın iç kenarından sayılır, alan değerleri dikkate alınmaz. Aşağıdaki örnekte, metin, padding özelliği göz ardı edilerek sınırın yakınında bir katmanın sağ alt köşesinde konumlandırılmıştır.
Metin
İç katmanın konumunu kontrol etmek için sol, sağ, üst, alt dört özelliği kullanarak, ana katmanın boyutunu bilmenize gerek yoktur. Bu, konumlandırma kapsamını genişletir, bu nedenle konum, çeşitli öğelerin yerleşiminde oldukça aktif olarak kullanılır. Örnek olarak, bir fotoğraftaki farklı bilgilerin yer paylaşımını alalım: ona yapılan yorum sayısı, "Yorum ekle", "Yazar hakkında bilgi" ve "Favorilere ekle" bağlantıları. Genel olarak, sonuç Şekil 2'deki gibi bir şey olmalıdır. 3.50.
Pirinç. 3.50. Üst üste öğeler içeren fotoğraf
Kodun kendisi örnek 3.37'de gösterilmiştir. Fotoğraf katmanı göreli konumlandırmaya ve iç katmanlar img (fotoğraf çıktısı), yorum (yorum sayısı) ve araç (fotoğrafın altındaki bağlantılar) mutlak konumlandırmaya ayarlıdır.
Örnek 3.37. Konumlandırma katmanları
XHTML 1.0 CSS 2.1 CSS 3 IE 7+ IE 9+ Cr Op Sa Fx
Konumlandırma katmanları
134
HTML'deki bir blok öğesi, varsayılan olarak ana öğenin tüm genişliğini kapsayan bir öğedir. Ana öğe, başka bir blok öğesi veya bir tarayıcı penceresi olabilir. Bir blok elemanı, CSS özellikleri kullanılarak genişlik ve yüksekliğe ayarlanabilir. Blok öğelerini konumlandırma, bunları tarayıcı penceresi içinde ve CSS konumu, sol, üst, sağ ve alt özelliklerini kullanarak birbirlerine göre konumlandırma işlemidir. CSS konum özelliği, mevcut dört konumlandırma türünden birini ayarlamak için tasarlanmıştır: statik (varsayılan), mutlak, sabit ve göreli. Geri kalan CSS özellikleri, yani sol, üst, sağ ve alt, üst öğenin sol, üst, sağ ve alt kenarlarına göre mesafeleri ayarlamaya yöneliktir. Ayrıca belirli özellikler ayarlanırken blok elemanları birbiri üzerine binebilir ve bu özellik sitelerde kullanılabilir.
Varsayılan konumlandırma (statik)
Bir blok öğesinde konum belirtmediyseniz veya aynı olan statik belirlediyseniz, blok öğeleri sırayla düzenlenir. Ayrıca, bir sonraki blok (örneğin: kırmızı) yeni bir satırda bulunur. Ayrıca bu konumlandırma, sol, üst, sağ ve alt mesafelerin ayarlanmasından etkilenmez.
Mutlak konumlandırma
Mutlak konumlandırmada, bir elemanın konumu, sol, üst, sağ ve alt özellikler tarafından verilen mesafeler kullanılarak tarayıcı penceresinin kenarlarına göre ayarlanır. Sol ve sağ mesafeleri aynı anda belirtirseniz ve bunlar birbiriyle çelişirse, sol tercih verilir, aynısı üst mesafenin öncelikli olduğu üst ve alt için de geçerlidir. Mutlak konumlandırma, tasarım amaçları için göreceli konumlandırma ile birlikte çok sık kullanılır, çeşitli öğeleri birbirine göre yerleştirmek gerektiğinde, açılır menüler, site işaretlemesi vb. oluşturmak için de kullanılabilir.
Sabit konumlandırma
Sabit konumlandırma, diğer konumlandırma türlerinden farklıdır ve sayfayı kaydırırken içerikle birlikte hareket etmez. Sabit konumlu blok öğeleri, tarayıcı penceresinin kenarlarına sol, üst, sağ ve alt özellikler kullanılarak sabitlenir. Sabit konumlandırma, çerçeveli arayüzler (tarayıcı penceresi birkaç alana bölünmüştür), sabit bir menü, sitenin sabit bir altbilgisi ve "kalıcı" bloklar (bağlantılar listesi, sosyal düğmeler vb.) oluşturmak için kullanılır.
göreceli konumlandırma
Göreli konumlandırma, mevcut konumuna göre sol, üst, sağ ve alt mesafeler belirtilerek belirlenir.
Ancak, böyle bir blok pozisyonu, margin özelliği kullanılarak da oluşturulabilir.
Göreceli konumlandırma tek başına eğlenceli değildir, çoğunlukla mutlak konumlandırma ile birlikte kullanılır.
Seçenekleri göz önünde bulundurun:
CSS'de konumlandırma oldukça basit görünüyor. Hangi bloğun ve nerede bulunması gerektiğini belirtin. Ancak, her şey ilk bakışta göründüğü kadar basit değildir. Yeni başlayanlar için kafa karıştırıcı olabilecek birkaç şey var. Nasıl çalıştığını ayrıntılı olarak anlarsanız, konumlandırmadan çok daha fazlasını elde edebilirsiniz.
CSS'de kutu modeli ve konumlandırma türleri.
Başlamadan önce CSS'de Box Model makalesini okumanızı tavsiye ederim. Özetle: html'deki her öğe, dolgu ve dolgu miktarını ve bunları ayıran kenarlığı belirtebileceğiniz bir dikdörtgendir.
Konumlandırma şemaları, bu dikdörtgenin nerede konumlandırılacağını ve etrafındaki öğeleri nasıl etkileyeceğini belirler.
CSS'deki position özelliği beş değer alabilir:
mutlak
akraba
sabit
statik
miras
Statik değer varsayılan olarak kullanılır. Statik konumlandırmaya sahip herhangi bir öğe, belgenin genel akışındadır. Yerleştirme kuralları Box modeline göre belirlenir. Bu tür elemanlar için üst, sağ, alt ve sol özellikler göz ardı edilecektir. Bu özellikleri kullanmak için, bir elemanın konumu mutlak, göreli veya sabit olmalıdır.
Devralma değeri, diğer tüm CSS özelliklerinde olduğu gibi, öğeyi üst öğeyle aynı değeri kullanmaya zorlamak için kullanılır.
Mutlak konumlandırma
Mutlak konumlandırma, öğeyi belgenin genel akışından kaldırır. Etraftaki öğelere gelince, bu durumda, istenen öğeyi yok sayarlar, sanki buna display: none özelliği ayarlanmıştır; ... Böyle bir öğenin yerinin başka öğelerle dolmasını istemiyorsanız, farklı bir yaklaşım bulmanız gerekir.
Üst, sol, sağ ve alt özelliklerini kullanarak mutlak konumlandırılmış bir öğenin konumunu ayarlarsınız. Sadece iki tanesini belirtmeniz gerekiyor, üst veya alt ve sol veya sağ. Hiçbir özellik belirtilmemişse, sol üst çift için 0 ayarlanır.
Mutlak konumlandırmanın anahtarı, başlangıç noktasının ne olduğunu anlamaktır. top özelliği 20px olarak ayarlanmışsa, o zaman nereden sayılmaları gerekir.
Cevap basit: bu tür öğeler, statik dışında konumlandırılan en yakın ana öğeye göre konumlandırılır. Böyle bir öğe yoksa, öğe ana belgeye göre konumlandırılır. Yani, mutlak konumlandırma ayarlanırken CSS, tarayıcıya ana öğeye bakmasını söyler ve konumu statik değilse, mevcut öğeyi ona göre hizalaması gerekir.
Göreceli konumlandırma.
Nispeten konumlandırılmış öğeler, konumlarına göre konumlandırılır, genellikle normal konumlarından kaydırılır. Bu, margin özelliğini kullanarak bir öğeye dolgu eklemeye benzer. Bununla birlikte, önemli bir fark vardır: Konumlandırma kullanılması durumunda komşu elemanlar bu kaymayı dikkate almaz.
Bunu şu şekilde hayal edin: belirli bir görüntü kaydırılır ve yerinde bir "hayalet" kalır, tüm öğeler bu "hayalet" e göre yerleştirilir. Bu, öğeleri üst üste istiflememizi sağlar.
Böylece, göreceli olarak konumlandırılmış elemanlar, elemanın normal akışından alınır, ancak yine de, orijinal eleman hala belge akışında olacak şekilde davranan bitişik elemanların düzenlenmesi üzerinde bir etkiye sahiptir.
Bu durumda elemanın burada ne konumlandığı sorusunu sormamıza gerek kalmıyor. Cevap her zaman: normal belge akışı. Bir öğeye dolgu eklemeye çok benziyor, ancak aynı zamanda bitişik öğeleri etkilemiyor.
Sabit konumlandırma
Sabit konumlandırma, küçük farklılıklarla mutlak konumlandırma gibi davranır.
İlk olarak, sabit konumlu bir öğe, ana öğeler yok sayılarak her zaman tarayıcı penceresine göre konumlandırılır.
İkinci fark ise adından geliyor. Sabit elemanlar sayfada sabitlenir. Kaydırırken hareket etmezler.
Z-endeksi
Site sayfası iki boyutludur. Genişliği ve yüksekliği vardır. Z-endeksi üçüncü bir boyut, derinlik ekler.
İndeks ne kadar yüksek olursa, öğe sayfada o kadar yüksek olur. Bunun yardımıyla, bir elemanın diğerinin üzerinde yer almasını sağlayabiliriz. Varsayılan olarak değeri sıfırdır. Negatif değerlere de izin verilir.
Aslında z-index burada anlattığımdan çok daha karmaşık ama bu ayrı bir yazının konusu. Şimdi, hatırlanması gereken en önemli şey, üçüncü boyut fikrinin kendisi ve yalnızca konumlandırılmış öğelerin bu özelliği kullanabileceği gerçeğidir.
Konumlandırma sorunları.
Birkaç yaygın konumlandırma problemine ve bunların nasıl çözüleceğine dair birkaç söze bir göz atalım.
Aynı eleman üzerinde konum özelliğini ve float özelliğini aynı anda kullanamazsınız. Bu özelliklerin her ikisi de öğenin konumunu etkiler, bu nedenle en son belirtilen özellik kullanılacaktır.
Yorumlardan:
position:rel ve float'ı aynı anda kullanabilirsiniz.
Konum: mutlak ve kayan nokta aynı anda belirtildiğinde, son belirtilen özellik uygulanmaz. Bu durumda, bu stillerin sırasına bakılmaksızın, konum: mutlak uygulanır ve kayan nokta özelliğinin son (veya hesaplanan) değeri, başlangıç değerinden bağımsız olarak, yani yok olarak ayarlanır. görmezden gelindi.
Dış dolgu, mutlak konumlandırılmış öğeler üzerinde çökmez. Diyelim ki sayfada 20px alt kenar boşluğuna sahip bir paragraf var. Bunu, üst kenar boşluğu 30 piksel olan bir resim takip eder. Resim ve metin arasındaki mesafe 50px (20px + 30px) değil, 30px (30px> 20px) olacaktır. Bu davranışa çöken kenar boşlukları denir. İki girinti tek bir girintide birleştirilir. Kesinlikle konumlandırılmış öğelerin daraltılmış kenar boşlukları yoktur, bu nedenle sonuç beklediğiniz gibi olmayabilir.
IE ve z-endeksi. IE6'da, bir öğenin seçimi, çevresindeki öğelerin z-endeksi, z-endeksi ne olursa olsun, her zaman yığının en üstünde gerçekleşir.
IE6 ve IE7'nin z-endeksi ile ilgili başka bir sorunu var. IE, yığının üst kısmının hangi öğe grubunda olduğunu belirlemek için ana öğeye bakar, diğer tarayıcılar genel bağlamı kullanır. Örneğin:
Paragrafın z-endeksi daha büyük olduğu için resimden daha uzun olmasını bekliyoruz. Ancak, IE6 ve IE7, farklı belge yığınlarında oldukları için yukarıdaki resmi koydu. Div için bir yığın, img için bir yığın ve görüntünün div'den daha yüksek bir z-endeksi var.
Çözüm
Konum özelliği, bir öğeyi konumlandırma şemalarından birine göre konumlandırma davranışını ayarlar. Kullanılabilir özellik değerleri mutlak, göreli, sabit, statik (varsayılan) ve devralır.
Konumlandırma şemaları, bir web sayfasına bir öğe yerleştirme kurallarını ve ayrıca komşu öğelerin düzenlenmesi üzerindeki etkisini belirler.
Z-endeksi özelliği yalnızca konum özelliği ayarlanmış öğelere uygulanabilir. Sayfaya üçüncü bir boyut ekler ve öğelerin yığın sırasını belirler.
Konum özelliğinin okunması kolay görünüyor, ancak ilk bakışta göründüğünden biraz farklı çalışıyor. Geliştiriciler, büyük olasılıkla mutlak kullanmaları gerekmesine rağmen, çoğu zaman göreceli konumlandırmaya ihtiyaçları olduğunu düşünür. Temel olarak, düzen sırasında float özelliği kullanılır ve belgenin genel akışından "kopmak" istediğiniz öğeler için position özelliği gereklidir.
Bir web geliştiricisinin görsel olarak tamamlanmış bir sayfanın nasıl görüneceğini düşünmek zorunda olmadığını hayal edin. Sadece kodu yazar, öğeler sayfada yukarıdan aşağıya (blok) ve soldan sağa (satır içi) sıralanır. Belgede kod ne kadar yüksek yazılırsa, sayfada o kadar yüksek görüntülenir.
Temel olarak, öğelerin doğal davranışını ve sayfadaki görüntülenme sırasını belgenin akışına göre göreceğiz. Ancak bu sıralamadan hiç memnun değiliz, logoyu sol üst köşeye, düğmeyi ise biraz sağa yerleştirmek istiyoruz. Tüm unsurlar üzerinde tam kontrole ihtiyacımız var, nereye ve neyin yerleştirileceğine biz karar veriyoruz. Ve bunun için akıştaki öğelerin olağan davranışını değiştiren bir araca (mülk) ihtiyacınız var. Bu özellik nedir?
V CSS stiller buna konumlandırma denir (konum) hangisi sıradan olabilir (statik), akraba (akraba) ve mutlak (mutlak).
CSS'de göreli konumlandırma
NS göreceli konumlandırma, blok orijinal konumuna göre hareket eder. Ancak, bloğa yazarak:
pozisyon: akraba;
hiçbir şey olmuyor, yerinde duruyor. Ve koordinat sistemi bloğu hareket ettirir (üst, alt, sol, sağ), hem pozitif hem de negatif değerlerle.
Nasıl çalışır?
Bir sınıfla sarı bir bloğun içinde blok sarısı sınıflı kırmızı bir blok var blok göreli... Normal bir akışta, kodda yazılan son blok olduğu için kırmızı blok sarı blokla örtüşür.
başlangıç pozisyonu
göreceli konum
Kırmızı kutuyu 10 piksel aşağı taşımamız gerekiyor. Bu, yalnızca kırmızı bloğun konumunu zorla değiştirerek yapılabilir. böyle yazıyoruz üst: 10 piksel, ancak bu 10 pikselin nelerden sayıldığını belirtmek gerekiyor?
Kayıt olduktan pozisyon: göreceli, mevcut konumuna göre neyin sayılacağını netleştiririz.
Blok-sarı ( arka plan rengi: # ffe70f;
}
Blok göreli ( pozisyon: göreceli; üst: 10 piksel; arka plan rengi: # ed5b77;
}
Resimde, kırmızı bloğun orijinal konumundan 10 piksel aşağı nasıl hareket ettiğini görebiliriz.
Eğer koddan kaldırırsanız pozisyon: göreceli, ardından blok yerinde kalacaktır. Ve eğer yerine akraba, yazı yazmak mutlak, o zaman varsayılan olarak bu 10 piksel tarayıcı penceresinin kenarından sayılacak ve sonuç olarak, bloğumuz tam tersine tarayıcının alt kenarına kadar yükselecek. Ve bu planlarımızın bir parçası değildi.
CSS'de mutlak konumlandırma
resim bloğunda kesinlikle konumlandırılmış, bu, koordinat sistemi tarayıcının kenarından sayıldığında, sadece bir kelimeyi değiştirerek bloğun konumunu değiştirdik.
pozisyon: mutlak;
Bir özelliği var. Mutlak konumlandırma ayrıca satır içi öğeleri de etkiler. Bir satır içi öğe ayarlanmışsa pozisyon: mutlak, o zaman bir blok gibi davranacaktır. Bu, mülke benzer - Ekran bloğu.
Hepsi bu kadar değil, "göreceli" ebeveynin içindeki "mutlak" öğe, kökenini değiştirir ve üst öğeden konumlandırmaya başlar.
pozisyon: göreceli
pozisyon: mutlak;
Sınıfla engelle mutlak ebeveynin içinde olmak blok sarısı.
Blok-sarı ( pozisyon: göreceli; dolgu: 10 piksel; arka plan rengi: # ffe70f;
}
Sarı blok olduğu için göreceli konumlandırma, ardından kırmızı blok ile mutlak konumlandırma, belirtilen pikseller tarafından kırmızıya göre kaydırılır.
Blok-mutlak ( pozisyon: mutlak; alt: 10 piksel; sol: 10 piksel; arka plan rengi: # ed5b77;
}
Sabit konumlandırma
Sayfayı aşağı kaydırırken, bir blok pozisyon: sabit, yerinde kalır, genellikle gezinme çubuğunu yerleştirmek için kullanılır.
z-endeksi
"Mutlak" blokların çakışan sırasını çözer. Kırmızı bloğun sarı olanın üstünde olmasına ihtiyacımız var, sonra z-endeksi: 2 kırmızı ve z-endeksi: 1. sarı için.
kırmızı
Sarı
blok-kırmızı ( pozisyon: göreceli; z-endeksi: 2; arka plan rengi: # ffe70f;
}
blok-sarı ( pozisyon: mutlak; üst: 20 piksel; z-endeksi: 1; arka plan rengi: # ed5b77;
}
UDC 681.5, 681.325.5 (075.8) LBC 32.973.202-018.2 i 73 Shcherbina A.N. Bilgi işlem makineleri, sistemleri ve ağları. Mikrodenetleyiciler ve mikroişlemciler ...