Webkit Border Radius Animation Clipping

Я анимирую открытый лайтбокс (ничего особенного или сумасшедшего), и у меня проблемы с радиусом границы в Chrome, Opera и Safari. Все другие браузеры (включая мобильные, которые я тестировал) работают нормально. По сути, после нажатия DIV лайтбокс анимируется от одного радиуса границы к другому при открытии. Содержимое внутри DIV выливается во время анимации (отсечение). В других браузерах с этим проблем нет, и, судя по проведенному мной исследованию, Webkit не учитывает overflow:hidden.

Вот код JS для открытия лайтбокса (событие внутреннего клика):

$('#SC_Lightbox').css({
borderTopLeftRadius:'100px',
borderTopRightRadius:'100px',
borderBottomLeftRadius:'100px',
borderBottomRightRadius:'100px',
WebkitBorderTopLeftRadius:'100px',
WebkitBorderTopRightRadius:'100px',
WebkitBorderBottomLeftRadius:'100px',
WebkitBorderBottomRightRadius:'100px',
MozBorderRadius:'10px',
borderRadius:'10px'})
.animate({
'opacity':1,'width':'300px','height':'500px','top':'120px','left':'200px',
borderTopLeftRadius:'10px',
borderTopRightRadius:'10px',
borderBottomLeftRadius:'10px',
borderBottomRightRadius:'10px',
WebkitBorderTopLeftRadius:'10px',
WebkitBorderTopRightRadius:'10px',
WebkitBorderBottomLeftRadius:'10px',
WebkitBorderBottomRightRadius:'10px',
MozBorderRadius:'10px',
borderRadius:'10px'
},{duration:500,queue:false});

Вот CSS лайтбокса (все, что применяется после загрузки):

#SC_Lightbox {
    background-color: #333333;
    border-radius: 12px 12px 12px 12px;
    display: block;
    height: 350px;
    left: 500px;
    opacity: 1;
    overflow: hidden;
    top: 20px;
    width: 500px;
    position: absolute;
    z-index: 99999999;
    line-height: 1;}

Другая странная вещь заключается в том, что у проблемных браузеров также есть проблема с анимацией/рендерингом WebkitBorderBottomRightRadius???

Я также попробовал другое предложение форума и добавил:

-webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); 

для принудительного переполнения: скрыто в Webkit, но, к сожалению, есть box-shadow, который удаляется при этом, и это также довольно изменчивое решение.

У кого-нибудь есть идеи? Спасибо!


person Aaron    schedule 27.06.2012    source источник
comment
Я в замешательстве. Разве это не border-radius и -moz-border-radius и -webkit-border-radius и все остальные? Что с верблюжьим делом?   -  person lbstr    schedule 28.06.2012
comment
Я думал, что при написании сценария свойства border-radius это правильный способ сделать это?   -  person Aaron    schedule 28.06.2012
comment
Кроме того, почему вы делаете все определения для конкретных углов? Если все углы одинаковы, вам нужно просто одно определение для каждого префикса поставщика. Я не говорю, что это решит вашу проблему, но точно не повредит. Анимации дорогие; попробуй сделать это проще в браузере.   -  person lbstr    schedule 28.06.2012
comment
Выполните быстрый поиск в Google по запросу border-radius и посмотрите, не встретите ли вы какие-либо подобные определения верблюжьего регистра. Я точно не знал. Еще один совет: вместо вызова jquery css перед анимацией создайте класс css со всем этим и просто выполните $('#SC_Lightbox').addClass('bigRadius').animate({...   -  person lbstr    schedule 28.06.2012
comment
Все радиусы границ являются переменными, я просто упростил их для вопроса. Что касается скриптового определения радиуса границы и CSS перед анимацией, оно было извлечено из этого сообщения: stackoverflow.com/questions/1010058/   -  person Aaron    schedule 28.06.2012
comment
Вот это да! Спасибо, что поделился. Это довольно безумно. Я бы подумал о том, чтобы добавить эту ссылку в ваш вопрос, а также добавить jsfiddle, чтобы люди могли сами с ней возиться.   -  person lbstr    schedule 28.06.2012