Модальний завантажувальний модуль Twitter: Як видалити ефект "Понизу"


167

Чи є спосіб змінити анімацію вікна Twitter Bootstrap Modal з ефектом ковзання на fadeIn або просто відобразити без слайда? Я читав тут документацію:

http://getbootstrap.com/javascript/#modals

Але вони не згадують жодних варіантів зміни ефектів слайдів модального тіла.

Відповіді:


359

Просто вийміть fadeклас із модального діва.

Конкретно змінити:

<div class="modal fade hide">

до:

<div class="modal hide">

ОНОВЛЕННЯ: Для bootstrap3 hideклас не потрібен.


9
Незважаючи на те, що ОП запитала, як змусити її затухати, щоб деякі з цих відповідей були правильними для чергового формування питання. Здогадайтесь, це просто погане запитання, адже це дійсно 2 запитання в одному і ніхто не відповів на обидва запитання в одній відповіді.
umassthrower

1
Вам не доведеться змінювати джерела завантаження. Вам потрібно лише змінити свій html. Це правильна відповідь.
mpccolorado

31
@umassthrower правильний. Відповідають лише на те, як не бути переходу. Питання про те, як зникнути, але не випадати зверху, не відповідає цією відповіддю.
Синесо

26
Я не розумію, як це правильна відповідь ... це робить модальне спливання без згасання, і ОП попросив зняти СЛАЙД, але не FADE ...
Шон Тейлор

2
Я чекаю, щоб зберегти зникнення та видалити слайд, і ця відповідь не корисна. Дивно, що їх завантажувальний клас використовував їх клас fade для обробки ефекту слайдів для модальних, оскільки fade є абсолютно окремим у своєму CSS.
Ліїш

36

Модалі, що використовуються у завантажувальному інструменті, використовують CSS3 для подачі ефектів, і їх можна видалити, вилучивши відповідні класи з контейнера модалів div:

<div class="modal hide fade in" id="myModal">
   ....
</div>

Як ви бачите, у цього модалу є клас .fade, тобто він встановлений, щоб він зникав, і .in, значить, він буде ковзати. Тому просто видаліть клас, пов’язаний з ефектом, який ви хочете видалити, який у вашому випадку є просто .inкласом.

Редагувати: Просто запустив кілька тестів, і, здається, що це не так, .inклас додається javascript, хоча ви можете змінити поведінку on slideDown за допомогою css так:

.modal.fade {
    -webkit-transition: none;
    -moz-transition: none;
    -ms-transition: none;
    -o-transition: none;
    transition: none;
}

Демо


2
Ви також повинні додати його на тлі: modal.fade, .modal-backdrop.fadeтощо ...
Девід Хеллінгс

можливо, краще відредагувати файл компонент-animations.less з тієї причини, з якою Девід згадує.
Пітер Хенлі

клас зникання необов’язковий, є кращий (і кращий за документацією на BS) відповідь Роуз нижче
umassthrower

@umassthrower ця відповідь досить стара, на момент написання цього вибору не існувало.
Андрес Ілліч

Я не впевнений, що коментар правильний, оскільки BS 2.0 був випущений за 3 місяці до цієї відповіді, і я усунув зникнення з мод модалів при використанні v2.0 минулого літа. Можливо, вони не змінили документацію до цього. Данно.
umassthrower

30

Якщо ви хочете, щоб модальний модуль затухав, а не просувався (чому це .fadeвсе одно називається ?), Ви можете перезаписати клас у свій CSS-файл або безпосередньо bootstrap.cssз цим:

.modal.fade{
    -webkit-transition: opacity .2s linear, none;
    -moz-transition: opacity .2s linear, none;
    -ms-transition: opacity .2s linear, none;
    -o-transition: opacity .2s linear, none;
    transition: opacity .2s linear, none;
    top: 50%;
}

Якщо ви не хочете ніякого ефекту, просто видаліть fadeклас із модальних класів.


1
Верху: 50% , здається, викликають проблеми , коли діалог закривається. Здається, діалог відкривається там же, що і раніше; але перед тим, як закрити, на частку секунди він переміщується до центру, а потім закривається. Принаймні в Chrome. Хтось ще це помітив?
mohitp

1
@lorem мавпа - ура, хотіла, щоб зник, але не слайд. Якщо хтось хоче версії scss / compass ... .modal.fade {@include перехід (непрозорість .2s лінійний, жоден);}
Simon

1
@mohitp Замість "top: 50%" я використовую "top: 25%". Я також додав .modal.fade.in {top: 25%; } Здається, що зробили для мене трюк. Невідомо, чому це працює, оскільки у мене немає модального класу "in".
Даррен

2
@dkrape inклас додає Bootstrap.js
Дейв Саг

Це правильна відповідь, відповідаючи на обидві частини питання.
мат

26

Я вважаю, що більшість із цих відповідей стосуються завантажувальної програми 2. Я зіткнувся з тим же питанням для bootstrap 3 і хотів поділитися своїм виправленням. Як і в моїй попередній відповіді на завантажувальний інструмент 2, це все одно зробить непрозорість зникнення, але НЕ виконає слайд переходу.

Ви можете змінити файли modals.less або theme.css, залежно від робочого процесу. Якщо ви не витрачали якісний час з меншим, я б дуже рекомендував це.

для менше знайдіть наступний код у MODALS.less

&.fade .modal-dialog {
  .translate(0, -25%);
  .transition-transform(~"0.3s ease-out");
}
&.in .modal-dialog { .translate(0, 0)}

потім змініть -25%на0%

Крім того, якщо ви використовуєте лише css, знайдіть таке в theme.css:

.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}

а потім змінити -25%на 0%.


