Bootstrap model模态框与百度地图API发生冲突时的解决办法

  在使用百度地图API的过程中,当我需要在infoWindow的按钮点击触发modal模态框时,就会发现bootstrap的模态框会失效。弄清modal的原理就可以通过自定义modalcss样式和modal方法来解决这个问题。Bootstrap modal模态框的原理是通过控制modaldivvisibility属性来变化来实现的,在初始状态modal divvisibility属性值为hidden,在页面上隐藏,当点击按钮触发(或别的事件)一个方法使divvisibility值变为visible从而达到显示的目的。

1)我将infoWindowcontent设置以及modal设置如下:当点击轨迹回放按钮时,会弹出一个模态框来显示datetimepicker控件。

 

<!-- 模态框(Modal) -->
<div id="modal-overlay">
    <div class="modal-data">
        <div class="modal-content">
            <div class="modal-header">
                <h3 class="modal-title" id="myModalLabel">
                    确认时间段
                </h3>
            </div>
            <div class="modal-body">
                <form action="playback.html" class="form-horizontal"  role="form" id="form1">
                    <div class="form-group row">
                        <label for="start_time" class="col-md-4 col-sd-4">开始时间</label>
                        <div class="input-group date form_datetime col-md-8 col-sm-8"  data-date-format="yyyy-mm-dd hh:ii" data-link-field="dtp_input1">
                            <input class="form-control" id="start_time" name="start_time" size="16" type="text" value="" readonly >
                        </div>
                    </div>
                    <div class="form-group row">
                        <label for="end_time" class="col-md-4 col-sd-4">结束时间</label>
                        <div class="input-group date form_datetime col-md-8 col-sm-8" data-date-format="yyyy-mm-dd hh:ii" data-link-field="dtp_input2">
                            <input class="form-control" id="end_time" name="end_time" size="12" type="text" value="" readonly >
                        </div>
                    </div>
                    <div class="form-group text-center">
                        <button type="submit" class="btn btn-primary">
                            查询
                        </button>
                        <button type="button" class="btn btn-default"
                                onclick="closeModal()">关闭
                        </button>

                    </div>
                </form>
            </div>

        </div><!-- /.modal-content -->

</div><!-- /.modal -->

 

  点击事件的js代码如下:

 1 var content = "<div class='infoWindow' ><p><b>" + number + "</b></p>" + "<p>" + datetime + "</p>" + "<p>" + stateHead + statehtml + "</p>" + "<p>里程:" + mileage + "km</p>"  + "<p><button id=" + track_id[i] + " οnclick="+c+"</button>&nbsp;<button id=" + playback_id[i] + " οnclick='modal(this.id)'>轨迹回放</button></p></div>";
 2 function modal(id) {
 3     var e1 = document.getElementById('modal-overlay');
 4     e1.style.visibility = (e1.style.visibility == "visible") ? "hidden" : "visible";
 5     var car_index = parseInt(id.substr(1));
 6 
 7     obj_id = carData[car_index].obj_id;
 8     obj_name=carData[car_index].obj_name;
 9     sessionStorage.obj_name=obj_name;
10     sessionStorage.obj_id=obj_id;
11 }

但此时还并没有bootstrap中的那种模态框的绚丽动画效果。

(2)然后将modal框以及modal内容的divcss样式如下:

modal框的visibility设置为hidden

 

#modal-overlay {
    visibility: hidden;
    position: absolute;   /* 使用绝对定位或固定定位  */
    left: 0px;
    top: 0px;
    width:100%;
    height:100%;
    text-align:center;
    z-index: 1000;
    background-color: #333;
    opacity: 0.95;   /* 背景半透明 */
}
/* 模态框样式 */
.modal-data{
    width:90%;
    margin: 20px auto;
    background-color: #fff;
    border:1px solid #000;
    padding:2px;
    text-align:center;
}

 

  

  (2)这时虽然以及实现了modal的效果但我们发现,其实还没有bootstrapmodal框的那种从屏幕上方掉下来的动画效果,这时可以添加css3过渡样式来实现同样的效果,在#modal-overlay的样式中添加,

-webkit-transition:top 2s; /* Safari and Chrome */

modal()中添加e1.style.top=20px;

同样的,自定义的modal模态框还可以添加其他各种效果。

 

转载于:https://www.cnblogs.com/feleventh/p/4773035.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值