最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過bootstrap全面學習less

 更新時間:2016年11月09日 16:28:42   作者:huansky  
這篇文章主要為大家詳細介紹了如何通過bootstrap學習less,LESS CSS是一種動態(tài)樣式語言,屬于CSS預處理語言的一種,感興趣的朋友可以參考下

        很早之前就聽說過less了,但是一直拖著沒去學習。最近抽空看了less,其實語法很簡單,看一遍基本就知道怎么用了。但是問題又來了,那我在什么時候用less呢。平時自己寫頁面用less的話,感覺是方便了些,但是難道好處就只是這樣?

  剛好最近也在學習bootstrap,發(fā)現其源文件就是用less寫的,看了之后,我才深深體會的less的強大,對less也有了更深一層的理解。

1、Less是什么?

  LESS CSS是一種動態(tài)樣式語言,屬于CSS預處理語言的一種,它使用類似CSS的語法,為CSS的賦予了動態(tài)語言的特性,如變量、繼承、運算、函數等,更方便CSS的編寫和維護。

  有些人可能沒有接觸過less,那我們就先可以簡單的看看less的一些特性。

2、語言特性快速預覽:

變量:
變量允許我們單獨定義一系列通用的樣式,然后在需要的時候去調用。所以在做全局樣式調整的時候我們可能只需要修改幾行代碼就可以了。

LESS源碼:

@color: #4D926F;

#header {
 color: @color;
}
h2 {
 color: @color;
}

編譯后的CSS:

#header {
 color: #4D926F;
}
h2 {
 color: #4D926F;
}

混合(Mixins)
混合可以將一個定義好的class A輕松的引入到另一個class B中,從而簡單實現class B繼承class A中的所有屬性。我們還可以帶參數地調用,就像使用函數一樣。

LESS源碼:

.rounded-corners (@radius: 5px) {
 -webkit-border-radius: @radius;
 -moz-border-radius: @radius;
 -ms-border-radius: @radius;
 -o-border-radius: @radius;
 border-radius: @radius;
}

#header {
 .rounded-corners;
}
#footer {
 .rounded-corners(10px);
}

編譯后的CSS:

#header {
 -webkit-border-radius: 5px;
 -moz-border-radius: 5px;
 -ms-border-radius: 5px;
 -o-border-radius: 5px;
 border-radius: 5px;
}
#footer {
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
 -ms-border-radius: 10px;
 -o-border-radius: 10px;
 border-radius: 10px;
}

嵌套
我們可以在一個選擇器中嵌套另一個選擇器來實現繼承,這樣很大程度減少了代碼量,并且代碼看起來更加的清晰。

LESS源碼:

#header {
 h1 {
 font-size: 26px;
 font-weight: bold;
 }
 p {
 font-size: 12px;
 a {
 text-decoration: none;
 &:hover {
 border-width: 1px
 }
 }
 }
}

編譯后的CSS:

#header h1 {
 font-size: 26px;
 font-weight: bold;
}
#header p {
 font-size: 12px;
}
#header p a {
 text-decoration: none;
}
#header p a:hover {
 border-width: 1px;
}

函數和運算

運算提供了加,減,乘,除操作;我們可以做屬性值和顏色的運算,這樣就可以實現屬性值之間的復雜關系。LESS中的函數一一映射了JavaScript代碼,如果你愿意的話可以操作屬性值。

LESS源碼:

@the-border: 1px;
@base-color: #111;
@red: #842210;

#header {
 color: (@base-color * 3);
 border-left: @the-border;
 border-right: (@the-border * 2);
}
#footer {
 color: (@base-color + #003300);
 border-color: desaturate(@red, 10%);
}

編譯后的CSS:

#header {
 color: #333;
 border-left: 1px;
 border-right: 2px;
}
#footer {
 color: #114411;
 border-color: #7d2717;
}

想具體學習less,可以訪問 http://www.1024i.com/demo/less/document.html

3、bootstrap中l(wèi)ess的使用

  下載 Bootstrap,解壓縮文件。Bootstrap 的 Less 組件位于less目錄下,其中包含至少20多個less文件,那為什么要分成這么多個呢?主要是方便開發(fā),后期也便于維護,另外就是便于用戶修改樣式。

  開發(fā)人員在編寫樣式的時候,首先對頁面的元素和作用效果進行分離,比如form,button,responsive,tables等等。然后分別編寫,雖然是獨立編寫,但是有些樣式是全局要用的,比如提醒的顏色,頁面的背景色都是同一種。但是less文件很可能是多個人同時編寫的,那怎么來確保樣式的統(tǒng)一呢。這時候,less的作用就顯現出來了。

  我們可以看看 variables.less 文件里的內容,下面節(jié)選了一部分:

