Имеет ли opacity: 0 тот же эффект, что и visibility: hidden

Если да, то действительно ли он осуждает свойство visibility?

(Я понимаю, что Internet Explorer еще не поддерживает это свойство CSS2.)
Сравнения компоновки двигателей

См. Также: В чем разница между visibility: hidden и display: none

А как насчет taborder? Если visible = false, элемент управления не получает никакого фокуса, но если непрозрачность равна 0, возможно, клавиша табуляции все еще выполняет итерацию между элементами управления?

Stefan 07.11.2008 18:28

Было бы интересно увидеть, как прозрачный элемент управления может получить фокус.

Chris Noe 07.11.2008 18:42

Я пробовал это, (FF3). Элемент ввода с непрозрачностью: 0 получает фокус в соответствии с порядком табуляции, хотя визуальной индикации нет. Курсор просто исчезает. Все, что вы вводите, вводится в значение элемента ввода. При повторном нажатии вкладки происходит переход к следующему полю. Интересно.

Chris Noe 07.11.2008 22:10
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
125
3
63 050
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Я не совсем уверен в этом, но я думаю, что программы чтения с экрана не читают вещи, для которых задана скрытая видимость, но они могут читать вещи независимо от их прозрачности.

Это единственная разница, о которой я могу думать.

Как тогда это повлияет на результат? Может быть, с точки зрения того, что входит в DOM? Мои тестовые примеры показывают, что Mozilla не отказывается от видимости: скрытых элементов.

Chris Noe 07.11.2008 18:18

Элементы будут находиться в DOM независимо от стиля CSS, я имею в виду, что слепые пользователи, использующие программу чтения с экрана, могут читать текст в элементе opacity: 0, тогда как они бы этого не сделали, если бы тот же элемент имел visibility: hidden. На самом деле это проблема доступности, потому что результат другой.

philnash 07.11.2008 18:23

Полезный момент, это один из результатов установки скрытой видимости, но это лишь верхушка айсберга. В частности, visibility: hidden заставляет его (по-видимому) исчезнуть из dom, сохраняя при этом свой макет на странице.

Nishant 19.01.2016 13:01

Я не совсем уверен, но вот как я делаю кроссбраузерную прозрачность:

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

объекты с Видимостью: скрытые по-прежнему имеют форму, они просто не видны. Элементы с нулевой непрозрачностью по-прежнему можно щелкать и реагировать на другие события.

Что значит иметь форму и быть невидимым?

Chris Noe 07.11.2008 18:21

@chris, значит они все равно занимают место на странице

Mitchel Sellers 07.11.2008 18:22

непрозрачность используется для определения способа рисования элемента поверх фона. Если для opactiy установлено значение 0, элемент, естественно, занимает пространство, но ничего не отображается, потому что 0% цвета элемента смешивается со 100% фона, в результате чего ничего нового не появляется. скрытые и похожие друзья означают, что элемент пропускается при рисовании.

mP. 11.10.2010 03:57

То, что говорит Фил, правда.

IE поддерживает непрозрачность:

filter:alpha(opacity=0);
Ответ принят как подходящий

Вот подборка проверенной информации из различных ответов.

Каждое из этих свойств CSS уникально. Помимо того, что элемент не отображается, они имеют следующие дополнительные эффекты:

  1. Сворачивается пространство, которое элемент обычно занимает
  2. Отвечает на События (например, щелчок, нажатие клавиши)
  3. Участвует в табулатура
                     collapse events taborder
opacity: 0              No     Yes     Yes
visibility: hidden      No     No      No
visibility: collapse   Yes*    No      No
display: none          Yes     No      No

* Yes inside a table element, otherwise No.

Я пытался следовать документации Markdown здесь: daringfireball.net/projects/markdown/syntax

Chris Noe 07.11.2008 22:03

Итак, SO намеренно не поддерживает <table>. Итак, я сделал это ascii.

Chris Noe 07.11.2008 22:26

Кроме того, с «opacity: 0» Flash-объекты визуализируются и конструктор спрайта запускается, но с «visibility: hidden» нет.

