CSS Özellikleri: Görüntü ve Görünürlük


Yanıtlar:


111

visibilityÖzellik yalnızca bir öğeyi görüntüleme edip etmeyeceğine tarayıcısına anlatır. Ya görünür ( visible- görebilirsin ) ya da görünmez ( hidden- göremezsin).

displayMülkiyet tarayıcıya bildirir nasıl çizmek ve hiç eğer, bir öğeyi görüntüleme - bu şekilde gösterilip gösterilmemesi gerektiğini inlineeleman veya (yani o metin ve diğer satır içi unsurlarla akar) block-seviye elemanın (yani o yükseklik ve genişlik özelliklerine sahip olduğunu siz) o, vb yüzebilen var, ayarlayabilir veya bir inline-block(bir blok kutusu gibi davranan ama satır içi yerine serilir) ve bazı diğerleri (yani list-item, table, table-row, table-cell, flex, vs).

Bir öğeyi olarak ayarladığınızda , display: blockaynı zamanda ayarladığınızda visibility: hidden, tarayıcı onu bir blok öğe olarak görmeye devam eder, ancak siz onu görmezsiniz. Görünmez bir kutunun üstüne kırmızı bir kutuyu yığmanız gibi: Kırmızı kutu, gerçekte göremediğiniz bir fiziksel kutunun üstünde dururken havada yüzüyormuş gibi görünür.

Başka bir deyişle, bu display, görünmeyen noneöğelerin, görünür olup olmadıklarına bakılmaksızın bir sayfadaki öğelerin akışını yine de etkilemeyeceği anlamına gelir . Bir öğeyi çevreleyen kutular display: none, bu öğe hiç orada olmamış gibi davranacaktır (DOM'da kalmasına rağmen).


1
.. DOM ile ilgisi yok mu? örneğin ... eğer varsa display: none;, bu öğe DOM'dan kaldırılır mı? yoksa tamamen kafam mı karıştı?
Hristo

3
@Hristo: Aslında öyle değil. Sen olabilir asla yalnız CSS ile DOM bir elementin pozisyonunu veya varlığını etkiler.
BoltClock

@BoltClock ... evet, haklısın. DOM'dan bir öğeyi asla alamayacağınızı, ancak yalnızca DOM ile ilgili olarak nasıl görüntülendiğini etkileyeceğinizi fark ettim . bu daha doğru mu?
Hristo

Unutulmaması gereken önemli bir nokta, dahili olarak display'i none olarak ayarlayan jQuery'nin hide () yöntemini kullanarak bu öğenin konumunu alamayacağınızdır. Görünürlüğü kullanırken bunu yapabilirsiniz.
p0rsche

21

görünürlük: gizli;

  • öğe boyanmayacak VE tıklama / dokunma olaylarını almayacak, ancak kapladığı alan hala dolu
  • yerleşim amacıyla hala orada olduğundan, görünür olmadan ölçebilirsiniz
  • içeriği değiştirmek, sayfayı yeniden düzenlemek / düzenlemek için yine de zamana mal olacaktır
  • görünürlük miras alınır, yani bu, onlara görünürlük sağlayarak alt çocukları görünür kılabileceğiniz anlamına gelir: görünür;

görüntü yok;

  • öğenin akışa / düzene katılmamasını sağlar
  • Flash filmleri ve iframe'leri (kullanılan tarayıcıya bağlı olarak) öldürebilir (tekrar gösterildikten sonra yeniden başlatılır / yeniden yüklenir), ancak bunun iframe'lerle olmasını önleyebilirsiniz
  • eleman hiç yer kaplamaz. yerleşim amacıyla sanki yokmuş gibi
  • animasyonlar sırasında hiçbiri ve başka bir değer arasında geçiş yaparsanız, bazı tarayıcıların / cihazların (iPad gibi) doğrudan o öğe tarafından kullanılan belleği geri almasını sağlar.

ekstra notlar:

  • gizli içerikteki resimler: tüm popüler tarayıcılarda, görünürlüğü olan herhangi bir öğenin içinde olsalar bile resimler hala yüklenir: gizli; veya display: none;
  • Gizli içerikteki yazı tipleri: webkit tarayıcıları (Chrome / Safari), görünürlük veya görüntüleme dahil olmak üzere yalnızca gizli öğelerde kullanılan özel yazı tiplerinin yüklenmesini geciktirebilir. Bu, özel yazı tipi yüklenene kadar hala yedek yazı tipi kullanan öğeleri ölçmenize neden olabilir.

19

display: none öğeyi html akışından kaldırmazken visibility: hidden bunu yapmaz.


2

görüntü yok; DOM öğelerinin görsel stilini / fiziksel alanını DOM'dan kaldırırken visibility: hidden; öğeyi kaldırmayacak, basitçe gizleyecektir. Dolayısıyla, DOM'nuzda 300 piksel dikey alan kaplayan bir div, görünürlük ayarlandığında HALA 300 piksel dikey genişlikte yer kaplar: gizli; ancak görüntülenecek şekilde ayarlandığında: yok; görsel stilleri ve kapladığı alan gizlenir ve daha iyi bir kelime olmadığı için alan "serbest bırakılır".

[DÜZENLE] - Bir süre önce yukarıdakileri yazdım ve yeterince bilgili olmadığım veya kötü bir gün geçirdiğimden emin değilim, ama gerçek şu ki, öğe DOM hiyerarşisinden ASLA kaldırılmıyor. Tüm blok seviyesi ekran 'stilleri' display kullanılırken tamamen 'gizlidir': hiçbiri, oysa görünürlük ile: gizli; öğenin kendisi gizlidir, ancak yine de DOM'da görsel bir alan kaplar. Umarım bu işleri düzeltir


4
Hayır, display: noneolacak değil DOM bir öğe kaldırmak. Öğe hala oradadır, yalnızca görüntülenmez .
BoltClock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.