淺談bootstrap使用中的一些問題以及解決過程
bootstrap是一個(gè)不錯(cuò)的前端框架。這里寫一下使用中遇到過的幾點(diǎn)問題。
1.bootstrap的模態(tài)框modal的問題。 有時(shí)候會(huì)出現(xiàn)彈出模態(tài)框的時(shí)候遮罩把模態(tài)框遮住的情況。
出現(xiàn)這個(gè)問題的原因,多半是模態(tài)框的html代碼放置位置不對(duì)。看官方文檔。說明如下:
模態(tài)框的 HTML 代碼放置的位置
務(wù)必將模態(tài)框的 HTML 代碼放在文檔的最高層級(jí)內(nèi)(也就是說,盡量作為 body 標(biāo)簽的直接子元素),以避免其他組件影響模態(tài)框的展現(xiàn)和/或功能。
如果因?yàn)槟撤N原因我們沒辦法把模態(tài)框的HTML代碼放到最高層級(jí)內(nèi),那么我們可以把它移動(dòng)過去。
jQuery代碼:需要的話請(qǐng)自行翻譯成JavaSccipt代碼。
$(".modal").appendTo("body");
這個(gè)問題告訴我們 文檔很重要。
2.在使用bootstrap的同時(shí)使用地圖API的時(shí)候,可能會(huì)出現(xiàn)bootstrap與地圖沖突,地圖顯示不出來的情況。這里的問題主要是在使用bootstrap的變體ZUI的時(shí)候遇到的。
由于bootstrap有很多自身的css。所以有時(shí)候會(huì)跟地圖API產(chǎn)生一些沖突。導(dǎo)致地圖或者地圖里面的一些控件顯示不出來。我之前用天地圖WebAPI與ZUI的時(shí)候出現(xiàn)過地圖加載不出來的情況。
解決問題的過程:
1.打開瀏覽器的開發(fā)者工具,看console控制臺(tái)有無報(bào)錯(cuò)。無有??磏etwork中的資源,地圖相關(guān)的圖片資源無加載。有。
2.將地圖調(diào)用的代碼從項(xiàng)目中獨(dú)立出來,看能否正常顯示。能。
3.在項(xiàng)目中,使用二分法一半一半地刪除引用的js,css看是否這些js或css對(duì)天地圖API造成了影響。鎖定問題在zui.css。
4.在elements那里核對(duì)地圖那個(gè)div下面的一些css。最后發(fā)現(xiàn)這一句。
audio, canvas, img, svg, video { max-width: 100%; vertical-align: middle; }
ok,問題解決,zui與天地圖webAPI的沖突出在 max-width:100%上。 修改成max-width:none; 地圖成功顯示。當(dāng)然不是直接修改其源代碼,而是在對(duì)應(yīng)div下面把那個(gè)屬性給覆蓋掉。
后來做運(yùn)行軌跡的時(shí)候,發(fā)現(xiàn)標(biāo)注Maker和線line都顯示不出來 的情況。經(jīng)過與正常的對(duì)比。并且在控制臺(tái)查詢,發(fā)現(xiàn)標(biāo)注和線是加載了的。只是沒有成功顯示而已。 原來是svg的問題。也是上面那句代碼的影響。修改了就能正常顯示了。
3.ZUI使用數(shù)據(jù)表格初始化不正常的問題。datatable.js。
ZUI中有一個(gè)很強(qiáng)大的數(shù)據(jù)表格插件??梢詫?duì)數(shù)據(jù)表格第一列進(jìn)行排序操作。
按照官方文檔的說法,只要這一句就可以初始化表格插件,正常排序。
$('table.datatable').datatable({sortable: true});
但是我們的小伙伴在使用的時(shí)候,發(fā)現(xiàn)這一句并沒有任何作用,完全沒有達(dá)到范例中的排序效果。于是把這個(gè)問題交給我解決。
一開始肯定是懷疑小伙伴哪個(gè)地方接口沒調(diào)用對(duì),然而,我自己試了一下,也沒有什么用。
于是繼續(xù)看接口,發(fā)現(xiàn)還有另一種初始化的方式,需要把數(shù)據(jù)自己拼成一個(gè)數(shù)組傳遞進(jìn)去。
/* 使用啟動(dòng)參數(shù)選項(xiàng)來初始化數(shù)據(jù) */ $('table.datatable').datatable({ data: { cols: [ {width: 80, text: '#', type: 'number', flex: false, colClass: 'text-center'}, {width: 160, text: '時(shí)間', 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']}, // 更多數(shù)據(jù) ] }, // 其他啟動(dòng)參數(shù)選項(xiàng) });
我就拼了一個(gè),發(fā)現(xiàn)可以正常初始化,達(dá)到了預(yù)期效果。 但是如果每次調(diào)用這個(gè)東西都要手工拼那么一大個(gè)數(shù)組出來,顯然是不劃算的。那么問題出在哪里呢?
于是斷點(diǎn)。進(jìn)到源碼里去,發(fā)現(xiàn)兩種方式的不同在于一個(gè)有data傳入,一個(gè)沒有data傳入。而在源碼里對(duì)于沒有data的情況下的處理是自己根據(jù)表格的內(nèi)容來生成data。
于是我將它生成的最終data使用console.log(JSON.stingify(data))出來,再用這個(gè)生成的data,使用第二種方式傳入data來初始化。發(fā)現(xiàn)不能正常使用功能。
于是將問題鎖定在這個(gè) 生成的data上面。
通過對(duì)比范例中的data,以及生成的data,發(fā)現(xiàn)居然不一樣。 范例中的data每一行的數(shù)據(jù)是一個(gè)數(shù)組包含的里面每一個(gè)格子里的內(nèi)容,是直接量。而生成的data每一行的數(shù)據(jù)是一個(gè)數(shù)組包含的每一個(gè)格子的對(duì)象,對(duì)象中又包含了一些信息。這是差異所在。另外生成的表頭數(shù)據(jù)也有一些差異。
于是按照范例中的數(shù)據(jù)要求來修改源代碼,
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/
做前端的難免遇到各種各樣的問題。不要慌,一步步來,掌握了科學(xué)系統(tǒng)的發(fā)現(xiàn)問題和解決問題的方法,就能很快的鎖定問題進(jìn)而解決問題了。
以上就是小編為大家?guī)淼臏\談bootstrap使用中的一些問題以及解決過程全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
用javascript動(dòng)態(tài)注釋掉HTML代碼
用javascript動(dòng)態(tài)注釋掉HTML代碼...2006-09-09用javascript實(shí)現(xiàn)分割提取頁面所需內(nèi)容
用javascript實(shí)現(xiàn)分割提取頁面所需內(nèi)容...2007-05-05詳解微信小程序中數(shù)據(jù)雙向綁定如何實(shí)現(xiàn)
最近在小程序的開發(fā)過程中,需要用到雙向綁定,遇到報(bào)錯(cuò)才知道微信本身是不支持對(duì)象雙向綁定的,鏖戰(zhàn)一番找到解決方案,下面這篇文章主要給大家介紹了關(guān)于微信小程序中數(shù)據(jù)雙向綁定如何實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-05-05關(guān)于TypeScript開發(fā)的6六個(gè)實(shí)用小技巧分享
TypeScript是Javascrip t超集,支持靜態(tài)類型檢測,可以在編譯期提前暴露問題,節(jié)省debug時(shí)間,下面這篇文章主要給大家介紹了關(guān)于TypeScript開發(fā)的6六個(gè)實(shí)用小技巧,需要的朋友可以參考下2021-09-09uniapp介紹與使用以及小程序?qū)崟r(shí)獲取視頻播放時(shí)間
這篇文章主要給大家介紹了關(guān)于uniapp介紹與使用以及小程序?qū)崟r(shí)獲取視頻播放時(shí)間的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用uniapp具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02