Twitter Bootstrap modal: Как убрать эффект Slide down


167

Есть ли способ изменить анимацию модального окна Twitter Bootstrap с эффекта слайда вниз на fadeIn или просто показать без слайда? Я прочитал документацию здесь:

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

Но они не упоминают никаких вариантов изменения эффектов модального слайда.

Ответы:


359

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

В частности, изменить:

<div class="modal fade hide">

чтобы:

<div class="modal hide">

ОБНОВЛЕНИЕ: для bootstrap3, hideкласс не нужен.


9
Хотя ФП действительно спрашивал, как заставить его исчезать, поэтому некоторые из этих ответов являются правильными для альтернативного формирования вопроса. Думаю, это просто плохой вопрос, потому что это действительно 2 вопроса в одном, и никто не ответил на оба вопроса в одном ответе.
Umassthrower

1
Вам не нужно изменять источники начальной загрузки. Вам нужно только изменить свой HTML. Это правильный ответ.
mpccolorado

31
@umassthrower правильно. Только как не переходить ответили. Вопрос о том, как исчезать, но не выпадать сверху, не покрывается этим ответом.
Synesso

26
Я не понимаю, как это правильный ответ ... это делает модальное появление без исчезновения, и OP попросил удалить СЛАЙД, но не FADE ...
Шон Тейлор

2
Я жду, чтобы исчезнуть и убрать слайд, и этот ответ не поможет. Странно, что начальный загрузчик использовал их класс затухания, чтобы также обрабатывать эффект слайда для модала, поскольку затухание в их CSS совершенно отдельное.
Leeish

36

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

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

Как вы можете видеть, этот модал имеет класс .fade, означающий, что он настроен на плавность, и .in, значит, он будет скользить. Так что просто удалите класс, связанный с эффектом, который вы хотите удалить, который в вашем случае является просто .inклассом.

Изменить: Просто запустил несколько тестов, и кажется, что это не так, .inкласс добавляется с помощью javascript, хотя вы можете изменить его поведение slideDown с помощью css следующим образом:

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

демонстрация


2
Вы также должны добавить его на задний план: и modal.fade, .modal-backdrop.fadeт.д ...
Дэвид Хеллсинг

вероятно, лучше отредактировать файл component-animations.less по той причине, о которой упоминал Дэвид.
Питер Хэнли,

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

@umassthrower этот ответ довольно старый, на момент написания этого выбора не существовало.
Андрес Ильич

Я не уверен, что комментарий правильный, так как BS 2.0 был выпущен за 3 месяца до этого ответа, и я удалил fade из моих модалов прошлым летом при использовании 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% , кажется, вызывают проблемы , когда диалог закрывается. Диалог, кажется, открывается в том же месте, что и раньше; но перед закрытием на долю секунды он перемещается в центр, а затем закрывается. Atleast в Chrome. Кто-нибудь еще это заметил?
Мохитп

1
@lorem обезьяна - ура, хотел исчезнуть, но не слайд. Если кому-то нужна версия scss / compass ... .modal.fade {@include transition (opacity .2s linear, none);}
Саймон

1
@mohitp Вместо «top: 50%» я использую «top: 25%». Я также добавил .modal.fade.in {top: 25%; } Кажется, сделал трюк для меня. Не уверен, почему это работает, так как у меня нет класса "in" в моем модале.
Даррен

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

Это правильный ответ, отвечающий на обе части вопроса.
Мэтт

26

Я полагаю, что большинство этих ответов относится к начальной загрузке 2. Я столкнулся с той же проблемой для начальной загрузки 3 и хотел поделиться своим исправлением. Как и мой предыдущий ответ для bootstrap 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 / Less.
Bassem

Это ЕДИНСТВЕННОЕ простое решение CSS для получения FADE без слайдов. Спасибо.
Давидегз

18

Я решил это, переопределив .modal.fadeстили по умолчанию в моей собственной таблице стилей LESS:

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

Это сохраняет анимацию постепенного появления / исчезновения, но удаляет анимацию скольжения вверх / вниз.


Спасибо. В итоге я использовал 10% вместо 50% и сократил переход с 0,3 до 0,25, что мне кажется более плавным.
Исапир

Открытие и закрытие модального окна несколько раз перемещает его вверх по странице с течением времени.
Leeish

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. Спасибо!
приблизительно

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
Два верхних примера, не относящихся к LESS, пренебрегают объявлением «.modal.fade.in», которое заставляет модальный переход немного при закрытии. Этот отлично работает. Вот это на практике: jsfiddle.net/dkrape/4EwFq
Даррен

В основном это работает, но я вижу ярко-синюю горизонтальную линию (во всех Safari, Firefox и Chrome) примерно на 32 пикселя выше моего Модального, когда она появляется.
Дэйв Саг

2

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

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


2

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


1

Я работаю с bootstrap 3 и модальным плагином Durandal JS 2. Этот вопрос был в топе результатов Google, и поскольку ни один из приведенных выше ответов не помог мне, я решил поделиться своим решением для будущих посетителей.

Я переопределяю код Less по умолчанию в Bootstrap с помощью своего собственного less:

.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 ui.
С.М. Аднан

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. Ни одно из исправлений выше не сработало.

чтобы убрать эффект слайда, но сохранить эффект затухания. Я вошел в программу начальной загрузки 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 после стили Boostrap -

.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.