警告框自动消失

3
我正在使用Bootstrap,并希望实现以下功能:
有一种警报框,可以在短时间内自动消失。我想象中有一个特殊的东西,经常看到,但现在找不到了。我认为标准的bootstrap警报(http://getbootstrap.com/javascript/#alertshttp://getbootstrap.com/components/#alerts)不是正确的选择,因为我想要的只是“出现在某个东西的顶部”,而不是页面上的内容,如果你知道我的意思的话。

所以它应该只在进入页面时显示一个简短的“成功信息”,然后再次消失。或者我误解了Bootstrap警报,它正是我要寻找的东西吗?如果是,我该怎么使用它?我需要把那个“div”放在哪里?


1
我会使用toastr完成这样的事情 - exceptional exception
2个回答

3

是的,使用警报也可以实现这一点。只需为关闭添加超时并添加position: fixed样式,就可以使警报显示在内容前面。

下面的演示应该可以让您了解如何使用它。

相同的代码也在这个fiddle中。

$().alert();

setTimeout(function(){$('.alert').alert('close')}, 3000);
.alert {
    position: fixed;
    top: 0px;
}
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<div class="alert alert-danger alert-dismissible fade in" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>
    </button>
     <h4>Oh snap! You got an error!</h4>

    <p>Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.</p>
</div>

<div><h1>Normal content</h1>
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
</div>


谢谢你。这正是我在寻找的。我只有一个小问题。当我不使用CSS来固定位置时,警报会占据整个屏幕的宽度,当我添加position:fixed; top:0;时,它只是一个小盒子在左上角,即使里面有一个“换行符”,所以对于我的情况,两个单词需要两行。你知道为什么吗? - nameless
不确定为什么会发生这种情况,但你可以通过将“width: 100%;”添加到警告类来修复它。 - AWolf
这个又可以工作了,但是会和下一个问题有关联... 警告框在后台... 所以当我输入 top:40px 的时候,页面内容将会在警告框前面,所以你看不到它... - nameless
我在fiddle上看不到这个问题。请提供一个带有该问题的fiddle链接。 - AWolf
我已经解决了,只需将“z-index”设置为较高的值即可。感谢您的解决方案。 - nameless

0
如果你想要一个警告框,可以考虑使用类似于Bootstrap模态框的东西。重点关注HTML和JS的使用。

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

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

这是一个简单的代码块,可以在点击时打开模态框,并在2秒后自动关闭模态框。
Html:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>


<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

Javascript:

$('#myModal').on('shown.bs.modal', function () {
  window.setTimeout(closeModal, 2000)
});

function closeModal(){
  $('#myModal').modal('hide');
}

工作示例:http://codepen.io/anon/pen/ByrZwv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接