скользящий div при наведении курсора

0

У меня есть для divs, заключенных в основной div. Родительский div имеет ширину 100%, другие коробки имеют равную ширину, таким образом, 25%. при наведении указатель на div должен быть шире, другие 3 divs одинаково изменяются до меньшего размера.

Он довольно работает, только когда я наводил курсор на определенные точки на краях родительского div, последний div проскальзывает вниз. (правые верхние углы или другие точки)

Я не могу найти выход: (был бы очень рад, если бы получил какую-то помощь от вас.

здесь приведен рабочий пример рабочего примера jsfiddle

<div class="outer_box">
    <div class="inner_box a">
        <div class="overflow"></div>
        <div class="content"></div>
    </div>
    <div class="inner_box b">
        <div class="overflow"></div>
        <div class="content"></div>
    </div>
        <div class="inner_box c">
        <div class="overflow"></div>
        <div class="content"></div>
    </div>
    <div class="inner_box d">
        <div class="overflow"></div>
        <div class="content"></div>
    </div>
</div>

.outer_box{
    width:100%;
    height:200px;
    outline:1px solid red;
    overflow:hidden;
}
.inner_box {
    float: left;
    height: 200px;
    width: 25%;
    transition: all 500ms ease;
    position:relative;
    background:black;
     -webkit-background-clip: padding-box; 
  -moz-background-clip:    padding; 
  background-clip:         padding-box;
    outline:1px solid white;
}
.first {clear: left;}
.a{background:yellow;}
.b{background:red;}
.c{background:blue;}
.d{background:green;}

.inner_box.hover {  width: 30%;   }
.inner_box.sliding {  width: 23.3%; }

$(document).ready(function(){
    $('.inner_box').hover(function(){
        //alert('yes');
        $(this).addClass('hover');
        $('.inner_box:not(.hover)').addClass('sliding');

    }, function() {
        $(this).removeClass('hover');
        $('.inner_box').removeClass('sliding');
    });
});
  • 0
    Кажется, работает нормально для меня?
  • 0
    @adeneo хм - да, трудно поймать ошибку - скольжение вниз, но это происходит в определенных точках, и не может понять, когда именно
Теги:

2 ответа

1
Лучший ответ

Способ Flex:

http://jsfiddle.net/coma/xWc45/3/

div.foo {
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
}

div.foo > div {
    flex: 1;
    height: 200px;
    background-color: #000;
    transition: flex 350ms;
}

div.foo > div:hover {
    flex: 10;
}

div.foo > div:nth-child(1) {
    background-color: #f00;
}

div.foo > div:nth-child(2) {
    background-color: #0f0;
}

div.foo > div:nth-child(3) {
    background-color: #00f;
}

Другой путь:

http://jsfiddle.net/coma/xWc45/1/

div.foo:after {
    content: "";
    display: block;
    clear: both;
}

div.foo > div {
    float: left;
    width: 25%;
    height: 200px;
    background-color: #000;
    transition: width 350ms;
}

div.foo:hover > div {
    width: 5%;
}

div.foo:hover > div:hover,
div.foo:hover > div:last-child
{
    width: 85%;
}

div.foo:hover > div:hover ~ div
{
    width: 5%;
}
  • 0
    @comma - работает очень хорошо, но попробуйте навести курсор на правый угол - все дивы растягиваются до 5%
  • 0
    ты прав, исправляя это ...
Показать ещё 1 комментарий
1

Легче использовать css, чем jquery... вы можете использовать "зависание" для эффекта... вот пример.

для каждого div укажите ширину, размер которой вы хотите изменить.

.the name of first inner div:hover {
width:20px;
transition:1000ms;
}

я использовал ': hover' после имени div.. и вы можете указать ширину, которую вы хотите, чтобы div был изменен при зависании.. и 'переход: 1000 мс;' используется для эффекта перехода медленного движения. Вы можете изменить значение до 500, если хотите... надеюсь, что это помогло...

как мудрый, используйте этот вариант для каждого div... и вам хорошо идти :)

  • 0
    спасибо ... в основном я сделал (то же самое предложил кому - все еще проблема - правильная часть, сделал изменение самостоятельно - кажется, есть маленький разрыв, все еще заставляющий не заставить это работать должным образом. Я признаю, с css действительно много проще
  • 0
    Если вы хотите создать эффект скольжения для обеих сторон, чем использовать jquery ... но проще использовать css для архивирования того, что я показал ... ура :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню