2016年6月30日 星期四

BS3 Tables

BS3 Tables

簡介

在 BS3 中,表格的 CSS 基礎類別就是 .table,固定搭配 <table> 及其相關的標記一齊使用。預設時,底色為白色,沒有邊框。其它的修飾類別有:

.table-bordered
建立表格的邊框。
.table-striped
單數列和雙數列用不同底色表示,
.table-hover
當游標移至列上方時,改變該列的底色。
.table-condensed
縮減各表格元件間的間隔和留白,讓表格顯得比較緊湊,所佔的空間比較小。
.table-responsive
這個修飾類別比較特別。表格在預設情況下,當螢幕縮小時,表格會增加格子內容的高度,以完全顯示內容。如果使用了 .table-responsive 這個修飾類別,當螢幕尺寸小於 768px 時,表格便不會以增加格子的高度以容納所有內容,而是產生一個水平捲軸,讓使用者以捲動的方式來觀看內容。另外,使用這個修飾類別的方式是在 .table 元件的外面,再加上一個具有 .table-responsive 的 <div> 元件,請參考範例。

除了以上的修飾類別外,尚有用來改變元件底色的修飾類別,這些類別可以應用在 <tr> 或 <td*gt; 的元件上。修改底色的䫶別如下:

  • .success
  • .info
  • .warning
  • .danger

以下為 BS3 v3.3.6 的 bootstrap.css 樣式表中有關 .table 的部份樣式設定,這裡只列出了比較重要的一部份,其它沒有列出的部份都是在修改底色及間距,為了節省篇幅,就不在這裡列出了。

.table {
    width: 100%;
    max-width: 100%;
    margin-bottom: 20px;
}

.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
    padding: 8px;
    line-height: 1.42857143;
    vertical-align: top;
    border-top: 1px solid #ddd;
}
.table > thead > tr > th {
    vertical-align: bottom;
    border-bottom: 2px solid #ddd;
}
.table-bordered {
    border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
    border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
    border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
    background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
    background-color: #f5f5f5;
}
table col[class*="col-"] {
    position: static;
    display: table-column;
    float: none;
}
table td[class*="col-"],
table th[class*="col-"] {
    position: static;
    display: table-cell;
    float: none;
}
.table-responsive {
    min-height: .01%;
    overflow-x: auto;
}
@media screen and (max-width: 767px) {
    .table-responsive {
        width: 100%;
        margin-bottom: 15px;
        overflow-y: hidden;
        -ms-overflow-style: -ms-autohiding-scrollbar;
        border: 1px solid #ddd;
    }
    .table-responsive > .table {
        margin-bottom: 0;
    }
    .table-responsive > .table > thead > tr > th,
    .table-responsive > .table > tbody > tr > th,
    .table-responsive > .table > tfoot > tr > th,
    .table-responsive > .table > thead > tr > td,
    .table-responsive > .table > tbody > tr > td,
    .table-responsive > .table > tfoot > tr > td {
        white-space: nowrap;
    }
    .table-responsive > .table-bordered {
        border: 0;
    }
    .table-responsive > .table-bordered > thead > tr > th:first-child,
    .table-responsive > .table-bordered > tbody > tr > th:first-child,
    .table-responsive > .table-bordered > tfoot > tr > th:first-child,
    .table-responsive > .table-bordered > thead > tr > td:first-child,
    .table-responsive > .table-bordered > tbody > tr > td:first-child,
    .table-responsive > .table-bordered > tfoot > tr > td:first-child {
        border-left: 0;
    }
    .table-responsive > .table-bordered > thead > tr > th:last-child,
    .table-responsive > .table-bordered > tbody > tr > th:last-child,
    .table-responsive > .table-bordered > tfoot > tr > th:last-child,
    .table-responsive > .table-bordered > thead > tr > td:last-child,
    .table-responsive > .table-bordered > tbody > tr > td:last-child,
    .table-responsive > .table-bordered > tfoot > tr > td:last-child {
        border-right: 0;
    }
    .table-responsive > .table-bordered > tbody > tr:last-child > th,
    .table-responsive > .table-bordered > tfoot > tr:last-child > th,
    .table-responsive > .table-bordered > tbody > tr:last-child > td,
    .table-responsive > .table-bordered > tfoot > tr:last-child > td {
        border-bottom: 0;
    }
}

範例

範例中展示了二個表格,各應用了不同的修飾類別,以展示各修示類別的作用。下方的表格在螢幕縮小至 768px 以下時,會產生水平捲軸,可以左右移動表格,以觀看內容。表格中有一列中的內容特別長,在變更螢幕尺寸時,注意一下這一列的變化。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
</style>

CSS 中沒有特別的樣式需要定義。

HTML

<body>
    
Header 1 Header 2 Header 3
Cell Cell Cell
Cell Cell Cell
Cell Cell Cell
Footer 1 Footer 2 Footer 3
Header 1 Header 2 Header 3 Header 4
A very long text content here ... A very long text content here ... A very long text content here ... A very long text content here ...
Cell Cell Cell Cell
Cell Cell Cell Cell
</body>

第 24 行,.danger 應用在 <td&gr; 的標記中。
注意第 36 行,.table-responsive 所在的位置,必須包覆定義 .table 類別的元件。
第 59 行, .warning 應用在 <tr> 的標記中。

2016年6月29日 星期三

BS3 Wells

BS3 Wells

簡介

在 BS3 中,.well 這個 CSS 基礎類別所提供的功能再簡單不過了,主要就是提供一個簡單的方式,在一段文章中插入一小段比較突顯的文字,如此而己。有時會和 <blockquote> 標記一起使用,標示文章中引言的文字段落。Well 的外觀就是一個深灰色的外框,加上淺灰的底色。只有二個修飾類別 well-sm (small) 及 well-lg (large)。稍為特別的是這二個修飾類別只會改變留白的寬度及圓角的大小,並不會改變元件字體的大小。由下列的樣式表可以很清楚的看出差別所在。

以下為 BS3 v3.3.6 之 bootstrap.css 樣式表中,.well 相關類別的樣式設定。

.well {
    min-height: 20px;
    padding: 19px;
    margin-bottom: 20px;
    background-color: #f5f5f5;
    border: 1px solid #e3e3e3;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
            box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
}
.well blockquote {
    border-color: #ddd;
    border-color: rgba(0, 0, 0, .15);
}
.well-lg {
    padding: 24px;
    border-radius: 6px;
}
.well-sm {
    padding: 9px;
    border-radius: 3px;
}

範例

範例中展示了不同尺寸的 well 元件,最後一個和 <blockquote> 配合使用,顯示其在流覽器中呈現的外觀。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width:1000px;
    padding:20px;
}
</style>

CSS 中沒有特別的樣式定義。

HTML

<body>
    
    
Small well.
Default size.
Large well.
A Quote from other article.
</body>

最後一個 well 元件,搭配 <blockquote> 使用。

2016年6月23日 星期四

BS3 Panels

BS3 Panels

簡介

Panel 的意思是「面板」或「儀錶板」。在 BS3 中 .panel 的 CSS 基礎類別構建了一個相當獨立的介面元件,.panel 可以依需求具有 .panel-heading, .panel-body, .panel-footer 及 .panel-title 等子元件,各子元件間又可以包含各種不同的子元件,幾乎等於一個小型的 HTML 架構。在這樣一個架構下,可以大到類似形成一個主題的子網站,也可以小到單純的一個小廣告。還可以用 .panel-group 將數個 .panel 元件包住,讓 .panel 元件形成一個群組,.panel-group 會修改一些樣式定義中 margin-* 的定義值,讓 .panel 元件能靠得稍微近些,比較像個群組。這個元件可以運用的層面相當廣泛,得有點創意就是了。

若要改變 panel 的顏色,有下列的修飾類別可供選擇,這些類別只會修飾 .panel-heading 的底色和字體的顏色,以及邊框的顏色。.panel-body 及 .panel-footer 都保持預設的樣式。

  1. .panel-default
  2. .panel-primary
  3. .panel-success
  4. .panel-info
  5. .panel-warning
  6. .panel-danger

以下為 BS3 v3.3.6 之 bootstrap.css 中一小部份有關 .panel 及其相關的樣式定義,由於相關的樣式定義實在太多,為節省篇幅,其它部部份只好省略,有必要時,還是得開啟 bootstrap.css 檔案,作進一步的瞭解。

