需求:要求
1.弹出的bootstrap的modal对话框没有遮罩层(去掉默认的遮罩层)
2.大小为宽200px,高200px
3.显示位置在触发元素的位置(随着触发元素位置的不同而不同)
整体效果如下:
首先模态框的html代码是没有变化的:
<!-- 个人中心模态框 -->
<div class="modal" tabindex="-1" id="personalModal">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-body aligncenter">
<span>
<img src="anti/imgs/user.svg">
</span>
<span>
admin
</span>
</div>
<div class="modal-footer">
<span>修改密码</span><span>></span>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
为了实现定制的大小,需要重写一下modal-sm这个类的宽高属性,当然你也可以自己新加个css类,并把它加在modal-dialog这个css类后边。
.modal-sm{
width:200px;
height:200px;
}
其他布局的css:
.aligncenter{
text-align: center;
}
.aligncenter span:first-child{
display: block;
margin-bottom: 5px;
}
#personalModal .modal-footer span:first-child{
float: left;
margin-left:20px;
}
#personalModal .modal-footer span:last-child{
float: right;
margin-right: 20px;
}
怎么让modal对话框在点击元素附近显示呢,这里需要用到JavaScript里面的事件对象的pageX与pageY属性以及bootstrap模态对话框的事件。
//下拉图标的点击事件
$(".dropdown").click(function(evt){
var src=$(this).find("img").prop("src");
if(src.indexOf("up")>-1){
$(this).find("img").prop("src","anti/imgs/down.png");
}else{
$(this).find("img").prop("src","anti/imgs/up.png");
//绑定modal的show.bs.modal事件,修改modal的位置
$('#personalModal').on('show.bs.modal', function (e) {
//设置#personalModal的位置
$(this).css({
position:'absolute',
top:evt.pageY+'px',
left:evt.pageX-$(".modal-sm").width()+"px"
});
});
$('#personalModal').on('shown.bs.modal', function (e) {
//去掉遮罩层
$("html").find("div.modal-backdrop").remove();
});
$("#personalModal").modal("show");
}
});
上面的js代码实现了去掉默认的遮罩层的功能以及修改bootstrap模态框modal显示位置的功能。
版权声明:本文为xiaozhuangyumaotao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。