浅谈bootstrap使用中的一些问题以及解决过程


Posted in Javascript onOctober 18, 2016

bootstrap是一个不错的前端框架。这里写一下使用中遇到过的几点问题。

1.bootstrap的模态框modal的问题。  有时候会出现弹出模态框的时候遮罩把模态框遮住的情况。

出现这个问题的原因,多半是模态框的html代码放置位置不对。看官方文档。说明如下:

模态框的 HTML 代码放置的位置

务必将模态框的 HTML 代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组件影响模态框的展现和/或功能。

如果因为某种原因我们没办法把模态框的HTML代码放到最高层级内,那么我们可以把它移动过去。

jQuery代码:需要的话请自行翻译成JavaSccipt代码。

$(".modal").appendTo("body");

这个问题告诉我们 文档很重要。

2.在使用bootstrap的同时使用地图API的时候,可能会出现bootstrap与地图冲突,地图显示不出来的情况。这里的问题主要是在使用bootstrap的变体ZUI的时候遇到的。

由于bootstrap有很多自身的css。所以有时候会跟地图API产生一些冲突。导致地图或者地图里面的一些控件显示不出来。我之前用天地图WebAPI与ZUI的时候出现过地图加载不出来的情况。

解决问题的过程:

1.打开浏览器的开发者工具,看console控制台有无报错。无有。看network中的资源,地图相关的图片资源无加载。有。

2.将地图调用的代码从项目中独立出来,看能否正常显示。能。

3.在项目中,使用二分法一半一半地删除引用的js,css看是否这些js或css对天地图API造成了影响。锁定问题在zui.css。

4.在elements那里核对地图那个div下面的一些css。最后发现这一句。

audio, canvas, img, svg, video { 
  max-width: 100%; 
  vertical-align: middle; 
}

ok,问题解决,zui与天地图webAPI的冲突出在 max-width:100%上。 修改成max-width:none; 地图成功显示。当然不是直接修改其源代码,而是在对应div下面把那个属性给覆盖掉。

后来做运行轨迹的时候,发现标注Maker和线line都显示不出来 的情况。经过与正常的对比。并且在控制台查询,发现标注和线是加载了的。只是没有成功显示而已。 原来是svg的问题。也是上面那句代码的影响。修改了就能正常显示了。

3.ZUI使用数据表格初始化不正常的问题。datatable.js。

ZUI中有一个很强大的数据表格插件。可以对数据表格第一列进行排序操作。

按照官方文档的说法,只要这一句就可以初始化表格插件,正常排序。

$('table.datatable').datatable({sortable: true});

但是我们的小伙伴在使用的时候,发现这一句并没有任何作用,完全没有达到范例中的排序效果。于是把这个问题交给我解决。

一开始肯定是怀疑小伙伴哪个地方接口没调用对,然而,我自己试了一下,也没有什么用。

于是继续看接口,发现还有另一种初始化的方式,需要把数据自己拼成一个数组传递进去。

/* 使用启动参数选项来初始化数据 */ 
$('table.datatable').datatable({ 
  data: { 
    cols: [ 
      {width: 80, text: '#', type: 'number', flex: false, colClass: 'text-center'}, 
      {width: 160, text: '时间', type: 'date', flex: false, sort: 'down'}, 
      {width: 80, text: '名称', type: 'string', flex: true, colClass: ''} 
    ], 
    rows: [ 
      {checked: false, data: [1, '2016-01-18 11:05:15', '名称示例1']}, 
      {checked: false, data: [2, '2016-01-20 12:06:16', '名称示例2']}, 
      // 更多数据 
    ] 
  }, 
  // 其他启动参数选项 
});

我就拼了一个,发现可以正常初始化,达到了预期效果。   但是如果每次调用这个东西都要手工拼那么一大个数组出来,显然是不划算的。那么问题出在哪里呢?

于是断点。进到源码里去,发现两种方式的不同在于一个有data传入,一个没有data传入。而在源码里对于没有data的情况下的处理是自己根据表格的内容来生成data。

于是我将它生成的最终data使用console.log(JSON.stingify(data))出来,再用这个生成的data,使用第二种方式传入data来初始化。发现不能正常使用功能。

于是将问题锁定在这个 生成的data上面。

通过对比范例中的data,以及生成的data,发现居然不一样。 范例中的data每一行的数据是一个数组包含的里面每一个格子里的内容,是直接量。而生成的data每一行的数据是一个数组包含的每一个格子的对象,对象中又包含了一些信息。这是差异所在。另外生成的表头数据也有一些差异。

于是按照范例中的数据要求来修改源代码,

cols.push($.extend( 
{ 
  text: $th.html(), 
  flex: false || $th.hasClass('flex-col'), 
  width: 'auto', 
  cssClass: $th.attr('class'), 
  css: $th.attr('style'), 
  type: 'string', 
  ignore: $th.hasClass('ignore'), 
  sort: !$th.hasClass('sort-disabled'), 
  mergeRows: $th.attr('merge-rows') 
}, $th.data()));

$t.find('thead > tr:first').children('th').each(function() 
{ 
  $th = $(this); 
  cols.push($.extend( 
  { 
    text: $th.html(), 
    flex: false || $th.hasClass('flex-col'), 
    width: 'auto', 
    cssClass: $th.attr('class'), 
    colClass: $th.attr('class'), 
    css: $th.attr('style'), 
    type: 'string', 
    ignore: $th.hasClass('ignore'), 
    sort: !$th.hasClass('sort-disabled') 
  }, $th.data())); 
});

修改:

row.data.push($.extend( 
{ 
  cssClass: $td.attr('class'), 
  css: $td.attr('style'), 
  text: $td.html(), 
  colSpan: colSpan 
}, $td.data()));

为:

row.data.push($td.html());

测试

$('table.datatable').datatable({sortable: true});

成功初始化。排序可能正常。表格css正常。问题初步解决。

附:ZUI文档:http://zui.sexy/

bootstrap文档:http://v3.bootcss.com/javascript/

做前端的难免遇到各种各样的问题。不要慌,一步步来,掌握了科学系统的发现问题和解决问题的方法,就能很快的锁定问题进而解决问题了。

以上就是小编为大家带来的浅谈bootstrap使用中的一些问题以及解决过程全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
js文字滚动停顿效果代码
Jun 28 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
May 15 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
Nov 12 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
微信小程序页面生命周期详解
Jan 31 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
微信小程序实现多选框全选与取消全选功能示例
May 14 Javascript
微信小程序中weui用法解析
Oct 21 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 Javascript
JSON对象 详解及实例代码
Oct 18 #Javascript
简易的JS计算器实现代码
Oct 18 #Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
Oct 18 #Javascript
jquery中用jsonp实现搜索框功能
Oct 18 #Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 #Javascript
浅谈js的异步执行
Oct 18 #Javascript
Jquery AJAX POST与GET之间的区别详细介绍
Oct 17 #Javascript
You might like
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js