2013-12-04 3 views
2

Так просто. У меня есть страница с белым фоном. Когда я нажимаю кнопку, на дисплее div отображается содержимое и фон за тусклыми div. У меня есть тусклый переход на 2 секунды для кино, как эффект.
Работает отлично, когда информация в div не превышает установленную высоту браузера. Однако, если поле div увеличивает высоту браузера, любая часть новой высоты, отображаемая в данный момент пользователю, в то время как переход продолжается, не тускнеет (IE остается белым). Если часть новой высоты находится под окном браузера во время эффекта, и если вы прокрутите вниз, она остановит эту часть перехода окон. В противном случае, если новая часть высоты не будет видна во время перехода, она полностью омрачается.
Похоже, он не может нарисовать изменение фона во время его просмотра, что кажется глупым. Вот мой код:CSS Переход Не обновляющий цвет фона при увеличенной высоте

CSS # тело обратно идентификатор для тела тега

#body-back { 
    -webkit-transition: background 2s ease-in-out; 
    -moz-transition: background 2s ease-in-out; 
    -ms-transition: background 2s ease-in-out; 
    -o-transition: background 2s ease-in-out; 
    transition: background 2s ease-in-out; 
} 

JS

<script> 
pop = function() { 
    var back = document.getElementById('body-back'); 
    back.style.background = "rgba(0,0,0,0.8)"; 
} 
popaway = function() { 
    var back = document.getElementById('body-back'); 
    back.style.background = "rgba(0,0,0,0)"; 
} 

#Show the div box    
$("#button").click(function(e) { 
    e.stopPropagation(); 
    $("#divbox").toggle(); 
    pop(); 
}); 

$("#divbox").on('click',function(e) { 
    e.stopPropagation(); 
}); 

#Hide the div box if user clicks outside of div box 
$(document).on('click', function(e) { 
    if(e.target.id != 'divbox'){ 
    $("#divbox").hide(); 
    popaway(); 
    } 
}); 
</script> 

Также за нотой, когда у меня нет фон на переходном этапе и просто базовый переключатель, он отлично отображает даже любое новое пространство высот браузера. Любые идеи относительно того, почему он не хочет рисовать на открытом пространстве? Спасибо, парни!

Редактировать Я запускаю его в Chrome, но просто попробовал в Safari. Для Safari, даже если новая высота выключена, она по-прежнему не рисует обновленный фон.

Edit 2 - Див Box CSS

.popup { 
    position:absolute; 
    left:0px; 
    margin-left:100px; 
    margin-right:100px; 
    width:85%; 
    font-family:verdana; 
    font-size:13px; 
    padding:10px; 
    background-color:white; 
    border:2px solid grey; 
    z-index:100000000000000000; 
    display:none; 
} 
+0

Думаю, вам придется опубликовать css для #divbox и # body-back, если вы можете сделать http: // jsfiddle.net /, люди смогут более легко решить эту проблему для вас. – roo2

+0

Где вы полагаетесь на край поля # divbox для расширения родительского элемента? если это так, это не сработает http://jsfiddle.net/2dxnp/8/ – roo2

+0

попробуйте положить переполнение: auto на # body-back! – roo2

ответ

1

позицию: абсолютная не будет влиять на высоту родительского элемента. Фиксированная позиция сделает ее сверху сверху, игнорируя прокрутку страницы целиком.

звучит как это работает для вас

.popup { 
    top: 50px; 
    position:fixed; /* sit on top of everything, ignore scrolling on the body*/ 
    overflow:scroll; 
    width:70%; 
} 

по умолчанию тело должно занимать 100% высоты, не уверен, почему это не происходит для вас раньше.

Рад, что это сработало и что я могу помочь в конце!

1

EDIT: это не решает проблему здесь, (но положить стили в CSS это Generaly хорошая вещь :)

Попробуйте анимировать background- цвет

Этот вопрос explains animating background opacity. Обычно проще ставить все стили в CSS, а не на JavaScript. See this question

.pop{ 
    background-color: rgba(0, 0, 0, 0.8) 
} 

#body-back { 
    //polyfills.. 
    transition: background-color 2s ease-in-out; 

    background-color: rgba(0, 0, 0, 1.0); 
} 

Javascript

pop = function() { 
    $('#body-back').addClass('pop'); 
} 
popaway = function() { 
    $('#body-back').removeClass('pop'); 
} 
+0

Вы сказали, что хотите использовать фоновый цвет, но при переходе: вы указываете на непрозрачность. Когда я делаю непрозрачность, переход отсутствует, даже если я изменяю значение в .pop на непрозрачность. В противном случае, если я изменю переход: opactity to transition: background-color Я получаю переход, но та же проблема, что и раньше. –

+0

oops, мой плохой, это должен быть цвет фона, а не прозрачность там! – roo2

+0

Gotcha, ну, я до сих пор не получаю рендеринг проблемы фона даже с фоновым цветом вместо фона, как у меня. Также я понял, что делаю непрозрачность неправильно, и теперь это работает, но мне действительно нужен цвет фона, потому что мне нравится темный эффект. Вы понимаете, что я имею в виду, о новой высоте, а не о том, чтобы правильно рисовать проблему? –

Смежные вопросы