.panel {
    margin-bottom: 20px;
    background-color: #fff;
    border: 1px solid transparent;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
            box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
}
.panel-body {
    padding: 15px;
}
.panel-heading {
    padding: 10px 15px;
    border-bottom: 1px solid transparent;
    border-top-left-radius: 3px;
    border-top-right-radius: 3px;
}
.panel-heading > .dropdown .dropdown-toggle {
    color: inherit;
}
.panel-title {
    margin-top: 0;
    margin-bottom: 0;
    font-size: 16px;
    color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
    color: inherit;
}
.panel-footer {
    padding: 10px 15px;
    background-color: #f5f5f5;
    border-top: 1px solid #ddd;
    border-bottom-right-radius: 3px;
    border-bottom-left-radius: 3px;
}
.panel-group {
    margin-bottom: 20px;
}
.panel-group .panel {
    margin-bottom: 0;
    border-radius: 4px;
}
.panel-group .panel + .panel {
    margin-top: 5px;
}

範例

範例中展示了二個 .panel 元件,第一個很一般,就是一個很簡單完全使用預設值的元件。第二個修改了底色,在點按 .panel-heading 元件時,會在展開及收納其它元件的兩個模式中切換。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width:1000px;
    padding:20px;
}
</style>

CSS 中沒有特別的設定。

HTML

<body>
    

Panel Title

Panel Body

Contact Info

Contact detail information.
</body>

第 2 行,建立一個 .panel-group,裡面包含二個 .panel 元件。
第 3 行,的 .panel 元件採用 .panel-default 的樣式。具有 .panel-heading, .panel-body, 及 .panel-footer 等子元件。
第 12 行, .panel 元件採用 .panel-info 的樣式。只有 .panel-heading 及 .panel-body 兩個子元件
第 14 行, 自訂屬性 data-toggle 的值必須設定為 "collapse",這是設定此元件作為展開及收納的切換開關。 href 的值必須指定要收納區塊所設定 id 值;也就是第 16 行中所定的 id 值。
第 16 行,用一個 .panel-collapse 的容器將 .panel-body 元件納入,讓 .panel-body 子元件可以展開及收納。.collapse 指定要用 BS3 的 collapse 的插件; .in 是展開的狀態。

BS3 Carousels

BS3 Carousels

簡介

Carousel 的中文意思是「旋轉木馬」,是的!就是遊樂園裡那種排成圓形轉圈圈的木馬。BS3 裡的主容器類別 .carousel 是用來建立相片或圖片的輪播介面元件,一般是三、五張圖片循環播放,幾張圖片轉著圈圈,輪流出現,行為模式還真有點像旋轉木馬。.carousel 元件和 .jumbotron 元件一樣,主要的作用都在吸引使用者的目光;所佔網頁的篇幅都很大,只是前者是動態的,而後者是靜態的。.carousel 元件大多用在展示主力產品或介紹企業願景。個人覺得 BS3 的 .carousel 元件的外觀設計得滿簡單的,如果要美觀點,得修改不少樣式表裡的設定。

整個 .carousel 元件又分成幾大區塊:

.carousel
包含所有子元件的容器。要特別注意的是,這個容器還得宣告 id 值供函式控制使用。另有一個 .slide 的 CSS 類別,在樣式表中並沒有定義,在 bootstrap.js 的 javascript 程式中會偵測是否有宣告,若有宣告,則轉換圖片時會有動畫效果,若沒宣告,則轉換圖片時無動畫效果。
.carousel-inner
這是圖片的展示區,佔據 .carousel 元件的全寬,其它各元件則用 z-index 設定「浮在」.carousel 元件的上方。.carousel-inner 元件內含 .item 元件,.item 則含有 <img> 標記,可選擇性再含有 .carousel-caption 的元件。展示用的圖片最好具有相同的大小,特別是高度。如果圖片的高度不同,整個 .carousel 元件會隨著圖片變更而調整高度,看起來不是很好看,否則就要為 .carousel-inner 設定固定的 height 屬性值,超過高度的圖片部份會被裁掉。另外,圖片的色調也最好相近,否則 .carousel-indicators 和 .carousel-caption 元件的顏色會很難調配,這些元件在和其色調相近的圖片上很不容易看得清楚。
.carousel-caption
圖片的標題或註解說明。
.carousel-control .left
左邊控制區,佔 15% 的寬度,內含 .previous 控制鈕,用以退回到上一張圖片。
.carousel-control .right
右邊控制區,佔 15% 的寬度,內含 .next 控制鈕,用以前進到下一張圖片。
.carousel-indicators
圖片指標,表示目前圖片在圖片序列中的位置。

以下是 BS3 v3.3.6 之 bootstrap.css 樣式表中.carousel 相關的各樣式定義:

.carousel {
    position: relative;
}
.carousel-inner {
    position: relative;
    width: 100%;
    overflow: hidden;
}
.carousel-inner > .item {
    position: relative;
    display: none;
    -webkit-transition: .6s ease-in-out left;
         -o-transition: .6s ease-in-out left;
            transition: .6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
    line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
      -webkit-transition: -webkit-transform .6s ease-in-out;
           -o-transition:      -o-transform .6s ease-in-out;
              transition:         transform .6s ease-in-out;

      -webkit-backface-visibility: hidden;
              backface-visibility: hidden;
      -webkit-perspective: 1000px;
              perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
      left: 0;
      -webkit-transform: translate3d(100%, 0, 0);
              transform: translate3d(100%, 0, 0);
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
      left: 0;
      -webkit-transform: translate3d(-100%, 0, 0);
              transform: translate3d(-100%, 0, 0);
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
      left: 0;
      -webkit-transform: translate3d(0, 0, 0);
              transform: translate3d(0, 0, 0);
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
    display: block;
}
.carousel-inner > .active {
    left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
    position: absolute;
    top: 0;
    width: 100%;
}
.carousel-inner > .next {
    left: 100%;
}
.carousel-inner > .prev {
    left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
    left: 0;
}
.carousel-inner > .active.left {
    left: -100%;
}
.carousel-inner > .active.right {
    left: 100%;
}
.carousel-control {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 15%;
    font-size: 20px;
    color: #fff;
    text-align: center;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
    background-color: rgba(0, 0, 0, 0);
    filter: alpha(opacity=50);
    opacity: .5;
}
.carousel-control.left {
    background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
    background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
    background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
    background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
    background-repeat: repeat-x;
}
.carousel-control.right {
    right: 0;
    left: auto;
    background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
    background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
    background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
    background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
    background-repeat: repeat-x;
}
.carousel-control:hover,
.carousel-control:focus {
    color: #fff;
    text-decoration: none;
    filter: alpha(opacity=90);
    outline: 0;
    opacity: .9;
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
    position: absolute;
    top: 50%;
    z-index: 5;
    display: inline-block;
    margin-top: -10px;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
    left: 50%;
    margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
    right: 50%;
    margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
    width: 20px;
    height: 20px;
    font-family: serif;
    line-height: 1;
}
.carousel-control .icon-prev:before {
    content: '\2039';
}
.carousel-control .icon-next:before {
    content: '\203a';
}
.carousel-indicators {
    position: absolute;
    bottom: 10px;
    left: 50%;
    z-index: 15;
    width: 60%;
    padding-left: 0;
    margin-left: -30%;
    text-align: center;
    list-style: none;
}
.carousel-indicators li {
    display: inline-block;
    width: 10px;
    height: 10px;
    margin: 1px;
    text-indent: -999px;
    cursor: pointer;
    background-color: #000 \9;
    background-color: rgba(0, 0, 0, 0);
    border: 1px solid #fff;
    border-radius: 10px;
}
.carousel-indicators .active {
    width: 12px;
    height: 12px;
    margin: 0;
    background-color: #fff;
}
.carousel-caption {
    position: absolute;
    right: 15%;
    bottom: 20px;
    left: 15%;
    z-index: 10;
    padding-top: 20px;
    padding-bottom: 20px;
    color: #fff;
    text-align: center;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
}
.carousel-caption .btn {
    text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
      width: 30px;
      height: 30px;
      margin-top: -10px;
      font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
      margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
      margin-right: -10px;
  }
  .carousel-caption {
      right: 20%;
      left: 20%;
      padding-bottom: 30px;
  }
  .carousel-indicators {
      bottom: 20px;
  }
}

範例

