<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          網站前端有必要學習bootstrap么?前端從bootstrap中可以學到什么

          時間:?2017-11-23閱讀:?1331標簽:?bootstrap

          bootstrap出現的本意是為了提高開發效率,官網的描述是:

          Bootstrap是一款簡潔、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。

          從bootstrap的使用率來講,使用最多的是一些后端的管理界面,對于某些對前端開發要求不高的場景比較適用,基于它能快速搭建可交互界面原型。作為前端開發而言:在實際開發中使用bootstrap的是比較少的,不過我們可以借鑒Bootstrap的一些css和js上的思想,去分析它的代碼實現,組織架構里使用的一些技巧。


          前端bootstrap中可以學到什么?


          1: 閉包
          boot的閉包方式有點特別,普通的閉包是這樣的:

          (function ($) {
           
          })(jQuery)

          這種寫法是怕全局污染,把$封閉在自己的空間里,暴露在外面的只有jQuery,這樣,如果用了別的也用$的控件,就可以避免沖突。
          而boot的閉包又有一些不同:

          +function ($) {
           
          }(jQuery)

          這樣寫除了之前的好處,還有一點就是簡潔,以及更重要的一點,避免之前的括號沒有閉合,導致的沖突。這樣,更加的獨立,之前的包沒有閉合也不會影響到這里。就好像保守的程序員,喜歡在個別的語句前,多家一個";",為的就是怕之前的語句與現在的語句合在了一起。

          2:沖突的避免
          除了控制jQuery中$的沖突,還要避免插件重名所帶來的沖突。
          jQuery 有自己的避免$全局污染的方法,就是noConflict。他可以把變量過渡到別的符號上,或者只是把$收回,只暴露出jQuery來。
          而boot自己也有類似的沖突解決方法。
          下面是所有boot插件的格式,以alert為例:

          +function($){
           var old = $.fn.alert;
           $.fn.alert = function (option) {}
           $.fn.alert.Constructor = Alert;
           $.fn.alert.noConflict = function () {
           $.fn.alert = old;
           return this;
           }
          }(jQuery)

          這樣接入有一個別的alert控件,也叫做alert。那么我們就會把他儲存到old里。然后在把他重新生命為自己的alert控件。
          如果在接下來,我們需要用之前的alert,那么就noConflict一下,這樣,alert就又付給了之前的alert控件,也就是old。
          再把咱們自己寫的alert返回出來。我們可以再給他付給別的空間名,這樣兩個就都可以用了。
          而且我們也可以用Constructor來查看現在alert究竟是哪個控件。

          3:on的使用
          boot很方便,有些控件是自動的綁定在了特定的元素上的。還是以alert為例。

          var dismiss = '[data-dismiss="alert"]'
          $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close);

          這里就是on的用法,他可以監聽整個document,然后在根據參數,冒泡到特定的元素上去,這樣做的好處是,可以再元素未被渲染的情況下,就把事件綁定到上面去,這樣做,不用ready,也可以對新生成的元素執行同樣的事件。所以boot的空間,除了特定的一些(比如tooltip),都可以在寫出來的同時,就可以應用,只需要給元素特定的屬性。

          4:css3的兼容解決方案
          有時候,我們需要在動畫效果結束后在來去調用一些函數,在我們用jquery的動畫時,animate的done參數可以幫我們很好地解決這方面的事情,可是當我們的大部分動畫,都應用了css3的時候,要怎么辦呢。所以boot'用了 一下這個方法:

          +function ($) {
           'use strict';
           
           // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
           // ============================================================
           
           function transitionEnd() {
           var el = document.createElement('bootstrap')
           
           var transEndEventNames = {
           WebkitTransition : 'webkitTransitionEnd',
           MozTransition : 'transitionend',
           OTransition : 'oTransitionEnd otransitionend',
           transition : 'transitionend'
           }
           
           for (var name in transEndEventNames) {
           if (el.style[name] !== undefined) {
           return { end: transEndEventNames[name] }
           }
           }
           
           return false // explicit for ie8 (  ._.)
           }
           
           // http://blog.alexmaccaw.com/css-transitions
           $.fn.emulateTransitionEnd = function (duration) {
           var called = false
           var $el = this
           $(this).one('bsTransitionEnd', function () { called = true })
           var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
           setTimeout(callback, duration)
           return this
           }
           
           $(function () {
           $.support.transition = transitionEnd()
           
           if (!$.support.transition) return
           
           $.event.special.bsTransitionEnd = {
           bindType: $.support.transition.end,
           delegateType: $.support.transition.end,
           handle: function (e) {
           if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
           }
           }
           })
           
          }(jQuery);

          他首先去問瀏覽器,是否支持transitionend這個屬性,如果支持,那么我們在來做后續的操作,同樣以alert為例:

          $.support.transition && $parent.hasClass('fade') ?
           $parent
           .one('bsTransitionEnd', removeElement)
           .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
           removeElement()

          首先$.support.transition,調用transitionEnd方法,看看是否支持這個屬性,如果支持,那么就用one注冊一次 transitionend,然后在用emulateTransitionEnd去調用一下,參數為這個css3動畫的時間duration。這個時間之后去調用這次事件,就可以達成callback的形式。當然如果不支持這個屬性,那么我們就直接執行callback,就ok了。

          5:trigger的應用
          trigger可以手動的觸發事件,以modal控件為例,在之前的版本的控件中,當modal框彈出來的時候,底部主窗口的滾動條沒有取消,所以在后續的控件中(大概3.0.3左右),用了自身的注冊事件來避免這部分的小bug。代碼如下:

          $(document)
           .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
           .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })

          他在每次點開modal框之前,也就是show事件中,給body添加class:modal-open,這個樣式把overflow給hidden掉。再在關閉modal框之后,也就是hidden事件中,再把這個class給remove掉。
          這里注冊了時間,那么哪里去觸發呢?這就用到了trigger方法,在特定的地方

          var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
           that.$element.trigger(e)

          這樣就觸發了事件。大部分的外部接口就是這樣給出的。

          6:事件注銷的技巧
          boot在事件注冊的時候給了很多的后綴。比如 click.bs.alert,show.bs.modal。這樣做事為了什么呢。
          加入我想取消掉alert的click事件。可是我不能把所有的click事件都取消掉,所以我們在off事件的時候,就要這樣寫:

          $(document).off('click.bs.alert')

          如果我想注銷掉全部的alert的事件,那么就要:

          $(document).off('.bs.alert')

          同理,要是想注銷掉全部的boot注冊的時間 那么就要:

          $(document).off('.bs')

          所以在注冊時間時候,才要麻煩的加后綴,是為了我們之后的行為做準備的。這樣寫非常的有道理。

          7:api的使用
          boot給了我們簡單的接口,但是沒有給我們全部,可是其實我們是可以拿到的。
          boot把方法給了data。如下面:

          $.fn.alert = function (option) {
           return this.each(function () {
           var $this = $(this)
           var data = $this.data('bs.alert')
           
           if (!data) $this.data('bs.alert', (data = new Alert(this)))
           if (typeof option == 'string') data[option].call($this)
           })
           }

          在alert的時候,首先檢查元素中用沒有alert這個data,有的話,則直接調用,沒有的話才生成新的。
          那么其實我們可以這樣做:

          $('.alert').alert();
          var api = $('.alert').data('bs.alert');
          api.hide();

          這是和$('.alert').alert('hide');一樣用的。

          8:proxy的應用
          proxy調用一個方法,切用參數取代方法中的this,好像我自己寫的控件form就有這么一段:

          this.$element.on('click','[data-formtype="reset"]',$.proxy(function () {
           this.reset();
           }, this));

          我用了$element冒泡到的data-formtype=reset的元素,那么this自然指向了它,它的click事件是調用方法本身的reset()事件,可是里面的this不是這個方法,那么我們就用proxy來指向當前方法的this。這個方法靈活運用,對于封裝控件有很大作用。

          吐血推薦

          1.站長廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入...

          2.休閑娛樂: 直播/交友    優惠券領取   網頁游戲   H5游戲

          鏈接: http://www.modern-decoration.com.cn/article/detial/159

          Vue 組件:給Bootstrap Modal增加縮放功能

          Bootstrap 應該還是目前最流行的前端基礎框架之一。因為架構方面的優勢,它的侵入性很低,可以以各種方式集成到其它項目當中。在我廠的各種產品里,都有它的用武之地。前兩天,老板抱怨,說 Modal(彈窗)在他的屏幕上太小

          vue-cli項目引入jquery和bootstrap

          webpack.ProvidePlugin插件里面可以配置全局引用,比如此處配置了jquery的使用,后面再vue里使用$,jQuery,windows.JQuery都等同于使用jquery,不需要再require或import

          bootstrap-table樹形結構(展開和折疊)

          今天在工作的時候,遇到了一個需求,就是需要一鍵展開或者關閉樹形結構。關于樹形結構的不是很熟悉,然后去百度,結果也不是很準確。最后經過Google才找到。下面分享給大家

          bootstrap-select使用過程中的一些問題

          這里總結一下上次使用bootstrap-select的過程中遇到的一些問題。至于bootstrap-select的具體使用方法這里就不介紹了,網上有很多例子。點擊沒有反應,下拉框不出現

          響應式網站設計---Bootstrap

          響應式布局可以幫助我們實現網站布局隨屏幕大小自動調整的需求,實現不同屏幕分辨率的終端上瀏覽網頁的不同展示方式,使得網頁在PC端和手機端均可以完美的展現其內容,具有自適應性。

          和 jQuery 說再見,Bootstrap 5 將移除對其依賴

          Bootstrap 最新版本 4.3.1 已發布,作為 Bootstrap 4.3 發布的一部分,團隊也公布了下一個主要版本 Bootstrap 5 的開發計劃。將會在開發 Bootstrap 5 的過程中實現一些關鍵變化

          Bootstrap后臺管理模板推薦_最值得擁有的免費Bootstrap后臺管理模板

          在網站開發項目中,后臺管理因為面向群體相對比較固定,大部分以實現業務邏輯和功能。使用Bootstrap后臺模板可以讓后端開發很輕松的就展現給客戶一個響應式的后臺:AdminLTE、Gentelella Admin、Vali Admin、ModularAdmin、Metis、Ace

          bootstrap組件有哪些?bootstrap常用組件推薦

          這篇文章主要整理bootstrap中常用的組件,比如:表格、表單驗證、文件上傳、復選下拉框、彈出框、時間組件、加載效果等

          fly63.com版權所有,內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网