浅谈bootstrap使用中的一些问题以及解决过程
作者:jingxian 发布时间:2024-11-04 20:53:36
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/
做前端的难免遇到各种各样的问题。不要慌,一步步来,掌握了科学系统的发现问题和解决问题的方法,就能很快的锁定问题进而解决问题了。


猜你喜欢
- 一般来说,使用线程有两种模式, 一种是创建线程要执行的函数, 把这个函数传递进Thread对象里,让它来执行. 另一种是直接从Thread继
- 在深度学习的数据训练过程中,虽然tensorflow和pytorch都会自带打乱数据进行训练的方法,但是当我们自己生成数据,或者某些情况下依
- 本文实例讲述了python连接字符串的方法。分享给大家供大家参考。具体如下:方法1:直接通过加号操作符相加foobar = 'foo
- 在python中gui编程有很多中选择,如果是相对简单的gui的话使用python自带的tkinter即可,但是由于tkinter没有详细的
- 这两天在做小程序调取地图的时候遇到一个问题,如果用户第一次拒绝了位置权限请求。那么就不会再次唤起授权弹出。需要我们引导用户去开启。具体做法如
- 前言编写函数或者类时,还可以为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。本次我将介绍如何使用Python模块uni
- 关于Tensor的数据类型说明1. 32位浮点型:torch.FloatTensora=torch.Tensor( [[2,3],[4,8]
- 本文实例为大家解析了vue中track-by的属性,供大家参考,具体内容如下api:http://cn.vuejs.org/guide/li
- 如下所示:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional
- 常用分支首先分享一下我们的分支规范,然后再介绍摸索出的打tag的规范。mastermaster : 主分支 , 最终在master分支对外发
- 本文实例讲述了python使用chardet判断字符串编码的方法。分享给大家供大家参考。具体分析如下:最近利用python抓取一些网上的数据
- 使用Python创建websocket服务端,并给出不同客户端的请求一、 WebSocket是啥WebSocket 和HTTP一样,也是一种
- 一、表单控件绑定v-modelv-model 双向数据绑定;一般用于表单元素,会忽略表单元素的value、checked、selected的
- JavaScript之点击改变图片形状(transform的应用),供大家参考,具体内容如下附上代码:<!DOCTYPE html&g
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数
- Function content_Code(Str) dim ary_String,i,n,n_pos&nbs
- SQL Server 平台修改自增列值由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自
- Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好
- 设置自动生成作者信息1、file->settings->Editor->file and code templates-&
- 在python中进行两个整数相除的时候,在默认情况下都是只能够得到整数的值,而在需要进行对除所得的结果进行精确地求值时,想在运算后即得到浮点