2013-12-13 6 views
0

Я создал своего рода слайдер, который создает более крупный объект, когда вы его наводите.jQuery анимированная ширина элемента переполнения

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

См fiddle

Jquery так просто, как:

jQuery('.item', '.row').hover(function(){ 
    curItem = jQuery(this); 
    jQuery('.item', '.row').stop().not(curItem).animate({ 
     width: '20%' 
    },200); 
    curItem.stop().animate({ 
     width: '40%' 
    },200); 
}); 

Со следующим соответствующим CSS:

.row { 
    width: 100%; 
    height: 100px; 
    overflow: hidden; 
} 

.item { 
    width: 25%; 
    height: 100px; 
    float: left; 
} 

Edit: Используя принятый ответ, я наткнулась на дополнительная проблема. Div в фактическом коде заканчивается пробелом после каждого div. Я нашел решение этой проблемы here. (Размер шрифта: 0; х)

ответ

3

Проверить http://jsfiddle.net/j4aN6/2/. Вы можете заставить его работать с некоторыми хаками css, но я рекомендую использовать переходы flexbox или css.

.row { 
    width: 100%; 
    height: 100px; 
    overflow: hidden; 
    white-space:nowrap; 
    font-size:0; 
} 

.item { 
    width: 25%; 
    height: 100px; 
    display:inline-block; 
} 
+0

Совместимость с кросс-браузером в этом случае. Я предположил, что отображение: встроенный блок не работает в IE8. Оказывается, это делает, что делает это хорошим решением. Спасибо. –

+0

Рад, что я мог бы помочь, ура! –

0

Попробуйте один

jQuery('.item', '.row').hover(function(){ 
    curItem = jQuery(this); 
    jQuery('.item', '.row').stop().not(curItem).animate({ 
     width: '19.90%' 
    },200); 
    curItem.animate({ 
     width: '40%' 
    },200); 
}); 
+0

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

+0

yeah thats right .. Изменить ширину _CurItem.animate_ ?? сделать это ** 39% **? Я вижу меньше мерцание таким образом. –

+0

Как я уже сказал, основная проблема с этим методом заключается в том, что он оставляет в конце не такой красивый промежуток, где обычно это будет хороший полный графический файл. 1% от 1000px является видимым 10px-зазором, и поскольку среднее разрешение экрана выше, это означает, что все будут видеть еще больший разрыв. –

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