Если да, то действительно ли он осуждает свойство visibility?
(Я понимаю, что Internet Explorer еще не поддерживает это свойство CSS2.)
Сравнения компоновки двигателей
См. Также: В чем разница между visibility: hidden и display: none
Было бы интересно увидеть, как прозрачный элемент управления может получить фокус.
Я пробовал это, (FF3). Элемент ввода с непрозрачностью: 0 получает фокус в соответствии с порядком табуляции, хотя визуальной индикации нет. Курсор просто исчезает. Все, что вы вводите, вводится в значение элемента ввода. При повторном нажатии вкладки происходит переход к следующему полю. Интересно.






Я не совсем уверен в этом, но я думаю, что программы чтения с экрана не читают вещи, для которых задана скрытая видимость, но они могут читать вещи независимо от их прозрачности.
Это единственная разница, о которой я могу думать.
Как тогда это повлияет на результат? Может быть, с точки зрения того, что входит в DOM? Мои тестовые примеры показывают, что Mozilla не отказывается от видимости: скрытых элементов.
Элементы будут находиться в DOM независимо от стиля CSS, я имею в виду, что слепые пользователи, использующие программу чтения с экрана, могут читать текст в элементе opacity: 0, тогда как они бы этого не сделали, если бы тот же элемент имел visibility: hidden. На самом деле это проблема доступности, потому что результат другой.
Полезный момент, это один из результатов установки скрытой видимости, но это лишь верхушка айсберга. В частности, visibility: hidden заставляет его (по-видимому) исчезнуть из dom, сохраняя при этом свой макет на странице.
Я не совсем уверен, но вот как я делаю кроссбраузерную прозрачность:
opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);
объекты с Видимостью: скрытые по-прежнему имеют форму, они просто не видны. Элементы с нулевой непрозрачностью по-прежнему можно щелкать и реагировать на другие события.
Что значит иметь форму и быть невидимым?
@chris, значит они все равно занимают место на странице
непрозрачность используется для определения способа рисования элемента поверх фона. Если для opactiy установлено значение 0, элемент, естественно, занимает пространство, но ничего не отображается, потому что 0% цвета элемента смешивается со 100% фона, в результате чего ничего нового не появляется. скрытые и похожие друзья означают, что элемент пропускается при рисовании.
То, что говорит Фил, правда.
IE поддерживает непрозрачность:
filter:alpha(opacity=0);
Вот подборка проверенной информации из различных ответов.
Каждое из этих свойств CSS уникально. Помимо того, что элемент не отображается, они имеют следующие дополнительные эффекты:
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
Итак, SO намеренно не поддерживает <table>. Итак, я сделал это ascii.
Кроме того, с «opacity: 0» Flash-объекты визуализируются и конструктор спрайта запускается, но с «visibility: hidden» нет.
Если ваше радио / флажки не работают с visibility:hidden, вам нужно будет вместо этого использовать opacity: 0, чтобы он обнаруживал щелчок мыши.
@ChrisNoe: спасибо за резюме. Возможно, вы захотите добавить одну вещь: я только что исследовал, как сделать родительский узел невидимым, но дочерние узлы все еще видимыми, результат: нет шансов для видимых детей:opacity:0 или display:none, но, если вы используете visibility: hiddenвы можете сделать детей видимыми с visibility: visible
Вы эксперт по CSS!
@ChrisNoe Хороший ответ, но я рекомендую также упомянуть, как эти свойства влияют на производительность. Единственная непрозрачность, которая не запускает переформатирование: csstriggers.com/opacity.
Свойства имеют разные значения семантический. Хотя семантический CSS может показаться глупым, как отмечали другие пользователи, он влияет на такие устройства, как программы чтения с экрана, где семантика влияет на доступность страницы.
Нет.
Элементы с непрозрачностью создают новый контекст наложения.
Кроме того, спецификация CSS не определяет этого, но элементы с opacity:0 кликабельны, а элементы с visibility:hidden - нет.
Нет. Существует большая разница. Они похожи, потому что вы можете видеть сквозь элемент, если видимость скрыта или непрозрачность равна 0, однако
непрозрачность: 0: вы не можете щелкнуть на элементах позади него.
видимость: скрыто: вы можете щелкнуть на элементах позади него.
"Нет"? Означает ли это ответ на вопрос или ответ на один из существующих ответов? Если это позднее, то его следует добавить в качестве комментария под ответом, к которому он обращается.
Это ответ на вопрос: «Имеет ли opacity: 0 тот же эффект, что и visibility: hidden?»… Но разве это не было очевидным?
При создании пользовательского стиля, который влияет на элементы в contenteditable, я заметил, что если вы установите что-то на visibility: hidden, то курсор ввода на самом деле не хочет с ним взаимодействовать. Например, если у вас есть
<div contenteditable><span style='visibility: hidden;'></span></div>
... тогда кажется, что если вы сфокусируете этот div / span, вы не сможете его ввести. А с opacity: 0 вроде можно. Я не тестировал это подробно, но решил, что стоит упомянуть об этом здесь, поскольку никто на этой странице не говорил о влиянии на ввод текста. Возможно, это связано с упомянутым выше материалом События.
Между visibility и opacity есть много различий. В большинстве ответов упоминаются некоторые различия, но вот полный список.
непрозрачность не наследуется, а видимость наследуется
прозрачность можно анимировать, а видимость - нет. (Ну, технически это так, но просто не определено поведение, скажем, для «37% свернуто и 63% скрыто», поэтому вы можете рассматривать это как неанимируемое.)
Используя непрозрачность, вы не можете сделать дочерний элемент более непрозрачным, чем его родительский. НАПРИМЕР. если у вас есть p с color: black и opacity: 0.5, вы не можете сделать ни один из его дочерних элементов полностью черным. Допустимые значения непрозрачности - от 0 до 1, в этом примере потребуется 2!
Следовательно, согласно Комментарий Мартина, у вас может быть видимый дочерний элемент (с видимостью: видимый) в невидимом родительском элементе (с видимостью: скрытый). Это невозможно с непрозрачностью; если у родителя непрозрачность: 0; его дети всегда невидимы.
Корнель ответ упоминает, что значения непрозрачности меньше 1 создают свой собственный контекст наложения; не имеет значения для видимости. (Хотел бы я придумать способ продемонстрировать это, но я не могу придумать никаких средств, чтобы показать контекст наложения элемента visibility: hidden.)
Согласно ответ Филнаша, элементы с opacity: 0 по-прежнему читаются программами чтения с экрана, а элементы visible: hidden - нет.
Согласно Ответ Криса Ноэ, у видимости есть больше опций (например, сворачивание), а элементы, которые не видны, больше не реагируют на щелчки и не могут быть открыты вкладками.
(Сделать это вики сообщества, поскольку в противном случае заимствование из существующих ответов было бы нечестным.)
А как насчет taborder? Если visible = false, элемент управления не получает никакого фокуса, но если непрозрачность равна 0, возможно, клавиша табуляции все еще выполняет итерацию между элементами управления?