pepkin88 31.12.2010 01:40

Если ваше радио / флажки не работают с visibility:hidden, вам нужно будет вместо этого использовать opacity: 0, чтобы он обнаруживал щелчок мыши.

dayuloli 24.03.2015 10:11

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

Martin 29.01.2016 14:12

Вы эксперт по CSS!

new2cpp 17.11.2016 03:16

@ChrisNoe Хороший ответ, но я рекомендую также упомянуть, как эти свойства влияют на производительность. Единственная непрозрачность, которая не запускает переформатирование: csstriggers.com/opacity.

Fabian von Ellerts 15.10.2019 15:53

Свойства имеют разные значения семантический. Хотя семантический CSS может показаться глупым, как отмечали другие пользователи, он влияет на такие устройства, как программы чтения с экрана, где семантика влияет на доступность страницы.

Нет.

Элементы с непрозрачностью создают новый контекст наложения.

Кроме того, спецификация CSS не определяет этого, но элементы с opacity:0 кликабельны, а элементы с visibility:hidden - нет.

Нет. Существует большая разница. Они похожи, потому что вы можете видеть сквозь элемент, если видимость скрыта или непрозрачность равна 0, однако

непрозрачность: 0: вы не можете щелкнуть на элементах позади него.

видимость: скрыто: вы можете щелкнуть на элементах позади него.

"Нет"? Означает ли это ответ на вопрос или ответ на один из существующих ответов? Если это позднее, то его следует добавить в качестве комментария под ответом, к которому он обращается.

Chris Noe 30.12.2015 20:59

Это ответ на вопрос: «Имеет ли opacity: 0 тот же эффект, что и visibility: hidden?»… Но разве это не было очевидным?

Nishant 30.12.2015 22:22

При создании пользовательского стиля, который влияет на элементы в contenteditable, я заметил, что если вы установите что-то на visibility: hidden, то курсор ввода на самом деле не хочет с ним взаимодействовать. Например, если у вас есть

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

... тогда кажется, что если вы сфокусируете этот div / span, вы не сможете его ввести. А с opacity: 0 вроде можно. Я не тестировал это подробно, но решил, что стоит упомянуть об этом здесь, поскольку никто на этой странице не говорил о влиянии на ввод текста. Возможно, это связано с упомянутым выше материалом События.

Между visibility и opacity есть много различий. В большинстве ответов упоминаются некоторые различия, но вот полный список.

  1. непрозрачность не наследуется, а видимость наследуется

  2. прозрачность можно анимировать, а видимость - нет. (Ну, технически это так, но просто не определено поведение, скажем, для «37% свернуто и 63% скрыто», поэтому вы можете рассматривать это как неанимируемое.)

  3. Используя непрозрачность, вы не можете сделать дочерний элемент более непрозрачным, чем его родительский. НАПРИМЕР. если у вас есть p с color: black и opacity: 0.5, вы не можете сделать ни один из его дочерних элементов полностью черным. Допустимые значения непрозрачности - от 0 до 1, в этом примере потребуется 2!
    Следовательно, согласно Комментарий Мартина, у вас может быть видимый дочерний элемент (с видимостью: видимый) в невидимом родительском элементе (с видимостью: скрытый). Это невозможно с непрозрачностью; если у родителя непрозрачность: 0; его дети всегда невидимы.

  4. Корнель ответ упоминает, что значения непрозрачности меньше 1 создают свой собственный контекст наложения; не имеет значения для видимости. (Хотел бы я придумать способ продемонстрировать это, но я не могу придумать никаких средств, чтобы показать контекст наложения элемента visibility: hidden.)

  5. Согласно ответ Филнаша, элементы с opacity: 0 по-прежнему читаются программами чтения с экрана, а элементы visible: hidden - нет.

  6. Согласно Ответ Криса Ноэ, у видимости есть больше опций (например, сворачивание), а элементы, которые не видны, больше не реагируют на щелчки и не могут быть открыты вкладками.

(Сделать это вики сообщества, поскольку в противном случае заимствование из существующих ответов было бы нечестным.)

Другие вопросы по теме