Чи має непрозорість: 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.