// Grays
// -------------------------
@black:  #000;
@grayDarker: #222;
@grayDark: #333;
@gray:  #555;
@grayLight: #999;
@grayLighter: #eee;
@white:  #fff;

/*
.........省略部分.....................
*/

// Typography
// -------------------------
@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
@serifFontFamily: Georgia, "Times New Roman", Times, serif;
@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;

@baseFontSize: 14px;
@baseFontFamily: @sansFontFamily;
@baseLineHeight: 20px;
@altFontFamily: @serifFontFamily;

@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
@headingsFontWeight: bold; // instead of browser default, bold
@headingsColor: inherit; // empty to use BS default, @textColor

從上面可以看出,開發(fā)人員已經為一些常用的樣式變成變量的形式。并且每一個變量的名字都很具體,只要一看就知道這是要設置什么。那具體是怎樣用的呢?我們來看看buttons.less文件,同樣是節(jié)選部分:

// Base styles
// --------------------------------------------------

// Core
.btn {
 display: inline-block;
 .ie7-inline-block();
 padding: 4px 12px;
 margin-bottom: 0; // For input.btn
 font-size: @baseFontSize;
 line-height: @baseLineHeight;
 text-align: center;
 vertical-align: middle;
 cursor: pointer;
 .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
 border: 1px solid @btnBorder;
 *border: 0; // Remove the border to prevent IE7's black border on input:focus
 border-bottom-color: darken(@btnBorder, 10%);
 .border-radius(@baseBorderRadius);
 .ie7-restore-left-whitespace(); // Give IE7 some love
 .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");

怎么樣,是不是很方便。媽媽再也不用擔心我傻傻寫錯樣式了。上面只是列舉了了變量這一特性是使用,當然你還可以在其他文件上發(fā)現其他特性的使用。

4、合并編譯less文件

文件都寫好了,那怎么把它變成bootstrap.css呢。這里有個文件很重要,那就是bootstrap.less。最后只需要編譯該文件就可以得到css文件了。我們來看看里面到底寫了啥:

// Core variables and mixins
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
@import "mixins.less";

// CSS Reset
@import "reset.less";

// Grid system and page structure
@import "scaffolding.less";
@import "grid.less";
@import "layouts.less";

// Base CSS
@import "type.less";
@import "code.less";
@import "forms.less";
@import "tables.less";

// Components: common
@import "sprites.less";
@import "dropdowns.less";
@import "wells.less";
@import "component-animations.less";
@import "close.less";

// Components: Buttons & Alerts
@import "buttons.less";
@import "button-groups.less";
@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less

// Components: Nav
@import "navs.less";
@import "navbar.less";
@import "breadcrumbs.less";
@import "pagination.less";
@import "pager.less";

// Components: Popovers
@import "modals.less";
@import "tooltip.less";
@import "popovers.less";

// Components: Misc
@import "thumbnails.less";
@import "media.less";
@import "labels-badges.less";
@import "progress-bars.less";
@import "accordion.less";
@import "carousel.less";
@import "hero-unit.less";

// Utility classes
@import "utilities.less"; // Has to be last to override when necessary

  bootstrap.less作用是將其他less文件全部引入,但是引入的順序還是有要求的。比如先引入 variables.less 和 mixins.less,是因為后面的less文件用到的less特性都是來自于這兩個文件的,如果不先引入,就會出現編譯錯誤的問題。然后再引入 reset.less 重置原有的樣式。接著引入網格系統(tǒng)的相關文件,這是整個網格系統(tǒng)建立的關鍵所在。然后引入一些公用的組件,特定組件,最后就是一些無家可歸但是比較有用的樣式樣式文件:utilities.less。

最后要做的就是編譯bootstrap.less生成bootstrap.css文件。

編譯方法:

如果你用的編輯器是 sublime text 安裝less2css插件,使用需要nodejs環(huán)境,還有一個less的插件(這個你在使用的時候會提醒你缺少某個插件,然后安裝就可以了)。
用前面說的gulp工具,已經給出教程了

總結:

  通過對bootstrap源碼文件的分析,既了解到了less的作用,也明白預處理器流行的原因。其中有很多思想是值得我們學習的。比如編寫一個樣式框架要考慮哪些因素,如何分工合作等等。

  如果你寫的頁面,樣式比較少,不推薦使用less,有點麻煩。當然如果你配置好相關環(huán)境了(比如工作中使用gulp或webpack來實現自動化)也就不用在乎了。

  如果你要寫的樣式比較多,推薦使用less。

  另外bootstrap官網提供樣式定制,如果變動比較小的話,推薦直接修改bootstrap源文件,重新編譯就好。

如果大家還想深入學習,可以點擊這里進行學習,再為大家附3個精彩的專題:

Bootstrap學習教程

Bootstrap實戰(zhàn)教程

Bootstrap插件使用教程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 線路分流自動智能跳轉代碼,自動選擇最快鏡像網站(js)

    線路分流自動智能跳轉代碼,自動選擇最快鏡像網站(js)

    線路分流自動智能跳轉代碼,自動選擇最快鏡像網站,自動選擇電信或網通線路跳轉代碼
    2011-10-10
  • 小程序實現左滑刪除功能

    小程序實現左滑刪除功能

    這篇文章主要為大家詳細介紹了小程序實現左滑刪除功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • webpack5新特性Asset?Modules資源模塊詳解

    webpack5新特性Asset?Modules資源模塊詳解

    這篇文章主要為大家介紹了webpack5新特性Asset?Modules資源模塊詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • js獲取html文件的思路及示例

    js獲取html文件的思路及示例

    html文件如何獲取,有很多朋友對此表示疑問,在本文將為大家介紹下使用js的或許方法,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-09-09
  • JS動態(tài)修改iframe內嵌網頁地址的方法

    JS動態(tài)修改iframe內嵌網頁地址的方法

    這篇文章主要介紹了JS動態(tài)修改iframe內嵌網頁地址的方法,涉及javascript動態(tài)修改iframe中src屬性的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • 如何將一維度數組轉換成三維數組結構

    如何將一維度數組轉換成三維數組結構

    在開發(fā)過程中,可能會遇到需要將一維數組轉換為多維數組的情況,以滿足特定數據結構的需求,文章介紹了如何將后端返回的一維列表數據通過編程方法轉換成三維數組結構,以適應特定的UI展示需求,通過循環(huán)遍歷和數據重組的方式,可以有效地實現數組結構的轉換
    2024-09-09
  • javascript簡化代碼 A=alert w=document.writeln

    javascript簡化代碼 A=alert w=document.writeln

    建議不要這樣寫代碼,考慮以后的修改才是最重要的,代碼分層.多把一個功能寫成一個js代碼或一個類,然后提供接口,這種寫法代碼會更多,速度也更慢,但人人都推薦這樣寫,是因為這樣子維護方便.而程序不可能一次性寫得完美的,永遠都可以改進
    2008-02-02
  • 整理一下常見的IE錯誤

    整理一下常見的IE錯誤

    多年以來,IE一直都是最難于調試JavaScript 錯誤的瀏覽器。IE給出的錯誤消息一般很短又語焉不詳。而且上下文信息也很少,有時甚至一點都沒有。下面幾小節(jié)將分別探討一些在IE中難于調試的JavaScript 錯誤
    2016-11-11
  • JavaScript?進階問題列表(各種js代碼段1-65)

    JavaScript?進階問題列表(各種js代碼段1-65)

    從基礎到進階,測試你有多了解?JavaScript,刷新你的知識,或者幫助你的?coding?面試!?:muscle:?:rocket:?我每周都會在這個倉庫下更新新的問題
    2024-11-11
  • jQuery中選擇查找自定義屬性具有特定值的所有元素

    jQuery中選擇查找自定義屬性具有特定值的所有元素

    同樣在HTML5可以通過data-自定義屬性名來給元素添加自定義的屬性名。一旦添加完成之后。通過JS可以獲取以及設置自定義屬性。這篇文章主要介紹了jQuery中選擇查找自定義屬性具有特定值的所有元素
    2023-02-02

最新評論

江阴市| 双城市| 梁河县| 安顺市| 余庆县| 庆城县| 达孜县| 鄂伦春自治旗| 永安市| 景泰县| 扎兰屯市| 肇庆市| 潼关县| 漳平市| 宣城市| 建阳市| 无锡市| 福安市| 富川| 夏邑县| 阿拉善右旗| 珲春市| 石楼县| 天长市| 锡林郭勒盟| 乐陵市| 望都县| 金阳县| 贵州省| 玉林市| 赤壁市| 赤城县| 钟祥市| 山东省| 宁波市| 海城市| 勃利县| 雷山县| 卓资县| 商洛市| 常熟市|