範例中展示了一個有三張圖片的 carousel 元件,圖片的原始大小為 1920 x 1200。為了展示如何修改樣式表以改變 carousel 的外觀,用的並非 carousel 的預設外觀。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width:1000px;
    padding:20px;
}
.carousel-inner {
    background-color: white;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
    margin: 0 auto;
}
.carousel-caption {
    color: white;
}
.carousel-indicators li {
    background-color:lightgreen;
    border: 1px solid lightgreen;
}
.carousel-indicators .active {
    background-color:coral;
    border: 1px solid coral;
}
.carousel-control {
    background-color: none;
}
.carousel-control.left,
.carousel-control.right {
    background-image: none;
}
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
    color: white;
}
</style>

CSS 中 .carousel-inner 的底色設定,只有在圖片尺寸不能佔滿全寬時才會顯現,否則都會被圖片的顏色蓋住。.carousel 預設圖片會靠右排列,.carousel-inner > .item > img{} 中的設定會將圖片置中。其它的諸樣式設定,都只是在改變元件的顏色,不難理解,就不多做解釋了。

HTML

<body>
    
    
</body>

第 3 行主容器類別為 .carousel 的標記一定要設定 id 屬性,屬性值會用來連結其它元件。設定 .slide 類別,讓圖片在轉換時具有動畫的效果,.slide 類別在樣式表中找不到,是 bootstrap.js 裡用到的旗標。data-ride="carousel" 自訂屬性,讓 carousel 元件在顯示後,自動輪播放圖片。若沒有設定,則不會自動輪播,必須手動點按控制鈕或圖片指標才能變更圖片。data-interval=3000設定每隔 3000ms(3秒)換播圖片。
第 7 行的 .active 設定該 .item 為 active 的項目,所有的 .item 中一定要有一個,而且只能有一個設定為 .active,否則 carousel 就不會正常運作。此處設定 .active 的項目位置必須和 .carousel-indicators 中設定 .active 的位置一致。
第 23, 28 行的 href 屬性值必須設定為 carousel 的 id 值;自定屬性 data-slide 的值設定圖片移動的方向,只接受 prev 及 next 二個值。
第 34~36 行中的 data-target 自定屬性值必須是 .carousel 的 id 值,data-slide-to 的值則是該指標被點按時,應該要出現之圖片的順序號碼,由 0 開始起算。

2016年6月22日 星期三

BS3 Jumbotron

BS3 Jumbotron

簡介

Jumbotron 就是個「大型看板」,在網頁中很容易吸引使用者的目光。看板中通常放著企業的願景、標語或是公司主力產品的相片等等。BS3 中的 CSS 容器類別 .jumbotron 可以產生這種大型看板。.jumbotron 可以容納各種不同的介面元件,一般都會佔據流覽器的全寬。.jumbotron 本身的樣式沒有定義 width 及 height 兩個屬性值;box-sizing 屬性值則預設為 content-box,因此其尺寸以內容所佔據的大小為準,所以常在其中加入 .container-* (.container / .container-fluid) 容器,將寬度擴張到流覽器的全寬;有時也會將 .jumbotron 置於 .container-* 之中,兩種作法會產生不同的外觀效果。最好親手試一下,觀察有何不同。沒有標準作法,全視需要而定。

以下為 BS3 v3.3.6 的 bootstrap.css 樣式表中,有關 .jumbotron 及其相關之樣式定義,其中有用到媒體查詢 (media query) 的語法,在螢幕寬度等於及大於 small 的尺寸時,會自行調整 .jumbotron 的週邊留白和字體的大小。

.jumbotron {
    padding-top: 30px;
    padding-bottom: 30px;
    margin-bottom: 30px;
    color: inherit;
    background-color: #eee;
}
.jumbotron h1,
.jumbotron .h1 {
    color: inherit;
}
.jumbotron p {
    margin-bottom: 15px;
    font-size: 21px;
    font-weight: 200;
}
.jumbotron > hr {
    border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
    padding-right: 15px;
    padding-left: 15px;
    border-radius: 6px;
}
.jumbotron .container {
    max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
      padding-top: 48px;
      padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
      padding-right: 60px;
      padding-left: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
      font-size: 63px;
  }
}

範例

範例中展示了二個 .jumbotron 的例子,第一個修改了底色和字體的顏色。第二個則以一張圖片作為背景,也修改了字體的顏色。.jumbotron 的預設底色為淺灰色,字體為黑色,為了讓這個大型看板在文章中顯得更突出以吸引目光,通常都會改變其底色或以相片做為背景,再改變字體的顏色作為搭配。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
#demo1.jumbotron {
    background-color: coral;
    color: white;
}
#demo2.jumbotron {
    background: url("images/flower.jpg");
    color: white;
}
</style>

#demo1.jumbotron{} 展示如何修改 .jumbotron 的底色,為了不影響到另一個 .jumbotron 的設定,為容器加上了不同的 id 值做為區分。#demo2.jumbotron{} 則以相片做為背景。

HTML

<body>
    

My Jumbotron


Think BIG with a Bootstrap Jumbotron!

My Jumbotron

Think BIG with a Bootstrap Jumbotron!

</body>

HTML 中建立了二個 .jumbotron,第一個在內容中加入了水平分隔線及一個大型按鈕。
把第 2 行和第 3 行的容器位置互換,可以產生不同的外觀。

2016年6月21日 星期二

BS3 Images

BS3 Images

簡介

在一個自適應式 (Responsive Web Design) 的網頁中,要讓不同大小的相片、圖片隨著螢幕的大小調整,也是一件很鎖碎的事情。在 BS3 中提供了一個 CSS 的基礎類別 .img-responsive 來處理這件事,它能將較大的相片或圖片隨著螢幕大小的變更而調整。但只能將大相片或圖片隨螢幕縮小,卻不能將小相片或圖片放得比原尺寸大。當 <img> 的 CSS 類別設定為 .img-responsive 時,因為 max-width 的屬性值設為 100%,所相片或圖片的寬度其容器內容 (content) 的寬度一致,height 屬性值設為 auto,因此高度會自行調整,以保有原相片或圖片的寬高比。若要將相片或圖片左右置中時,可再加修飾類別 .center-block; 常容器的寬度大於相片或圖片的原始寬度時,相片或圖片便會左右置中了。

修飾類別有

  1. .img-rounded (相片或圖片的四角形成圓角)
  2. .img-circle (相片或圖片依寬、高比,修飾成圓形或楕圓形;寬高比為 1:1 時為圓形)
  3. .img-thumbnail (具有 1px 的淺灰色邊框,週邊有 4px 的留白,四角為圓角)

以下為 BS3 v3.3.6 的 Bootstrap.css 樣式表中,有關 .img-responsive 及其相關之 CSS 修飾類別的定義。

.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
    display: block;
    max-width: 100%;
    height: auto;
}
.img-rounded {
    border-radius: 6px;
}
.img-thumbnail {
    display: inline-block;
    max-width: 100%;
    height: auto;
    padding: 4px;
    line-height: 1.42857143;
    background-color: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    -webkit-transition: all .2s ease-in-out;
         -o-transition: all .2s ease-in-out;
            transition: all .2s ease-in-out;
}
.img-circle {
    border-radius: 50%;
}

範例

範例中用同一張相片展示了 .img-responsive 的預設外觀,及使用其它三種不同修飾類別後,所得到的外觀。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
.imageBox {
    margin:10px;
    width:300px;
    height:auto;
    background: #99ccff;
    float:left;
}
h5 {
    text-align: center;
}
</style>

.imageBox{} 設定了 <img> 的容器寬度為 300px,比 BS3 中 extra small 的寬度 (480px) 還小;這是為了要把各種修飾類別都能顯示在螢幕上,但在縮小螢幕時,就看不出相片會更著一齊縮小了,這張相片原始尺寸為 1024px x 768px。只要把寬度值改大,至少大於 480px,就可以看出縮放的效果了。設定 background-color,在 .img-thumbnail 的範例中,可以看到週邊的留白。

HTML

<body>
    
img-responsive
flower.jpg
img-responsive img-rounded
flower.jpg
img-responsive img-circle
flower.jpg
img-responsive img-thumbnail
flower.jpg
</body>

2016年6月20日 星期一

BS3 Breadcrumb

BS3 Breadcrumb

簡介

Breadcrumb 是「麵包屑」的意思,原由應該來自格林童話中糖果屋的故事,故事中的兄妹在樹林中延路用麵包屑標記回家的路途。BS3 中也定義了名為 .breadcrumb 的 CSS 基礎類別,用來產生介面元件以標示目前網頁在直系網頁中的位置,同時也可以作為直接返回上層直系網頁的捷徑。是一種在網頁中常見的導航方式。和 <ul> 及 <li> 標記搭配使用,通常在 <li> 的標記中放置 <a> 標記並指定前往的 url 位置。

以下為 BS3 在 bootstrap.css 樣式表中,有關於 .breadcrumb 的樣式定義。

.breadcrumb {
    padding: 8px 15px;
    margin-bottom: 20px;
    list-style: none;
    background-color: #f5f5f5;
    border-radius: 4px;
}
.breadcrumb > li {
    display: inline-block;
}
.breadcrumb > li + li:before {
    padding: 0 5px;
    color: #ccc;
    content: "/\00a0";
}
.breadcrumb > .active {
    color: #777;
}

範例

範例中展示了二個 breadcrumb。第一個的外觀採用 BS3 預設的 CSS 定義,第二個則修改了底色和間隔符號。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width:1000px;
    padding:20px;
}
#demo.breadcrumb {
    background-color: lightgreen;
}
#demo.breadcrumb > li + li:before {
    padding: 0 5px;
    color: #ccc;
    content: "|\00a0";
}
</style>

在 CSS 中,修改了 id="demo" 之 breadcrumb 的背景顏色,間隔符號也由 "/" 改成 "\"。\00a0 是 utf-8 內碼的不斷行空白符號 (no-break space)。

HTML

<body>
    
    
</body>

BS3 Pager

BS3 Pager

簡介

BS3 裡 .pager 這個 CSS 基礎類別,搭配 <ul> 及 <li> 標記組用來產生二個按鈕元件,用以引導使用者進入下一個頁面或回到上一個頁面,是非常簡單的介面元件。<li> 的內容只使用 <a> 及 <span> 標記來生成按鈕的標示。預設時,按鈕底色為白色,兩個按鈕並列,置於螢幕寬度的中間。如果要將按鈕分置螢幕寬度的左、右兩側,則使用 .previous 及 .next 兩個 CSS 修飾類別,.previous 會將按鈕置於螢幕寛的左側,.next 則會將按鈕置於螢幕寬的右側。按鈕可以用 .disable CSS 類別使其失去作用,失去作用的按鈕當游標移至按鈕上方時,會改變游標的形狀,顯示按鈕無法點按。因為點按後,頁面會轉移,所以並不需要使用 .active CSS 類別,只有在第一頁時,應該 disable 上一頁的按鈕,及在最後一頁時, disable 下一頁按鈕。

以下為BS3 中 Bootstrap.css 樣式表中對 .pager 及其相關之 CSS 類別的定義:

.pager {
    padding-left: 0;
    margin: 20px 0;
    text-align: center;
    list-style: none;
}
.pager li {
    display: inline;
}
.pager li > a,
.pager li > span {
    display: inline-block;
    padding: 5px 14px;
    background-color: #fff;
    border: 1px solid #ddd;
    border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
    text-decoration: none;
    background-color: #eee;
}
.pager .next > a,
.pager .next > span {
    float: right;
}
.pager .previous > a,
.pager .previous > span {
    float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
    color: #777;
    cursor: not-allowed;
    background-color: #fff;
}

範例

範例中展示三組 pager,底色都重新定義過。第二組使用 BS3 裡的 glyphicons 用圖像符號取代文字說明,第三組將兩個按鈕分置於螢幕兩側,並將右側按鈕 disable。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding:20px;
}
.pager li > span {
    /* coral */
    background-color: rgba(255, 127, 80, 1);
    color: white;
}
.pager .disabled > span {
    background-color: rgba(255, 127, 80, 0.7);
    color: white;
}
.pager li > a {
    /* skyblue */
    background-color: rgba(135, 206, 235, 1);
    color: #333;
}
.pager .disabled > a, .pager .disabled > a:hover {
    background-color: rgba(135, 206, 235, 0.7);
    color: #333;
}
</style>

CSS 中重新定義了 pager 按鈕的底色及字體的顏色,該按鈕比較顯眼。要注意,在 BS3 的樣式表中,對 <li> 標記中使用 <a> 及 <span> 兩者類別的定義並不相同,要修改預設值時,必須注意這點。

HTML

<body>
    
    

</body>

第 11~12 行,用 glyphicon 的左、右箭頭來取代文字表示。
第 18~19 行,使用 .previous 及 .next 兩個 CSS 類別將按鈕分置於螢幕兩側。

2016年6月18日 星期六

BS3 List-group

BS3 List-group

簡介

BS3 中的 .list-group 及 .list-group-item 這兩個 CSS 容器類別搭配其它標記,例如:<ul>, <li>, <button> 等可以產生清單式 (list) 的排版佈局。清單項目的內容可以是很簡單的純文字內容,或是一段很複雜的 HTML 程式碼,甚至包含其它的介面元件。在預設的情況下,清單會佔據父容器的全部寬度。.list-group-item 下,又有兩個 CSS 容器類別,分別是 .list-group-item-heading 及 .list-group-item-text 用以區分清單項目中的標題和內文。

狀態有 .active 及 .disabled 兩種類別可供使用。

清單項目的預設底色為白色,用以改變清單項目底色的 CSS 修飾類別有:

  1. .list-group-item-success
  2. .list-group-item-info
  3. .list-group-item-warning
  4. .list-group-item-danger

狀態則有 .active 及 .disabled 兩種。

以下為部份 BS3 v3.3.6 中 bootstrap.css 樣式表中有關 .list-group 及 .list-group-item 的樣式定義:

.list-group {
    padding-left: 0;
    margin-bottom: 20px;
}
.list-group-item {
    position: relative;
    display: block;
    padding: 10px 15px;
    margin-bottom: -1px;
    background-color: #fff;
    border: 1px solid #ddd;
}
.list-group-item:first-child {
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}
.list-group-item:last-child {
    margin-bottom: 0;
    border-bottom-right-radius: 4px;
    border-bottom-left-radius: 4px;
}
a.list-group-item,
button.list-group-item {
    color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
    color: #333;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}

範例

範例中展示了三份清單,第一份清單使用 <ul> 及 <li> 標記,具有 badge 元件。第二份清單使用 <div> 及 <button> 標記,且清單項目具有不同的底色。第三份清單只列了一個項目,具有底色、標題及內文。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width:1000px;
    padding:20px;
}
</style>

沒有特別的 CSS 樣式需要定義。

HTML

<body>
    
    
    
  • item_110
  • item_211
  • item_312
  • item_413
  • item_514


  • Title

    Put content here.

</body>

第 22 行,用 <h4> 標記的 CSS 定義改變標題字體的大小。

2016年6月17日 星期五

BS3 Badges

BS3 Badges

簡介

在很多的網頁應用或手機的 App 中,常會看到在圖像的右側或右上角有個圓圈,圓圈中有個數字表示在這圖像所代表的應用中有多少項目。例如:在郵件應用中,有多少封未讀的郵件。這個有數字的圓圈,一般通稱為 badge (就是配帶在胸口的胸章),在 BS3 中也定義了這麼一個 CSS 的類別。badge 這個元件幾乎不會單獨使用,都是搭配像是其它旳可點按的介面元件一齊使用,代表介面元件中具有的項目數量。當然,也可以發揮各種創意來使用 badge 幫各種介面元件配帶一個「胸章」。

badge 的 HTML 程式碼很簡單,就是一行
<span class="badge">1<span>
如果 <span> 標記中沒有任何內容,就不會顯示 badge 元件,badge 中的數字或內容,一般都使用 Javascript 或 jQuery 在某事件被觸發後再去修改。

以下是BS v3.3.6 的 bootstrap.css 樣式表中部份有關 .badge 的樣式定義。其它還有很多相關的定義,大多是配合元件的底色,修改 badge 的顏色和 badge 中數字的顏色,以突顯 badge;還有就是根據搭配介面元件的大小,修改 badge 的大小和位置,就不在這裡列出了。

.badge {
    display: inline-block;
    min-width: 10px;
    padding: 3px 7px;
    font-size: 12px;
    font-weight: bold;
    line-height: 1;
    color: #fff;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    background-color: #777;
    border-radius: 10px;
}
.badge:empty {
    display: none;
}
.btn .badge {
    position: relative;
    top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
    top: 0;
    padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
    color: #fff;
    text-decoration: none;
    cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
    color: #337ab7;
    background-color: #fff;
}
.list-group-item > .badge {
    float: right;
}
.list-group-item > .badge + .badge {
    margin-right: 5px;
}

範例

