如何做DIV模态视图

之前用DIV作一个模态窗口,觉得这样的效果还不错,某些时候,加载太多的JQuery,难免使得运行速度变慢。不使用JQuery,我们也可以用DIV来模拟模态窗口。如下图所示:

效果就差不多是这样了,示例文件用的黑色作为背景。虽然这样的模态窗口看起来比较简单,但还是比较实用的。

它的基本思想如下:

预先隐藏的一个DIV框架,这个DIV框架内可以没有任何内容,然后我们通过Javascript调用执行,让这个窗口显示,而且调用的时候通过参数为DIV设置必要内容。另外就是有一个铺满整个屏幕的大DIV层,这个层设置为半透明,z-index属性要比其他层高,比弹出框小。这样就可以保证用户只能操作弹出层。当用户不需要后即可点击确定按钮关闭,当然,你还可以在上面设置更多的按钮,可以自己定义样式,很方便。

在网上我看到有一些人设置的模态窗口,其基本思想和我这个差不多,但是有一个问题:就是当用户的页面很长的时候,那个半透明的遮罩层只显示整个屏幕那么大,当用户拖动滚动条的时候,下面部分就没办法遮住,使得用户可以任意操作。而且,弹出层也会随着滚动条上下滚动,不会始终居于屏幕某一位置。

这样就给用户造成了很多不变,使用这个模态窗口如同鸡肋,食之无味,弃之可惜。那么,有什么办法可以解决呢?

其实很简单,请看下面的代码:

显示内容的div

   .div_content 
   {
            display:none;
            position: fixed;
            top: 50%;
            left: 50%;
            width: 480px;
            margin-left:-240px;
            height: 300px;
            margin-top:-150px;
            padding: 0;
            border: 12px solid #3777BC;
            background-color: #F0F5F8;
            _position:absolute;
            z-index:1011;
            overflow: hidden;
}

遮盖整个屏幕的div

.div_overlay
{
            display:none;
            position: fixed;
            top: 0%;
            left: 0%;
            width: 100%;
            height: 100%;
            background-color: black;
            z-index:1010;
            -moz-opacity: 0.8;
            opacity:.80;
            filter: alpha(opacity=80);
}

 

之前,为了解决这一问题,我使用javascript来控制,当弹出窗口时就检测一下当前浏览器可显示高度和整个滚动浏览的高度,即document.documentElement.clientHeight和document.body.offsetHeight,如果前者的高度小于后者,就说明当前有滚动条的出现。因此就设置遮罩层的高度为后者,否则显示前者,即100%。

但这一解决方法实在是错误,在某些页面可行,但另一些页面却完全行不通。检查了N遍都不行,而在另一些页面又行,这个令我颇为不解。后来想,这样的方法也许不太好,于是才想到,应该把position的属性改为:fixed。把遮罩层和弹出层的position属性都改为fixed,问题便完美解决,弹出框既不会随着滚动条随便滚动了,遮罩层也会布满整个屏幕,随时都如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ASP.NET MVC5 中使用 Bootstrap 5 模态框来显示视图中的内容,可以按照以下步骤进行: 1. 在项目中添加 Bootstrap 5 的 CSS 和 JS 文件。 2. 在视图文件中添加模态框的 HTML 代码,代码示例如下: ```html <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <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> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div> ``` 3. 在视图中添加打开模态框的按钮,代码示例如下: ```html <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal"> 打开模态框 </button> ``` 4. 在控制器中返回视图,代码示例如下: ```csharp public ActionResult Index() { return View(); } ``` 这样就可以在 ASP.NET MVC5 中使用 Bootstrap 5 模态框来显示视图中的内容了。需要注意的是,在模态框中插入视图内容时,可以使用 `@Html.Partial("视图名称")` 或 `@Html.Action("操作名称")` 等方式来加载视图或操作的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值