Twitter Bootstrap模态:如何消除滑倒效应


Answers:


359

只需fade从模式div中删除该类。

具体来说,更改:

<div class="modal fade hide">

至:

<div class="modal hide">

更新:对于bootstrap3,hide不需要该类。


9
尽管OP确实要求如何使其淡入,但是其中一些答案对于问题的替代形式是正确的。猜猜这是一个不好的问题,因为它实际上是两个问题,而且没有人在一个答案中回答过这两个问题。
umassthrower

1
您不必修改引导源。您只需要修改您的html。这是正确的答案。
mpccolorado

31
@umassthrower是正确的。仅回答如何没有过渡。该答案未涵盖如何淡出而不是从顶部下拉的问题。
Synesso

26
我不知道这是正确的答案...它使模态弹出而不会褪色,OP要求删除幻灯片,但不删除FADE ...
Shawn Taylor

2
我正在等待保持淡入淡出状态,同时也要删除幻灯片,此答案没有帮助。奇怪的是,引导程序还使用了它们的衰落类来处理模态的滑动效果,因为衰落在CSS中是完全独立的。
亲爱的

36

引导程序使用的模态使用CSS3提供效果,可以通过从模态容器div中消除适当的类来删除它们:

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

如您所见,该模态具有的类.fade,表示将其设置为淡入,而.in将其设置为将滑入。因此,只需删除与要删除的效果相关的类,在您的情况下就是.in该类。

编辑:只是运行了一些测试,似乎不是这种情况,.in该类是由javascript添加的,尽管您可以使用CSS修改他slideDown的行为,如下所示:

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

演示版


2
您还应该将其添加到背景中:modal.fade, .modal-backdrop.fade等等...
David Hellsing

由于David提到的原因,最好编辑component-animations.less文件。
彼得·汉利

淡入淡出类是可选的,下面罗斯提供了更好的答案(根据BS文档,它是首选)
umassthrower

@umassthrower这个答案很老,在撰写本文时,这个选择还不存在。
Andres Ilich

我不确定该评论是否正确,因为BS 2.0是在该答案发布前三个月发布的,并且去年夏天使用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浏览器中的Atleast。还有其他人注意到吗?
mohitp

1
@lorem猴子-欢呼,希望淡出但不要滑落。如果有人需要scss / compass版本... .modal.fade {@include transition(opacity .2s linear,none);}
Simon,

1
@mohitp我使用的是“ top:25%”,而不是“ top:50%”。我还添加了.modal.fade.in {top:25%; 似乎为我完成了窍门。由于我的模态中没有“ in”类,因此不确定为什么这行得通。
达伦(Darren)

2
@dkrape的in类由Bootstrap.js加入
戴夫凹陷

这是正确的答案,回答了问题的两个部分。
马特

26

我相信这些答案大多数都是针对Bootstrap 2的。我遇到了Bootstrap 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。
巴森2014年

这是获取不带幻灯片的FADE的唯一简单CSS解决方案。谢谢。
davideghz

18

我通过覆盖.modal.fade自己的LESS样式表中的默认样式来解决了这个问题:

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

这将保留淡入/淡出动画,但会删除向上/向下滑动动画。


谢谢。我最终使用了10%而不是50%,并将过渡时间从.3s减少到.25s,这对我来说似乎更平滑了。
isapir

多次打开和关闭模式会随着时间的推移将其在页面上移。
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。谢谢!
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%;
}

如果您正在寻找bootstrap 3的答案,请看这里


1
上面的前两个非LESS示例忽略了“ .modal.fade.in”声明,这使模态在关闭时略有跳跃。这个很棒。这是在实践中:jsfiddle.net/dkrape/4EwFq
Darren

这通常可行,但是我看到一个亮的蓝色水平线出现(在所有Safari,Firefox和Chrome浏览器中),出现在模态上方约32像素。
戴夫·萨格2013年

2

您还可以通过简单地删除“ top:-25%;”来覆盖bootstrap.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)}
}

这样,我只剩下淡入淡出效果,而没有slideDown。


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

这样可以从显示和隐藏中删除动画。Angular-Bootstrap ui也对我很好。
SM阿德南2015年

1

问题很明确:删除幻灯片:以下是如何在Bootstrap v3中进行更改

在modals.less中注释掉translate语句:

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


0

想要更新此。你们大多数人还没有完成此问题。我正在使用Bootstrap3。以上修复程序均无效。

删除幻灯片效果,但保持淡入淡出。

 .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对我有用-使用Bootstrap3。您需要在boostrap样式之后添加此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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.