Подтвердить что ты не робот

Первоначально скрытие div для последующего отображения

Моя веб-страница выглядит следующим образом:

<div id="id1" class="stuff">
TEXT, FORMS, and STUFF
</div>

<div id="id2" class="stuff" style="display:none">
TEXT, FORMS, and STUFF
</div>

<div id="id3" class="stuff" style="display:none">
TEXT, FORMS, and STUFF
</div>

<a id="btn1">DD</a>
<a id="btn2">DD</a>
<a id="btn3">DD</a>

В этом случае у меня есть события jQuery click, которые устанавливают отображение наследуемого элемента для наследования, а остальные - none.

$("#btn2").click(function (e) {
    $("#id1").css('display','none');
    $("#id3").css('display','none');
    $("#id2").css('display','inherit');
});

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

ИЗМЕНИТЬ::::::::::::::::

То, что я закончил, это установить все изначально скрытые divs на "visibility: none", а затем на странице onLoad() событие установки отображения: none. Когда я переключаю, меняю видимость и отображение. Все отображается правильно, и, поскольку все вещи статически установлены на невидимые, нет уродливых 2 секунд, где отображаются все div.

4b9b3361

Ответ 1

Попробуйте вместо этого использовать visibility. Пример:

$("#id2").click(function (e) {
    $("#id1").css('visibility','hidden');
    $("#id3").css('visibility','hidden');
    $("#id2").css('visibility','visible');
});

Оба display и visibility могут влиять на поведение браузера.

Альтернативный подход к обоим - установить opacity для разделов, которые вы хотите скрыть до 0. Это всегда работает в моем опыте, но менее элегантно.


Обновить в ответ на комментарий: В этом случае вы можете установить другие свойства, такие как width и height на 0px и over-flow на hidden, чтобы divs не занимают места на экране. Уродливый, но базовый и работает.

<style>
.hidden {
    visibility: hidden;
    over-flow: hidden;
    width: 0px;
    height: 0px;
}
</style>

<div class="hidden"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Aster_Tataricus.JPG/245px-Aster_Tataricus.JPG"/></div>
<div class="hidden"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Chamomile%40original_size.jpg/280px-Chamomile%40original_size.jpg"/></div>
<div><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Jonquil_flowers06.jpg/320px-Jonquil_flowers06.jpg"/></div>

Вы можете использовать методы jQuery addClass и removeClass, чтобы сделать div видимыми и невидимыми, например: $("#id1").removeClass("hidden"); и $("#id3").addClass("hidden");.

Ответ 2

Почему бы не использовать jQuery show и hide?

Скрыть элементы, которые вы хотите скрыть (duh) при загрузке страницы с помощью CSS:

#id1, #id2, .. {
    display: none;
} 

Или вы можете скрыть его с помощью Javacript:

$('#id1, #id2, ..').hide();

Показать или скрыть их, используя:

$('#btn2').click(function() {
    $('#id1, #id3').hide();
    $('#id2').show();
});

Ответ 3

Лучше всего не добавлять логику отображения в вашу метку, лучший способ сделать это будет

.hidden{ display:none;}

.

<div id="id1" class="stuff">
TEXT, FORMS, and STUFF
</div>

<div id="id2" class="stuff hidden" >
TEXT, FORMS, and STUFF
</div>

<div id="id3" class="stuff hidden">
TEXT, FORMS, and STUFF
</div>

.

$(".stuff").click(function () {
    $(".stuff").addClass('hidden');
    $(this).removeClass('hidden');

});

Надеюсь, что это поможет, если у вас все еще возникают проблемы с воспроизведением, а затем попробуйте maby

.hidden{ visibility:hidden; }
.stuff{display:block;}

Ответ 4

Мне нравится делать это вот так:
JavaScript:

$('#btn2').click(function(){
    $('#id1').addClass('hidden');
    $('#id3').addClass('hidden');
    $('#id2').removeClass('hidden');
});

CSS

.hidden {
    display: none;
}

HTML:

<div id="id1" class="stuff">
TEXT, FORMS, and STUFF
</div>

<div id="id2" class="stuff hidden">
TEXT, FORMS, and STUFF
</div>

<div id="id3" class="stuff hidden">
TEXT, FORMS, and STUFF
</div>

<a id="btn1">DD</a>
<a id="btn2">DD</a>
<a id="btn3">DD</a>

Ответ 5

Может быть .toggle может помочь вам достичь этого?

$("#btn2").click(function (e) { 
    $("#id1").toggle(); 
    $("#id2").toggle();
    $("#id3").toggle();
});

Ответ 6

window.onload = pre_loader;

function pre_loader() {

    javascript:document.getElementById('loader').style.visibility='hidden';

    javascript:document.getElementById('loader').style.opacity=0;

}