2017-02-22 11 views
0

THIS IS WHAT I AM TRYING TO MAKE IN THE FIDDLE BELOWСкрыть/показать элемент onlick

Edit: мне удалось скрыть это правильно щелчком. Но он прячется мгновенно. Есть ли способ сделать это слайдом со дна экрана?

THIS IS THE almost good FIDDLE

старый вопрос ниже:

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

Here is the fiddle (Нажмите на серую область с «X» на нем)

<div id="full-width-slider" class="royalSlider heroSlider rsMinW rsDefault"> 
    <div class="rsContent"> 
    <img class="rsImg" src="https://www.w3schools.com/w3images/fjords.jpg" alt=""> 
    <div class="infoBlock infoBlockLeftBlack rsABlock" data-fade-effect="" data-move-offset="100" data-move-effect="top" data-speed="200"> 
     <a href="#" class="infox">X</a> 
     <div class="minus7"> 
     <h4>Nice picture</h4> 
     <p>This is the info about it. It´s nice, short and easy to read.</p> 
     </div> 
    </div> 
    </div> 


$(document).on("click", ".infox", function() { 
    $(".minus7").slideToggle(); 
}); 
+0

Что именно проблема/не работает? –

+0

Ну, я пытаюсь скрыть/показать класс «минус7», переместив его на экран и переместив его обратно на экран, но я хочу сохранить класс «infox» неповрежденным и расположенным там же. Как вы можете видеть на скрипке, он почти работает, но есть остаточный фон, а кнопка переключения серого X меньше при свертывании ... – user7176800

+1

Почему бы не использовать [sideToggle] (http://api.jquery.com/slidetoggle/), тогда вам просто нужно позвонить, не проверяя состояние. – GillesC

ответ

0

Форсаж ширину на контейнере решает проблему коллапса, но я не уверен, что полностью ведет себя так, как вы хотите как.

.infoBlock { 
    ... 
    width: 220px; 
} 

Demo

Перемещения пробельного из контейнера к внутреннему элементу помогает, но он все еще нуждается в доработке.

.minus7 { 
    ... 
    margin-top: 50px; 
    margin-bottom: 100px; 
} 

Demo 2

Я считаю, что причина она движется во время slideToggle происходит потому, что значение left берется из центра высоты элемента. По мере того как он становится короче, эта позиция движется. Установка начала преобразования в левое нижнее положение разрешает это.

.infoBlock { 
    ... 
    transform: rotate(10deg) !important; 
} 

Demo 3

Теперь мы можем применить выравнивание текста к кнопке и несколько мин-высоту и мы ближе:

.infoBlock { 
    ... 
    min-height: 14px; 
} 

.infoBlock a { 
    ... 
    text-align: center; 
    padding-top: 4px; 
    display: inline-block; 
    min-height: 90px; 
} 

Demo 4

Мы могли бы затем переключить класс для контроля фоновой видимости o п внешний элемент:

$('.infoBlock').toggleClass('in out'); 

.infoBlock { 
    ... 
    transition: background .75s; 
} 
.infoBlock.out { 
    background: transparent; 
} 

Demo 5

Маленький слайд подергивание может быть решен путем удаления маржи от элемента параграфа и применяя его к товарной позиции вместо этого.

Demo 6

+0

Спасибо за ответ, я сделал рабочий пример здесь: [https://jsfiddle.net/67L4yg3y/], но я не могу чтобы он работал. Он не работал на моей странице html, я не могу заставить его работать даже в этой скрипке: [https://jsfiddle.net/a0ure6st/39/] – user7176800

+0

Демо 5 выглядит довольно хорошо для меня. Я дам ему попробовать, спасибо! :) – user7176800

+0

Не знаю, почему, но в моем реальном коде черный ящик под текстом сразу исчезает, но когда я нажимаю снова, он медленно показывает, как это должно быть ... Somethind отменяет эффект медленного затухания, не уверен, что и кто почему ... – user7176800