Чи має непрозорість: 0 такий же ефект, як видимість: приховано


119

Якщо так, чи ефективно це застаріле visibilityмайно?

(Я розумію, що Internet Explorer ще не підтримує цю властивість CSS2.)
Порівняння механізмів компонування

Дивіться також: Яка різниця між видимістю: прихований та показ: ні


4
А як щодо табло? Якщо видима = хибна, то елемент керування не фокусується, але якщо непрозорість 0, можливо, клавіша вкладки все ще перебирається між елементами управління?
Стефан

Цікавим буде тестовий випадок, щоб побачити, як прозорий елемент управління може зосередитися.
Кріс Ное

3
Я спробував це, (FF3). Елемент введення з непрозорістю: 0 отримує фокус за межею вкладки, хоча візуальної індикації немає. Курсор просто зникає. Що б ви не вводили, вводиться у значення вхідного елемента. Натискання вкладки знову переходить до наступного поля. Цікаво.
Кріс Ное

Відповіді:


256

Ось збірка перевіреної інформації з різних відповідей.

Кожен із цих властивостей CSS унікальний. Крім того, що елемент відображається не видимим, вони мають такі додаткові ефекти:

  1. Згортає простір, який зазвичай займає елемент
  2. Відповідає на події (наприклад, клацання, натискання клавіші)
  3. Бере участь у вкладці
                     колапс подій табору
непрозорість: 0 Ні Так Так
видимість: приховано Ні Ні Ні Ні
видимість: згортання Так * Ні Ні
дисплей: немає Так Ні Ні

* Так всередині елемента таблиці, інакше Ні.

Я намагався дотримуватися документації Markdown тут: daringfireball.net/projects/markdown/syntax
Chris Noe

Гаразд, так ТАК навмисно не підтримує <table>. Тому я зробив це ascii.
Кріс Ное

3
Крім того, з "непрозорістю: 0" відображаються об'єкти Flash, і конструктор спрайта запускається, але з "видимістю: приховано" не.
pepkin88

Якщо ваші радіо / прапорці не працюють visibility:hidden, знадобиться opacity: 0замість цього використовувати для виявлення клацання миші.
dayuloli

7
@ChrisNoe: дякую за резюме. Одна річ , яку ви можете додати: я тільки досліджував , як зробити батьківський вузол невидимим , але дочірні вузли все ще видно, результат: немає шансів для видимих дітей: opacity:0 або display:none, але якщо ви використовуєте visibility: hidden ви можете зробити дітей видимим зvisibility: visible
Martin

14

Немає.

Елементи з непрозорістю створюють новий контекст укладання.

Крім того, специфікація CSS цього не визначає, але елементи, з opacity:0якими можна натискати, а елементи з visibility:hidden- ні.


12

Ні, це не є. Є велика різниця. Вони схожі, оскільки ви можете бачити через елемент, якщо видимість прихована або непрозорість дорівнює 0, однак

непрозорість: 0 : ви не можете натискати на елементи, що знаходяться за ним.

видимість: приховано : ви можете натиснути на елементи за ним.


1
"Ні, це не є"? Чи це означає як відповідь на запитання, чи як відповідь на один із існуючих відповідей? Якщо це пізніше, то його слід додати як коментар у відповідь, на яку він звертається.
Кріс Ное

9
Це відповідь на питання: "Чи непрозорість: 0 має такий же ефект, як і видимість: прихована?" .... чи це не очевидно?
Нішант

5

Існує багато відмінностей між visibilityта opacity. Більшість відповідей згадують деякі відмінності, але ось повний перелік.

  1. непрозорість не успадковується, а видимість - це

  2. непрозорість анімаційна, а видимість - ні.
    (Ну, технічно це так, але просто немає поведінки, визначеної для, скажімо, "37% зруйновано і 63% приховано", тому ви можете вважати це не анімаційним.)

  3. Використовуючи непрозорість, ви не можете зробити дочірній елемент більш непрозорим, ніж його батьківський. EG, якщо у вас є ap з кольором: чорний і непрозорість: 0,5, ви не можете зробити жодного з його дітей повністю чорним. Дійсні значення непрозорості становлять від 0 до 1, і для цього прикладу потрібно 2!
    Отже, згідно з коментарем Мартіна , ви можете мати видиму дитину (з видимістю: видиме) у невидимого батька (з видимістю: приховано). Це неможливо з непрозорістю; якщо у батьків є непрозорість: 0; її діти завжди невидимі.

  4. Відповідь Корнеля зазначає, що значення непрозорості менше 1 створюють власний контекст укладання; ніякого значення для видимості не має.
    (Я б хотів, щоб я міг придумати спосіб продемонструвати це, але я не можу придумати жодних засобів, щоб показати контекст складання видимості: прихований елемент.)

  5. Згідно з відповіддю Філнаша , елементи з непрозорістю: 0 все ще читаються екранами, а видимі: приховані елементи - ні.

  6. Відповідно до відповіді Кріса Ноя , у видимості є більше варіантів (наприклад, згортання), а елементи, які не видно, більше не реагують на кліки і не можуть бути вкладені.

(Зробити це вікі спільноти, оскільки запозичення з існуючих відповідей не було б справедливим інакше.)


4

Я не зовсім впевнений у цьому, але думаю, що читачі екранів не читають речі, які налаштовані на видимість, приховану, але вони можуть читати речі незалежно від їх непрозорості.

Це єдина різниця, яку я можу придумати.


Як би це вплинуло на результат тоді? Можливо, з точки зору того, що входить до складу ДОМ? Мої тестові випадки показують, що Mozilla не викидає видимість: приховані елементи.
Кріс Ное

Елементи були б у DOM незалежно від стилю CSS, я маю на увазі, що незрячі користувачі, які використовують програмне забезпечення для зчитування екрана, можуть мати текст у непрозорості: 0 елемент, прочитаний їм, тоді як вони не мали б, якщо цей самий елемент мав видимість: приховано. Справді, це питання про доступність, оскільки результат різний.
philnash

корисна точка, це один з результатів налаштування видимості на приховану, але це лише верхівка айсберга. Більш конкретно, видимість: прихований змушує (здавалося б) зникати з дому, зберігаючи його макет на сторінці.
Нішант

4

Я не впевнений повністю, але ось як я роблю перехресну прозорість браузера:

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

об'єкти з видимістю: приховані все ще мають форму, вони просто не видно. Елементи непрозорості нульових елементів все ще можна клацати та реагувати на інші події.


Що означає мати форму і бути невидимим?
Кріс Ное

@chris, це означає, що вони все ще займають місце на сторінці
Mitchel Sellers

2
непрозорість використовується для того, щоб визначити, як елемент намальовано на задньому плані. Якщо непрозорість встановлена ​​на 0, елемент природно займає простір, але нічого не малюється, оскільки 0% кольору елемента змішується зі 100% фону, що не призводить до появи нічого нового. приховані та подібні друзі означають, що елемент пропускається, коли відбувається малювання.
мП.

2

Створюючи користувальницький стиль, який впливає на елементи в a contenteditable, я помітив, що якщо ви щось встановите visibility: hidden, то вхідна каретка не дуже хоче з нею взаємодіяти. Наприклад, якщо у вас є

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

... тоді здається, що якщо ви фокусуєте цей div / span, ви фактично не можете його вводити. Тоді як з opacity: 0цим, здається, можна. Я цього не перевіряв широко, але вважав, що це варто згадати тут, оскільки ніхто на цій сторінці не говорив про вплив на введення тексту. Це, мабуть, пов’язано із згаданими вище подіями .



0

Властивості мають різні смислові значення. Хоча семантичний CSS звучить так, що це може бути нерозумно, але інші користувачі згадували, це впливає на пристрої, такі як зчитувачі екрану - де семантика впливає на доступність сторінки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.