範例中展示了一個基本的 badge 元件,以及和按鈕搭配使用時的情況。每次點按按鈕時,該按鈕 badge 中的數字都會加 1 (透過 jQuery 實作)。其中第一個按鈕在載入時,並沒有顯示 badge,但點按後便會出現。實作了這麼多按鈕,主要是展示在不同底色的按鈕中,badge 也會配合變更其底色及字體的顏色。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
</style>

CSS 中沒有特別定義其它樣式。

HTML

<body>
    10
    
</body>

HTML 中建立了一個基本的 badge,以及配合各種底色的按鈕的 badge。 第 4 行中的 <spna> 標記中沒有任何內容,因此,在網頁一開始顯示時,第一個按鈕是沒有 badge 的。

Script

<script>
$(function(){
    $("button").click(function(){
        var count = $("span", this).text();
        $("span", this).text(++count);
    })
});
</script>

Javascript 程式碼的部份算簡單易懂,所有的按鈕在收到點按的事件後,取得內容 (text) 的值,加 1 之後再寫回去。

2016年6月14日 星期二

BS3 Button Group

BS3 Button Group

簡介

按鈕群組 (button group) 有二個基礎樣式類別:.btn-group 及 .btn-group-vertical。基本作用在將數個按鈕以水平 (.btn-group) 或垂直 (.btn-group-vertical) 的方式組成群組,藉以將按鈕分門別類;或將相關的按鈕組成一群,形成類似選取按鈕 (radio button) 或檢核框 (check box) 的功能。若以 CSS 類別為 .btn-toolbar 的容器包覆,可形成工具列。當按鈕群組為垂直排列時,其寬度會以選項中最寬的項目寬度為準。使用 .btn-group 時可搭配 <a> 或 <button> 標記,但以搭配 <a> 標記時比較容易使用 .btn-group-justified 修飾類別。

修飾類別如下:

.btn-group-lg, .btn-grounp-md, btn-group-sm, .btn-group-xs
用來改變按鈕的尺寸。和 .btn-group 一起使用,群組中的按鈕會具有相同的大小。
.btn-group-justified
讓按鈕群組的寬度佔據容器 100% 的寬度,每個按鈕的寬度一致。此修飾類別只能和 .btn-group 一齊使用,和 .btn-group-vertical 有互斥性,使用 .btn-group-justified 時,按鈕無法垂直排列。另,在和<button> 搭配使用時,每一個按鈕都必須再用一個 .btn-group 的容器包覆。

按鈕群組並沒有底色的設定,而是借用按鈕的底色:.btn-default, .btn-primary, .btn-success, .btn-info, .btn-warning 及 .btn-danger,所以群組中的每個按鈕都要設定,每個按鈕的底色不見得要一致,就看需求為何了。

以下為 BS3 v3.3.6 的 bootstrap.css 樣式表中 .btn-group 及 .btn-group-vertical 相關的樣式定義:

.btn-group,
.btn-group-vertical {
    position: relative;
    display: inline-block;
    vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
    position: relative;
    float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
    z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
    margin-left: -1px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
    border-radius: 0;
}
.btn-group > .btn:first-child {
    margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.btn-group > .btn-group {
    float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
    border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
    outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
    padding-right: 8px;
    padding-left: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
    padding-right: 12px;
    padding-left: 12px;
}
.btn-group.open .dropdown-toggle {
    -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
            box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-group.open .dropdown-toggle.btn-link {
    -webkit-box-shadow: none;
            box-shadow: none;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
    display: block;
    float: none;
    width: 100%;
    max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
    float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
    margin-top: -1px;
    margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
    border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-bottom-right-radius: 4px;
    border-bottom-left-radius: 4px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
    border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}
.btn-group-justified {
    display: table;
    width: 100%;
    table-layout: fixed;
    border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
    display: table-cell;
    float: none;
    width: 1%;
}
.btn-group-justified > .btn-group .btn {
    width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
    left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
    position: absolute;
    clip: rect(0, 0, 0, 0);
    pointer-events: none;
}

.btn-group-* 尺寸相關樣式的定義如下:

.btn-lg,
.btn-group-lg > .btn {
    padding: 10px 16px;
    font-size: 18px;
    line-height: 1.3333333;
    border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
    padding: 5px 10px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
    padding: 1px 5px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px;
}

.toolbar 的相關樣式定義如下:

.btn-toolbar {
    margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
    float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
    margin-left: 5px;

範例

範例中共展示四個按鈕群組,一個略為複雜的水平按鈕群組,一個簡單的垂直按鈕群組,二個佔據全版寬的水平按鈕群組,一個用 <a> 標記製作按鈕,一個用 <button> 製作按鈕,在套用 .btn-group-justified 時, HTML 程式碼的寫法有很大的不同,需要留意。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
</style>

CSS 中沒有特別需要定義的樣式。

HTML

<body>
    
    
    
    


</body>

在 .btn-group 及 .btn-group-vertical 的容器中,第 4,25,35 行也可以加入 .text-left, .text-center 或 .text-right 樣式類別以調整按鈕群組在容器中的位置。
第 46~54 行中,每一個按鈕都入須另行用 .btn-group 容器包覆,這是使用 .btn-group-justified 和 <button> 標記搭配時不方便的地方。

BS3 Dropdowns

BS3 Dropdowns

簡介

在 BS3 中,一個下拉式選單 (dropdown) 的元件實際上包含了一個按鈕元件及一個選單元件。按鈕是用來觸發事件以開啟選單或關閉選單,按鈕標示的左側或右側具有一個指示標誌,表示該按鈕為具有選單的按鈕,同時也指示選單出現位置。選單由 <ul> 及 <li> 標記組合而成,內含可供選取的選項或動作,選單中可具有分隔線(CSS 類別為 .divider 的 <li> 標記),用以分隔不同類別的選項。選單可出現在按鈕的下方 (.dropdown) 或上方 (.dropup)。當選單開啟時,點按選單外的區域會關閉選單。

以下為 BS3 中 bootstrap.css 樣式表中,有關下拉式選單的樣式定義:

.dropup,
.dropdown {
    position: relative;
}
.dropdown-toggle:focus {
    outline: 0;
}
.dropdown-menu {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1000;
    display: none;
    float: left;
    min-width: 160px;
    padding: 5px 0;
    margin: 2px 0 0;
    font-size: 14px;
    text-align: left;
    list-style: none;
    background-color: #fff;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    border: 1px solid #ccc;
    border: 1px solid rgba(0, 0, 0, .15);
    border-radius: 4px;
    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
    box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
.dropdown-menu.pull-right {
    right: 0;
    left: auto;
}
.dropdown-menu .divider {
    height: 1px;
    margin: 9px 0;
    overflow: hidden;
    background-color: #e5e5e5;
}
.dropdown-menu > li > a {
    display: block;
    padding: 3px 20px;
    clear: both;
    font-weight: normal;
    line-height: 1.42857143;
    color: #333;
    white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
    color: #262626;
    text-decoration: none;
    background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
    color: #fff;
    text-decoration: none;
    background-color: #337ab7;
    outline: 0;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
    color: #777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
    text-decoration: none;
    cursor: not-allowed;
    background-color: transparent;
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.open > .dropdown-menu {
    display: block;
}
.open > a {
    outline: 0;
}
.dropdown-menu-right {
    right: 0;
    left: auto;
}
.dropdown-menu-left {
    right: auto;
    left: 0;
}
.dropdown-header {
    display: block;
    padding: 3px 20px;
    font-size: 12px;
    line-height: 1.42857143;
    color: #777;
    white-space: nowrap;
}
.dropdown-backdrop {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 990;
}

以下為樣式表中有關 .caret 比較重要的定義,.caret 使用 CSS 的 border 屬性繪製顯示在按鈕左邊或右邊的三角形,選單的 CSS 類別設定為 .dropdwon 時,顯示朝下的三角形,選單出現在按鈕下方時。如果選單的 CSS 類別設定為 .dropup 時,顯示朝上的三角形,選單出現在按鈕上方。當按鈕設定為 .btn-lg 時,三角形的尺寸也會略大。

.caret {
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 2px;
    vertical-align: middle;
    border-top: 4px dashed;
    border-top: 4px solid \9;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
    content: "";
    border-top: 0;
    border-bottom: 4px dashed;
    border-bottom: 4px solid \9;
}
.btn .caret {
    margin-left: 0;
}
.btn-lg .caret {
    border-width: 5px 5px 0;
    border-bottom-width: 0;
}
.dropup .btn-lg .caret {
    border-width: 0 5px 5px;
}
.btn > .caret,
.dropup > .btn > .caret {
      border-top-color: #000 !important;
  }

範例

範例中展示兩個具有不同尺寸的下拉式選單,按鈕可經由設定 CSS 類別 .btn-lg, .btn-md, btn-sm 或 btn-xs 來改變尺寸;選單的大小則維持不變。只要調整一下按鈕的內容,便可以以改變指示標誌出現的位置(參考範例中的 HTML 程式碼)。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
.dropdown {
    margin-left: 20px;
    float: left;
}
</style>

.dropdwon 的屬性略做修改,讓大小不同的兩個按鈕可以並列。

HTML

<body>
   
    
</body>

第 4,17 行的 data-toggle="dropdown" 一定要設,這是 bootstrap.js 用來搜尋並設定事件及動作的屬性,如果不設,選單就不會出現。
第 5,6 及 18,19 行,當調整內容的前後順序時,可以改變指示標誌顯示的位置。
第 12,24 行,為在選單中顯示分隔線的方式。
第 13,25 行,將 <li> 的 CSS 類別設為 .disabled,可以讓該選項失效。

2016年6月12日 星期日

BS3 Buttons

BS3 Buttons

簡介

「按鈕」(button) 是所有使用者介面中不可或缺的元件,可能具有各種不同的外觀,但基本的作業是一樣的;使用者可以點按一個按鈕,要求應用程式執行一個動作。BS3 中的按鈕有 7 種,都用 CSS 類別設定,具有不同的底色:

  1. .btn-default
  2. .btn-primary
  3. .btn-success
  4. .btn-info
  5. .btn-warning
  6. .btn-danger
  7. .btn-link (唯一不具外框的按鈕)

按鈕的大小則有 5 種,其中 .btn-block 的 width 屬性值為 100%,所以會佔據其容器的全寬。

  1. .btn-lg (large)
  2. .btn-md (medium, default size)
  3. .btn-sm (small)
  4. .btn-xs (extra small)
  5. .btn-block (width=100%)

在 BS3 v3.3.6 的 bootstrap.css 樣式表中,可以找到 .btn CSS 基礎類別及其相關的修飾類別如下:

.btn {
    display: inline-block;
    padding: 6px 12px;
    margin-bottom: 0;
    font-size: 14px;
    font-weight: normal;
    line-height: 1.42857143;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    -ms-touch-action: manipulation;
    touch-action: manipulation;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    background-image: none;
    border: 1px solid transparent;
    border-radius: 4px;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
    outline: thin dotted;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
    color: #333;
    text-decoration: none;
}
.btn:active,
.btn.active {
    background-image: none;
    outline: 0;
    -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
    box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
    cursor: not-allowed;
    filter: alpha(opacity=65);
    -webkit-box-shadow: none;
    box-shadow: none;
    opacity: .65;
}
.btn-default {
    color: #333;
    background-color: #fff;
    border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
    color: #333;
    background-color: #e6e6e6;
    border-color: #8c8c8c;
}
.btn-default:hover {
    color: #333;
    background-color: #e6e6e6;
    border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
    color: #333;
    background-color: #e6e6e6;
    border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
    color: #333;
    background-color: #d4d4d4;
    border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
   background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
    background-color: #fff;
    border-color: #ccc;
}
.btn-default .badge {
    color: #fff;
    background-color: #333;
}

上面只列出了 .btn 及 .btn-default 的樣式定義,其它的 .btn-primary, .btn-success, .btn-info, .btn-warning 及 .btn-danger 等的樣式設定,除了使用的顏色外,其它的基本設定都和 .btn-default 相同,為了不佔篇幅,所以省略了。以下則為按鈕大小的 CSS 定義:

.btn-lg,
.btn-group-lg > .btn {
    padding: 10px 16px;
    font-size: 18px;
    line-height: 1.3333333;
    border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
    padding: 5px 10px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
    padding: 1px 5px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px;
}
.btn-block {
    display: block;
    width: 100%;
}
.btn-block + .btn-block {
    margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
    width: 100%;
}

在 .btn{} 中並沒有定義 width 及 height 屬性,如果要客製按鈕的尺寸,直接重新定義 font-size, line-height 及 padding 值即可。

範例

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding:20px;
}
</style>

CSS 中沒有特別的設定。

HTML

<body>
    



</body>

HTML 中建立了三個 <div> 以二條子平分隔線區隔。第一個 <div> 展示不同樣式的各種按鈕;第二個 <div> 展示各不同樣式的按妞,在失效 (disabled) 的狀態下的外觀;第三個 <div> 展示不同尺寸的按鈕。

2016年6月11日 星期六

BS3 Alerts

BS3 alerts

簡介

當網頁應用在進行時,常會需要提醒使用者一些額外旳資訊、網頁應用的狀態或是作業錯誤的訊息。BS3 中的 CSS 容器類別 .alert 提供了一個簡便的方式,以產生元件來提供資訊給使用者或提醒使用者。訊息可以利用 CSS 修飾䫶別 .alert-dismissable 或 .alert-dismissible 設定為可隱藏;此時在訊息的右上角會出現一個 "X" 的按鈕,點按該按鈕可以隱藏該訊息。dismissible 和 dismissable 是同一個字,只是英、美拼法不同,BS3 把兩種拼法都定義,算是很貼心了。在預設的情況下,.alert 會佔據螢幕畫面的空間,因此在隱藏訊息時,螢幕上的元件會重新排列,造成畫面有跳動的感覺; 如果希望 .alert 以浮現的方式出現及隱藏,必須針對元件設定 z-index 的屬性值,讓它出顯示在其它元件的上方。如此一來,在隱藏訊息時就不會造成畫面的重新排列了。

BS3 將訊息分為四大類,各以 CSS 修飾類別設定不同底色以便區分。

  1. .alert-info
  2. .alert-success
  3. .alert-warning
  4. .alert-danger

以下為 BS3 v3.3.6 之 bootstrap.css 對 .alert 基礎類別的定義,及相關的修飾類別的定義。 .alert 基礎類別並沒有設定 width 及 height 屬性值,因此其大小決定於父容器的尺寸設定。

.alert {
    padding: 15px;
    margin-bottom: 20px;
    border: 1px solid transparent;
    border-radius: 4px;
}
.alert h4 {
    margin-top: 0;
    color: inherit;
}
.alert .alert-link {
    font-weight: bold;
}
.alert > p,
.alert > ul {
    margin-bottom: 0;
}
.alert > p + p {
    margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
    padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
    position: relative;
    top: -2px;
    right: -21px;
    color: inherit;
}
.alert-success {
    color: #3c763d;
    background-color: #dff0d8;
    border-color: #d6e9c6;
}
.alert-success hr {
    border-top-color: #c9e2b3;
}
.alert-success .alert-link {
    color: #2b542c;
}
.alert-info {
    color: #31708f;
    background-color: #d9edf7;
    border-color: #bce8f1;
}
.alert-info hr {
    border-top-color: #a6e1ec;
}
.alert-info .alert-link {
    color: #245269;
}
.alert-warning {
    color: #8a6d3b;
    background-color: #fcf8e3;
    border-color: #faebcc;
}
.alert-warning hr {
    border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
    color: #66512c;
}
.alert-danger {
    color: #a94442;
    background-color: #f2dede;
    border-color: #ebccd1;
}
.alert-danger hr {
    border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
    color: #843534;
}

以下則是在 bootstrap.css 樣式表中 .close 相關的類別定義,這些定義設定了隱藏訊息按鈕的外觀及所在位置。

.close {
    float: right;
    font-size: 21px;
    font-weight: bold;
    line-height: 1;
    color: #000;
    text-shadow: 0 1px 0 #fff;
    filter: alpha(opacity=20);
    opacity: .2;
}
.close:hover,
.close:focus {
    color: #000;
    text-decoration: none;
    cursor: pointer;
    filter: alpha(opacity=50);
    opacity: .5;
}
button.close {
    -webkit-appearance: none;
    padding: 0;
    cursor: pointer;
    background: transparent;
    border: 0;
}

範例

範例中展示了四種類別的 .alert,各以預設的類別底色顯示。其中.alert-info, .alert-success, .alert-warning 的外觀比較簡單,直接顯示訊訊息,很類似狀態列 (status bar),也不能隱藏。 .alert-danger 的設計較為複雜,有標題、內容,及網站鏈接,右上角還有個按鈕以隱藏訊息,顯示時會以浮現的方式出現在畫面的正中央。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
.centered {
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 999;
}
</style>

.centered{} 的定義會將元件置於流覽器螢幕的正中央,z-index 的屬性值定為 999,會讓它顯示在其它元件的上方。。

HTML

<body>
    
</body>

第 3 行的 .fade 及 .in 兩個類別,會製造顯示和隱藏訊息時的動畫效果。
注意第 4 行的 data-dismiss="alert",少了這個設定,隱藏的功能就無法執行了。在 bootstrap.js 中有一段程式碼,靠搜尋這個設定決定要隱藏的元件。
第 11 行雖然設定了 alert-dismissible 類別,但因為沒有設定所需要用來的隱藏的按鈕,因此還是不能隱藏該訊息。

2016年6月10日 星期五

BS3 Labels

BS3 Labels

簡介

BS3 中定義了一個 .label 的 CSS 容器類別,用來強調或凸顯某一小段的文字,但別把它和 HTML5 中的 <label> 標記 (tag) 混淆了;前者是一個 CSS 類別,後者是一個標記。

BS3 v3.3.6 的 bootstrap.css 樣式表中 .label 相關的樣式的定義如下:

.label {
    border: 1px solid #000;
}
.label {
    display: inline;
    padding: .2em .6em .3em;
    font-size: 75%;
    font-weight: bold;
    line-height: 1;
    color: #fff;
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
    border-radius: .25em;
}
a.label:hover,
a.label:focus {
    color: #fff;
    text-decoration: none;
    cursor: pointer;
}
.label:empty {
    display: none;
}
.btn .label {
    position: relative;
    top: -1px;
}
.label-default {
    background-color: #777;
}
.label-default[href]:hover,
.label-default[href]:focus {
    background-color: #5e5e5e;
}
.label-primary {
    background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
    background-color: #286090;
}
.label-success {
    background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
    background-color: #449d44;
}
.label-info {
    background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
    background-color: #31b0d5;
}
.label-warning {
    background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
    background-color: #ec971f;
}
.label-danger {
    background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
    background-color: #c9302c;
}

.label 這個 CSS 類別的外觀和 BS3 中的按鈕相似,時常和 <span> 及 <a> 這兩個標記一齊使用。和 <span> 一齊使用時,多是在內文中強調某一個字詞,或一小段文字,或者搭配 h1, h2, ... h6,形成字體大小不同且有裝飾的文章標頭。和 <a> 一齊使用時,則成為一個有裝飾效果的 url 鏈接 (link),游標移到鏈接上時,會加深標記的底色,同時改變游標的形狀。注意 .label 的 font-size 屬性值設定為 75%,表示其字體只有預設字體的四分之三大,這是為了要在加上裝飾後依然保持原來的行高 (line-height),所以必須把字體略為縮小。.label 具有六個 CSS 修飾類別,各以不同的底色表示,六個裝飾用的 CSS 類別名稱如下,範例中的圖片展示了不同裝飾類別的底色。

  1. .label-default
  2. .label-primary
  3. .label-success
  4. .label-info
  5. .label-warning
  6. .label-danger

範例

範例中展示了使用 .label 分別和 <span> 及 <a> 搭配使用的情形。分隔線以下則展示各 CSS 裝飾類別的底色,同時用 <h6> 到 <h1> 的標記包覆 <span> 以改變其大小。預設 .label 的大小等於用 <h5> 標記包覆時的大小。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
.demo h1, .demo h2, .demo h3, .demo h4, .demo h5, .demo h6 {
    display: inline-block;
}
a.label {
    font-size: 1em;
}
</style>

.label 的 display 屬性值預設為 inline-block,但在用 <h*> 標記包覆後,因為 <h*> 的 display 屬性值為 block,為了要讓元件都顯示在同一列中,所以用 .demo h*{} 將 display 屬性值,設回 inline-block。因為 .label 的字體大小為預設字體的 75%,所以用 a.label{} 設定 font-size 為 1em,和預設字體的大小一致。

HTML

<body>
    

This is a default label in a paragraph.

This label link to a web site


Default
Primary

Success

Info

Warning

Danger

</body>

2016年6月9日 星期四

BS3 Containers

BS3 Containers

簡介

在 bootstrap 中,定義容器 (container) 的基礎樣式類別有二種:.container 及 .container-fluid。.container 類別為固定寬度,在螢幕尺寸模式為 large, medium 及 small 時,容器於該螢幕尺寸模式下具有固定的寬度,不會隨著流覽器的尺寸改變而改變,只有在螢幕尺寸模式切換時,會改變容器的寬度。唯在 extra small 的模式下,其定義和 .container-fluid 的定義相同,行為模式也一樣。.container-fluid 類別的容器會佔據流覽器的全部寬度;因此,當流覽器的寬度改變時,便會立即改變容器的寬度,在任何螢尺寸幕模式下,行為都一致。

以下為 BS3 v3.3.6 的 bootstrap.css 樣式表中與 .container 及 .container-fluid 相關的樣式定義:

.container {
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}
@media (min-width: 768px) {
    .container {
        width: 750px;
    }
}
@media (min-width: 992px) {
    .container {
        width: 970px;
    }
}
@media (min-width: 1200px) {
    .container {
        width: 1170px;
    }
}
.container-fluid {
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}

第 1~6 行定義了預設螢幕尺寸模式,也就是 extra small 的模式下,.container 類別的屬性設定,其設定和 .container-fluid 類別的設定是一樣的。第7~21 行,則用媒體查詢 (media query) 的語法,分別設定了 .container 類別容器在 small, medium 及 large 螢幕尺寸模式下,寬度分別為 750px, 970px 及 1170px。使用 .container 類別容器時,要注意有時會因為裝置正落於某一螢幕尺寸模式下,但其流覽器寬度卻比 .container 在該模式下所設定的寬度要小,此時容器的右邊內容會被切除,需要用移動水平捲軸才能看到被切除部份的內容。在行動裝置的螢幕尺寸這麼多樣化的情形下,這是很可能發生的情況;要留意處理。

範例

範例中建立了一個 CSS 類別為 .container 和一個 CSS 類別為 .container-fluid 的兩個容器,改變流覽器的寬度,可以觀察兩種不同容器的寬度變化。

CSS

<style>
html {
    width:100%;
    height:100%;
    overflow-x: scroll;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
    border: 1px solid gray;
}
.container {
    background-color:lightgreen;
    max-width: 960px;
}
.container-fluid {
    background-color: coral;
}
div[class^="col"] {
    line-height: 2em;
    border: 2px solid white;
}
</style>

因為在 body{} 中已經將寬度限制在最大為 1000px,加上左、右兩邊的 20px 留白,內容部份正是 960px。這個寬度比 .container 在 medium 中設定的 970px 及 large 中設定的 1170px 寬度都要小,所以 CSS 類別為 .container 的內容都會超出流覽器;因此,另外為 .container{} 設定 max-width 為 960px,以限制 .container 的最大寬度。由此得知,如果為body 設定了寬度,也需考慮為 .container 設定相對應的寬度。

HTML

<body>
    

.container

col-xs-12 col-sm-12 col-md-6 col-lg-6
col-xs-12 col-sm-12 col-md-6 col-lg-6

.container-fluid

col-xs-12 col-sm-12 col-md-6 col-lg-6
col-xs-12 col-sm-12 col-md-6 col-lg-6
</body>

HTML 中建立二個容器,設定其 CSS 類別各為 .container 及 container-fluid。容器下各含一列 (row) ,列下有三個元件。

2016年6月7日 星期二

BS3 Typography

BS3 Typography

簡介

在 BS3 v3.3.6 的 bootstrap.css 樣式檔中,可以看到以下二段針對 html 和 body 標記的設定。

html {
    font-family: sans-serif;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}
body {
    margin: 0;
}

這一段 html 和 body 樣式設定及以下的一連串標記的樣式設定,其主要的作用在正規化所有標記的樣式設定,期望網頁內容能在不同的流覽器中,盡可能呈現一致的結果。

html {
    font-size: 10px;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 14px;
    line-height: 1.42857143;
    color: #333;
    background-color: #fff;
}
p {
    margin: 0 0 10px;
}

上面這一小段針對 html, body 和 p 標記的樣式定義,則設定了 BS3 對網頁的預設的字體為 "Helvetica Neue", Helvetica, Arial, sans-serif。字體大小為 14px,比流覽器通常預設的 16px 要略小一些。行高為字高的 1.42857143 倍(有必要算到這麼細嗎?),在 14px 的大小下,行高約為 20px 的高度。字的顏色為 #333,字色略淡,並非純黑色,但在字的大小為 14px 下,中、英文都很難區分是否和純黑色有所不同。個人一直到 22px 以上的大小,才能相當勉強的區分。對於 p 標記,只設定了 margin-bottom 為 10px,其它的屬性都繼承自 body 標記的設定。

BS3 對 header 的字體大小設定如下,BS3 對應 h1 到 h6 的標記也設定了 .h1 到 .h6 的修飾類別,兩者的樣式設定完全相同。在動態改變樣式時,使用修飾類別要比使用標記來得方便許多,也容易保持文章中字型字體的一致性。運用時要注意的是:修飾類別的樣式設定在套用時優先權高於標記的樣式設定。

  • h1 : 36px
  • h2 : 30px
  • h3 : 24px
  • h4 : 18px
  • h5 : 14px
  • h6 : 12px

個人對 html 及 body 標記樣式的基本修改如下:

html {
    width: 100%;
    height: 100%
}
body {
    margin: 0 auto;
    width: 1000px;
    padding: 0 20px;
    font-family: Arial, "文泉驛正黑", "WenQuanYi Zen Hei", "儷黑 Pro", "LiHei Pro", "微軟正黑體", "Microsoft JhengHei";
    font-size: 16px;
    line-height:1.7;
    letter-spacing: 0.04em;
}

在 font-family 屬性中,記得要把英文字型放在中文字型的前面;因為一般的中文字型檔裡都包含有英文的全形和半形字體,如果把中文放在最前面,一但找到中文字體後,中、英文都會使用這個中文字體;設定在中文字體後面的英文字體,除非找不到前面的中文字型檔,否則根本不會有上場的機會。

2016年6月6日 星期一

BS3 Media Query

BS3 Media Query

簡介

在 BS3 (Bootstrap 3) 中利用了媒體查詢 (Media Query) 這項技術來依螢幕尺寸調整內容的排版方式。BS3 預設將螢幕區分成 extra small, small, medium, 及 large 四種不同的尺寸。下圖中顯示了適用各尺寸的螢幕大小及「欄」的 CSS 前綴:

在 BS3 v3.3.6 版的 bootstrap.css 中,可以找到如下設定:

@media (min-width: 768px){}
@media (min-width: 992px){}
@media (min-width: 1200px){}
由此可以得知,BS3 v3.3.6 中預設螢幕的尺寸為 extra small,也就是當螢幕寬度小於 768px 時;螢幕寬度介於 768px 至 991px 時,歸入 small 的範圍;螢幕寬度介於 992px 至 1199px 時,歸入 medium 的範圍;螢幕寬度大於等於 1200px 時,則屬於 large 的範圍。決定範圍後,則套用定義於該範圍中的各項 CSS 設定。由於行動裝置的螢幕尺寸日漸增多,有時除了 BS3 預設的幾種尺寸範圍外,還得新增數種,以符合所需。通常主要是調整字體的大小 (font-size) 、留白 (padding)、邊框 (border) 和邊界 (margin),免得在螢幕上看起來不協調。

範例

範例中建立了三個元件,當改變螢幕尺寸時,如果進入不同定義的尺寸範圍時,也會改變元件的背景顏色及字體的大小。在範例中除了 BS3 預設的四種螢幕尺寸外,又多定義了二種,但不會對預設 col-*-* 的 CSS 類別造成影響,仍舊會依螢幕的尺寸調整排版的方式。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
.element {
    border: 2px solid white;
    font-size: 3em;
    text-align: center;
}
/* Custom, iPhone Retina */ 
@media only screen and (min-width : 320px) {
    .element {
        background-color: lightpink;
        font-size: 1em;
    }
}

/* Extra Small Devices, Phones */ 
@media only screen and (min-width : 480px) {
    .element {
        background-color: lightyellow;
        font-size: 1em;
    }
}

/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {
    .element {
        background-color: skyblue;
        font-size: 2em;
    }
}

/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {
    .element {
        background-color: lightgreen;
    }
 }

/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {
    .element {
        background-color: coral;
    }
 }
</style>

CSS 中除了原有的查詢定義之外,多定義了兩個媒體查詢的尺寸。 .element{} 設定了元件的基本外觀,在不同的的螢幕尺寸下,再行套用其它的 CSS 屬性。

HTML

<body>
    
1
2
3
</body>

HTML 中建立了一個 BS3 的 .container-fluid,內含一個 .row,之下含有三個元件,並用 CSS 類別的方式指定了在不同螢幕尺寸下,所要橫跨的欄數。

BS3 Grid System

BS3 Grid System

簡介

BS3 (Bootstrap 3) 是一種「自適應」或稱「響應式」(Responsive Web Design - RWD) 網站設計的前端工具。這種設計方式能依照裝置大小,而調整內容排版的方式。BS3 的這種能力來自所謂的媒體查詢 (Media Query),用以偵測螢幕的大小,及 BS3 的網格系統 (Grid System),用以在螢幕大小變更時,自行調整內容的排版格式。這篇談的是網格系統。BS3 透過 CSS 類別的方式進行網格的排版。

BS3 的網格系統將螢幕劃分為「容器」(container)、「列」(row)、「欄」(column) 三種元件。每一個網頁中可以包含一至數個容器,每個容器中可包含一至數個列,每一列寬則固定有 12 個欄。這三種元件都以 CSS 類別來定義。要注意的是 BS3 中對「列」的定義和一般定在視覺上所定義的「橫列」不同,BS3 中「列」也代表一種在排版時的容器,在流覽器中排版,一個 BS3 中的「列」在視覺上很可能是數個「橫列」。

在排版時,排版元件可以佔據一個欄寬或橫跨數個欄寬。每一橫列中所有排版元件所佔據的欄寬總和等於 12 個欄寬。不足 12 個欄寬時,剩餘欄寬留白;超過 12 個欄寬時,最後一個排版元件會自動下移,形成視覺上的另一個橫列,但還是在同一「列」的容器中。橫列高則預設以橫列中最高的排版元件的高度為準。此時,每個排版元件本身又自動形成一個容器,內中又可以包含列,從而形成一個巢狀結構。

上圖中有三個排版元件,在螢幕的尺寸為 large 時,左邊的排版元件佔據 4 個欄寬,中間的元件佔據 5 個欄寬,右邊的元件佔據 3 個欄寬,總和正好為 12 個欄寬。BS3 透過媒體查詢的技術將螢幕的尺寸分為 large, medium, small 及 extra small 四種尺寸,各以 lg, md, dm 及 xs 做為代碼,好在 CSS 類別中分別指定排版元件在不同螢幕尺寸中所要佔據的欄寬。排版元件應在 CSS 類別中,指定在不同螢幕大小時的,各要佔據多少欄寬。 例:

<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4"></div>
設定 <div> 元件在螢幕為 extra small 時佔據 12 個欄寬,small 時佔 6 個欄寬,medium 及 large 時,都佔 4 個欄寬。 如果沒有指定排版元件在某螢幕尺寸時所要佔據的欄位數時,則以較小一級之螢幕的設定為準,如果都沒有指定,預設為佔據一個欄位的寬度。

範例

範例中建立兩個列,第一個列中含有 6 個元件,第二個列中含有 3 個元件,但在第三個排版元件中又含有一個子列,子列中又包含三個元件,總共 6 個元件,形成巢狀式的結構。當改變流覽器大小時,便可看到 BS3 如何自行調整版面。

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding:20px;
}
.row div[class^="col"] {
    border: 1px solid white;
    background: coral;
    font-size: 4em;
    text-align: center;

}
.subrow div[class^="col"] {
    border: 1px solid white;
    background: lightgreen;
    font-size: 1em;
    text-align: center;

}
</style>

注意在 body{} 樣式中,在設定 body 寬度時,定義的是 max-width,而非 width。如果定義 width,body 限定等於 1000px 時,當螢幕寬度小於 1000px 時,排版就會出現錯誤。.row div[class^="col"{} 及 .subrow div[class^="col"{} 各定義列和子列的樣式。

HTML

<body>
    
1
2
3
4
5
6

1
2
1
2
3
</body>

HTML 中建立了一個 container 含有兩個 row,第二個 row 中的第三個元件則含有另一個包含了三個元件的 row。形成巢狀結構。