Opaklık: 0, görünürlük: gizli ile tam olarak aynı etkiye sahip mi


119

Öyleyse, visibilitymülkü fiilen kullanımdan kaldırıyor mu?

(Internet Explorer'ın henüz bu CSS2 özelliğini desteklemediğinin farkındayım.)
Düzen motorlarının karşılaştırmaları

Ayrıca bakınız: görünürlük: gizli ve görüntülü: yok arasındaki fark nedir


4
Ve taborder nasıl olur? Visible = false ise, o zaman kontrol herhangi bir odak almaz, ancak opaklık 0 ise, sekme tuşu yine de kontroller arasında yinelenir?
Stefan

Şeffaf bir kontrolün nasıl odaklanabileceğini görmek ilginç bir test olayı olurdu.
Chris Noe

3
Bunu denedim (FF3). Opaklığa sahip bir girdi öğesi: 0, görsel gösterge olmamasına rağmen, sekme sırası başına odak alır. İmleç kaybolur. Ne yazarsanız yazın, giriş öğesinin değerine girilir. Sekmeye tekrar basıldığında bir sonraki alana geçilir. İlginç.
Chris Noe

Yanıtlar:


256

İşte çeşitli yanıtlardan doğrulanmış bilgilerin bir derlemesi.

Bu CSS özelliklerinin her biri benzersizdir. Görünmeyen bir öğeyi oluşturmaya ek olarak, aşağıdaki ek etkilere sahiptirler:

  1. Öğenin normalde kaplayacağı alanı daraltır
  2. Olaylara yanıt verir (ör. Tıklama, tuşa basma)
  3. Katılır TabOrder
                     olaylar sekme sırasını daralt
opaklık: 0 Hayır Evet Evet
görünürlük: gizli Hayır Hayır Hayır
görünürlük: daralt Evet * Hayır Hayır
ekran: yok Evet Hayır Hayır

* Evet, bir tablo öğesinin içinde, aksi takdirde Hayır.

Markdown belgelerini buradan takip etmeye çalıştım: daringfireball.net/projects/markdown/syntax
Chris Noe

Tamam, yani SO kasıtlı olarak <table> 'ı desteklemiyor. Ben de ascii yaptım.
Chris Noe

3
Ayrıca, "opaklık: 0" ile Flash nesneleri oluşturulur ve hareketli grafiğin yapıcısı tetiklenir, ancak "görünürlük: gizli" ile tetiklenmez.
pepkin88

Telsiziniz / onay kutularınız çalışmıyorsa , fare tıklamasını algılaması için bunun yerine visibility:hiddenkullanmanız gerekir opacity: 0.
dayuloli

7
@ChrisNoe: Özet için teşekkürler. Bir şey eklemek isteyebilirsiniz: Ben sadece bir üst düğüm görünmez hale nasıl araştırılmış ancak sonuç, çocuk düğümleri hala görülebilir: Görünür çocuklar için hiçbir şansı: opacity:0 ya display:none, ama kullanmak eğer visibility: hidden sen çocuk görünür yapabilirsiniz ilevisibility: visible
Martin

14

Hayır.

Opaklığa sahip öğeler, yeni yığınlama bağlamı oluşturur.

Ayrıca, CSS spesifikasyonu bunu tanımlamaz, ancak içeren öğeler opacity:0tıklanabilir ve içeren öğeler visibility:hiddendeğildir.


12

Hayır değil. Arada büyük bir fark var. Benzerler, çünkü görünürlük gizli veya opaklık 0 ise öğenin içinden görebilirsiniz.

donukluk: 0 : Eğer tıklatamaz arkasında elemanlarında.

görünürlük: gizli : arkasındaki öğelere tıklayabilirsiniz .


1
"Hayır değil" mi? Bu, Soruya bir yanıt mı yoksa mevcut Yanıtlardan birine bir yanıt mı? Daha sonraysa, hitap ettiği cevabın altına yorum olarak eklenmelidir.
Chris Noe

9
Bu, "Opaklık: 0, görünürlük ile tam olarak aynı etkiye sahip mi: gizli?" Sorusuna bir cevaptır .... bu açık değil miydi?
Nishant

5

Arasında birçok fark vardır visibilityve opacity. Cevapların çoğu bazı farklılıklardan bahsediyor, ancak işte tam bir liste.

  1. şeffaflık devralmaz, görünürlük devralır

  2. şeffaflık canlandırılabilirken görünürlük değildir.
    ( Teknik olarak öyle, ancak "% 37'si daraltılmış ve% 63'ü gizli" için tanımlanmış bir davranış yoktur, bu yüzden bunu canlandırılamaz olarak düşünebilirsiniz.)

  3. Opaklığı kullanarak, bir alt öğeyi üst öğesinden daha opak yapamazsınız. Örneğin, renkli: siyah ve opaklık: 0.5 olan bir ap'niz varsa, çocuklarının hiçbirini tamamen siyah yapamazsınız. Opaklık için geçerli değerler 0 ile 1 arasındadır ve bu örnek 2 gerektirir!
    Sonuç olarak, Martin'in yorumuna göre , görünmez bir ebeveynde (görünürlüğü olan: gizli) görünür bir çocuğunuz olabilir (görünürlüğü olan: görünür). Opaklıkla bu imkansızdır; bir ebeveynin opaklığı varsa: 0; çocukları her zaman görünmezdir.

  4. Kornel'in cevabı , 1'den küçük opaklık değerlerinin kendi yığın bağlamlarını oluşturduğundan bahseder; görünürlük için hiçbir değer yoktur.
    (Keşke bunu göstermenin bir yolunu düşünebilseydim, ancak görünebilirliğin yığılma bağlamını göstermenin herhangi bir yolunu düşünemiyorum: gizli öğe.)

  5. Göre philnash cevabı gizli elemanları değildir:, donukluk ile elementler: görünür iken 0 hala ekran okuyucular tarafından okunur.

  6. Göre Chris Nuh cevap , görüş fazlası (örneğin çöküşü gibi) seçenekleri ve tıklama artık cevap görünmeyen ve sekmeli edilemez öğesi vardır.

(Bunu bir topluluk wiki yapmak, çünkü mevcut cevaplardan ödünç almak aksi takdirde adil olmaz.)


4

Bundan tam olarak emin değilim, ancak bence ekran okuyucuları görünürlüğü gizli olarak ayarlanan şeyleri okumazlar, ancak opaklıkları ne olursa olsun bir şeyler okuyabilirler.

Aklıma gelen tek fark bu.


Bu, sonucu nasıl etkiler? DOM'a nelerin dahil olduğu açısından belki? Test durumlarım, Mozilla'nın görünürlüğü bir kenara atmadığını gösteriyor: gizli öğeler.
Chris Noe

Öğeler, CSS stilinden bağımsız olarak DOM'da olacaktır, yani ekran okuyucu yazılımı kullanan kör kullanıcılar, opaklıkta metne sahip olabilir: 0 öğesi onlara okunur, oysa aynı öğenin görünürlüğü varsa: gizli. Sonuç farklı olduğu için bu gerçekten bir erişilebilirlik sorunu.
philnash

faydalı nokta, görünürlüğü gizli olarak ayarlamanın sonucudur, ancak bu buzdağının sadece görünen kısmıdır. Daha spesifik olarak, görünürlük: gizli, sayfadaki düzenini korurken (görünüşte) dom'dan kaybolmasını sağlar.
Nishant

4

Tam olarak emin değilim, ancak tarayıcılar arası şeffaflığı şu şekilde yaparım:

opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);