2
Я б замінив ці стилі в користувальницькій таблиці стилів замість редагування таблиці стилів Bootstrap / Менше.
Бассем

це ТІЛЬКО просте CSS рішення, щоб отримати FADE без слайда. Дякую.
davideghz

18

Я вирішив це, замінивши .modal.fadeстилі за замовчуванням у власному таблиці менше стилів:

.modal {
  &.fade {
    .transition(e('opacity .3s linear'));
    top: 50%;
  }
  &.fade.in { top: 50%; }
}

Це зберігає анімацію в'янення / згасання, але видаляє анімацію слайдів вгору / ковзання.


спасибі. Я в кінцевому рахунку використовував 10% замість 50% і зменшив перехід від .3s до .25s, що здається мені трохи плавнішим.
isapir

Відкриваючи та закриваючи модальний засіб кілька разів, це переміщує його сторінку з часом.
Ліїш

12

Я знайшов найкраще рішення, яке видаляє слайд, але залишає зникнення , додавши наступний css у файл css вашого вибору, який викликається після bootstrap.css

.modal.fade .modal-dialog 
{
    -moz-transition: none !important;
    -o-transition: none !important;
    -webkit-transition: none !important;
    transition: none !important;

    -moz-transform: none !important;
    -ms-transform: none !important;
    -o-transform: none !important;
    -webkit-transform: none !important;
    transform: none !important;
}

1
Це найкраща відповідь на Bootstrap 3 для того, щоб не зникати, але прибрати слайд вниз
NickH

2
Це рішення добре працює і для Bootstrap 4. Дякую!
aprovent

11

Мені також не сподобався ефект слайда. Щоб виправити це все, що вам потрібно зробити, це зробити topатрибут однаковим і для .modal.fade, і для modal.fade.in. Ви можете зняти і top 0.3s ease-outв переходах, але це не завадить залишити його. Мені подобається такий підхід, оскільки працює зникнення / вимикання , воно просто вбиває слайд .

.modal.fade {
  top: 20%;
  -webkit-transition: opacity 0.3s linear;
     -moz-transition: opacity 0.3s linear;
       -o-transition: opacity 0.3s linear;
          transition: opacity 0.3s linear;
}

.modal.fade.in {
  top: 20%;
}

Якщо ви шукаєте відповідь на завантажувальний 3, подивіться тут


1
Два найкращі приклади, які не мають МЕНШЕ, наведені вище, нехтують декларацією ".modal.fade.in", яка змушує модальний стрибок трохи закриватися. Цей чудово працює. Ось це на практиці: jsfiddle.net/dkrape/4EwFq
Даррен

Це в основному працює, але я бачу, що яскраво-синя горизонтальна лінія (у всіх Safari, Firefox та Chrome) на 32 пікселя вище мого Модалу, коли вона з’являється.
Дейв Саг

2

Ви також можете перезаписати bootstrap.css, просто видаливши "top: -25%;"

Після вилучення модаль просто зникатиме і вимикається без анімації слайдів.


2

Просто видаліть клас зникнення, і якщо ви хочете, щоб більше анімацій було виконано на Modal, просто використовуйте класи animate.css у своєму Modal.


1

Я працюю з завантажувальним пристроєм 3 та модульним плагіном Durandal JS 2. Це питання перебувало на вершині результатів Google, і оскільки жоден з вищезазначених відповідей не працює для мене, я подумав, що поділюсь своїм рішенням для майбутніх відвідувачів.

Я переосмислюю менший код Bootstrap за меншою мірою на цей менше:

.modal {
  &.fade .modal-dialog {
    .translate(0, 0);
    .transition-transform(~"none");
  }
  &.in .modal-dialog { .translate(0, 0)}
}

Таким чином, у мене залишається лише ефект зникнення, і жодний слайддаун.


1
.modal.fade, .modal.fade .modal-dialog {
    -webkit-transition: none;
    -moz-transition: none;
    -ms-transition: none;
    -o-transition: none;
    transition: none;
}

Це видалить анімацію від показу та приховування. Мені добре підходить і інтерфейс Angular-Bootstrap.
С.М. Аднан

1

Питання було зрозумілим: видаліть лише слайд: Ось як його змінити в Bootstrap v3

У modals.less коментуйте заяву перекладу:

&.fade .modal-dialog {
  //   .translate(0, -25%);

1

дивіться на http://quickrails.com/twitter-bootstrap-modal-how-to-remove-slide-down-effect-but-leaves-the-fade/

.modal.fade .modal-dialog 
{
    -moz-transition: none !important;
    -o-transition: none !important;
    -webkit-transition: none !important;
    transition: none !important;
    -moz-transform: none !important;
    -ms-transform: none !important;
    -o-transform: none !important;
    -webkit-transform: none !important;
    transform: none !important;
}

0

Хотіли оновити це. Більшість із вас не закінчили цю проблему. Я використовую Bootstrap 3. жодне з вище виправлень не працювало.

щоб зняти ефект слайда, але не зникнути. Я зайшов у bossstrap css і (зазначив наступних селекторів) - це вирішило проблему.

 .modal.fade .modal-dialog{/*-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out*/}

 .modal.in .modal-dialog{/*-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)*/}

0

Наступний CSS працює для мене - Використання Bootstrap 3. Вам потрібно додати цей css після стилів завантаження -

.modal.fade .modal-dialog{
    -webkit-transition-property: transform; 
    -webkit-transition-duration:0 ; 
    transition-property: transform; 
    transition-duration:0 ; 
}

.modal.fade {
   transition: none; 
}

0

просто видаліть клас "fade" з модального класу

class="modal fade bs-example-modal-lg"

як

class="modal bs-example-modal-lg"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.