Скрыть что-то с помощью CSS без отображения: нет или JavaScript - PullRequest
13 голосов
/ 12 декабря 2008

Как я могу скрыть div, не используя display:none или JavaScript?

В моей стране многие Blackberry приходят с отключенной поддержкой CSS (мобильные компании здесь не так хороши для разработчиков). У меня есть текст, который говорит

<div class="BBwarn">
please activate your css support and a link
</div>

Я хочу скрыть, что как только пользователь активирует поддержку CSS, но я не могу использовать display:none;, потому что это поддерживается только в прошивке BB 4.6. Это общедоступный сайт, и я не могу сделать так, чтобы все мои посетители обновились.

Кто-нибудь знает решение этой проблемы? Надеюсь, теперь вопрос легче понять.

Обновление: Спасибо всем за ответы, но я не могу использовать

  • позиция: абсолютная
  • перелив

потому что они доступны из прошивки Blackberry 4.6 и выше

Ответы [ 18 ]

12 голосов
/ 12 декабря 2008

Это обычный способ:

margin-left: -9999;

8 голосов
/ 12 декабря 2008

вещей попробовать:

  • используйте z-index, чтобы поместить его позади какого-то другого элемента
  • уберите его с экрана путем абсолютного позиционирования
  • Видимость: скрыто
  • сделать содержимое "невидимым", установив цвет фона на передний план (работает только для текста)
  • непрозрачность: 0

но реальный вопрос: почему?

6 голосов
/ 15 декабря 2008

Как насчет:

  visibility: hidden;

Это должно скрывать DIV, (обратите внимание, что он все равно будет отображаться, но быть невидимым, это означает, что он займет место в документе, как если бы он был видимым, но будет невидимым (в отличие от отображения: нет; где div не будет) быть оказанным)).

5 голосов
/ 20 декабря 2008

Что заставляет вас думать, что display: none не поддерживается до версии 4.6? Вы проверяли это, или вы используете их документацию?

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

Справочник по CSS BlackBerry Browser 4.6 действительно упоминает «Доступность: BlackBerry® Device Software версии 4.6 или выше» для свойства display, но их Руководство разработчика контента BlackBerry Browser 4.3 указывает, что 4.3 уже поддерживает очень ограниченную версию свойства display, включая display: none. Версии до 4.3 не поддерживают свойство display (опять же, согласно документации разработчика BlackBerry Browser ).

Можете ли вы предположить, что у ваших пользователей есть хотя бы версия прошивки 4.3, или это так же неприемлемо, как если бы они имели версию 4.6?

Вы пытались просто установить ширину и высоту на ноль? Я не знаком с BlackBerry (браузером), но я скептически предполагаю, что его поддержка CSS не совсем идеальна, конечно, в старых версиях. Я не удивлюсь, если это сработает:

.BBwarn {
    display: none; /* for 4.6 and up */
    width: 0px;    /* for 4.3 */
    height: 0px;
}

Но тогда width и height поддерживаются только для всех элементов, начиная с версии 4.3. До этого их можно было применять только к тегам <button> и <img> и некоторым типам <input> (согласно документации).

Так что, возможно, самый безопасный способ заставить его работать на всех версиях прошивки BlackBerry - это использовать изображение для предупреждения и использовать CSS, чтобы установить его ширину и высоту на ноль.

Если изображение не является опцией (возможно, из-за проблем с локализацией или около того), уродливым хаком может быть указание пустого / недопустимого источника изображения и помещение текста предупреждения в атрибут alt. Я не знаю, будет ли установка его ширины и высоты на ноль все еще скрывать этот альтернативный текст.

4 голосов
/ 13 декабря 2008

Почему бы не попробовать простое:

position: absolute;
left: -1000px;

Не понимаю, почему это не сработает.

4 голосов
/ 12 декабря 2008
<div style="height:0;width:0;overflow:hidden;">
<!-- content here -->
</div>

Кстати, это то, что я делаю для предварительной загрузки изображений, и это хорошо, потому что он не использует javascript.

Видимость: скрытый не будет делать то же самое, потому что некоторые браузеры умны и не будут делать запрос, если он считает, что он действительно видим

4 голосов
/ 16 декабря 2008

Я не уверен в процентах, о которых вы говорите, которые используют <4.6, но если это так важно для вас, тогда я вижу обоснование того, что вы не можете угодить всем людям все время и приемлемое каскадное решение этого должно быть достижимо. Вероятно, со ссылкой, чтобы объяснить преимущества обновления и включения CSS. </p>

height: 0; 
overflow: hidden;
visibility: hidden; 
color: #fff; 
background: #fff; 

Кстати, вам лучше убедиться, что css хорош, если вы говорите кому-нибудь включить его ...: -)

2 голосов
/ 15 декабря 2008

Полагаю, вы не хотите использовать JavaScript, потому что Blackberrys его не поддерживают.

А что если вы сделали обратное и отобразили блок кода с JavaScript, а не пытались его скрыть?

<script type="text/javascript"><!--
document.open();
document.writeln('<div class="BBwarn">');
document.writeln('please activate your css support and a link');
document.writeln('</div>');
document.close();
//--></script>

Это что-то вроде хака, но не отображать текст с отключенным JavaScript ...

2 голосов
/ 12 декабря 2008

Вы можете расположить его абсолютно за пределами экрана.

Но я также не разработчик мобильных приложений.

1 голос
/ 12 декабря 2008

visibility: hidden; будет работать, но пространство, занимаемое этим конкретным div, все равно появится. Если вы собираетесь использовать отрицательный метод left-margin, помните, что вам нужно установить для position объекта absolute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...