Görünürlüğü olan nesneler: gizli hala şekle sahiptir, sadece görünmezler. opaklık sıfır öğeleri yine de tıklanabilir ve diğer olaylara tepki verebilir.


Şekle sahip olmak ve görünmez olmak ne demektir?
Chris Noe

@chris, sayfadaki alanı hala kapladıkları anlamına geliyor
Mitchel Sellers

2
opaklık, öğenin arka planın üzerine nasıl çizileceğine karar vermek için kullanılır. Opactiy 0 olarak ayarlandığında, öğe doğal olarak yer kaplar, ancak öğe renginin% 0'ı arka planın% 100'ü ile karıştırıldığı için hiçbir şey çizilmez ve bu da yeni bir görünüme neden olmaz. gizli ve benzer arkadaşlar, çizim yapılırken öğenin atlandığı anlamına gelir.
mP.

2

Bir kullanıcı stilini oluştururken, bir contenteditable şeyi ayarlarsanız visibility: hidden, giriş imlecinin onunla gerçekten etkileşim kurmak istemediğini fark ettim . Örneğin eğer varsa

<div contenteditable><span style='visibility: hidden;'></span></div>

... o zaman o div / span'a odaklanırsanız, aslında yazamazsınız. Halbuki opacity: 0onunla yapabilirsin. Bunu kapsamlı bir şekilde test etmedim, ancak bu sayfadaki hiç kimse metin girişi üzerindeki etkilerden bahsetmediği için burada bahsetmeye değer olduğunu düşündüm. Bu muhtemelen yukarıda bahsedilen olaylarla ilgili görünüyor .



0

Özelliklerin farklı anlamsal anlamları vardır. Anlamsal CSS kulağa aptalca gelebilir, ancak diğer kullanıcıların da belirttiği gibi, anlambilimin bir sayfanın erişilebilirliğini etkilediği ekran okuyucular gibi cihazlar üzerinde bir etkisi vardır.

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.