顯示具有 css3 標籤的文章。 顯示所有文章
顯示具有 css3 標籤的文章。 顯示所有文章

星期四, 6月 13, 2013

[css] box model and box-sizing memo

  今天來討論入門討論 box-sizing這個css3的一個屬性,但是在知道box-sizing之前我們必須先知道什麼是 box model,這個目前在前端界很重要的概念。

  W3C的標準的 Box Model

  • Element 所占空間
  • Element 所佔空間高度 = content 高度 + padding 高度 + border 高度 + margin 高度
  • Element 所佔空間寬度 = content 寬度 + padding 寬度 + border 寬度 + margin 寬度
  • Element 實際尺寸
  • Element 高度 =  content 高度 + padding 高度+ border  高度
  • Element 寬度 =  content 寬度 + padding 寬度+ border  寬度
  IE6有特別的算法
  • Element 所占空間
  • Element 所佔空間高度 = content 高度  + margin 高度
  • Element 所佔空間寬度 = content 寬度  + margin 寬度
  • Element 實際尺寸
  • Element 高度 =  content 高度 (包含了 content,padding,以及 border)
  • Element 寬度 =  content 寬度 (包含了 content,padding,以及 border)
  我繪製了圖片,很清楚說明兩者差異如下。


    Box-Sizing

  接下來進入主題,介紹 box-sizing,他有三種屬性:  content-box,padding-box,以及 border-box。從下面的實際範例很容易可以看的出來三者的差異(感謝 Kuro提供,建議使用 Firefox瀏覽)。

Check out this Pen!


div{
    border: 10px solid #000;
    width: 50px;
    height: 50px;
    padding:10px;
    margin:10px 0;
    background-color: #fff;
}
.content-box {
  /*width = content width+padding+border*/
  /*width = 50+20+20 = 90 */
}
.padding-box {
  /*content width only 30 + padding(20) = 50*/
  /*width = 50+20= 70*/
  margin-left: 10px;
}
.border-box {
  /*content width only 10 + padding(20) + border(20) = 50*/
  /*width = 50*/
 margin-left: 20px
}
.content-box{ 
  -moz-box-sizing: content-box; 
  -webkit-box-sizing: content-box; 
}
.padding-box{ 
  -moz-box-sizing: padding-box; 
  -webkit-box-sizing: padding-box; 
}
.border-box{ 
  -moz-box-sizing: border-box;  
  -webkit-box-sizing: border-box; 
}Check out this Pen!
 
  通常元素預設為 content-box,此為保留 W3C的標準 Box Model的行為,其寬高的設定,即是內容的寬高,而元件的寬高則是再加上 padding以及 border。
 
  border-box則是會把元素的寬高計算包括 padding以及 border,所以上例設定寬度為 50px,實際上 padding左右佔掉 20px, border左右占掉20px,實際內容寬只有10px,,根據 Kuro提醒 Chrome的 input type="search" 預設為 box-sizing: border-box。

  而 padding-box則是其寬高的設定會把padding算進去,而不算border,所以設定寬度為50px,padding左右佔掉 20px實際內容寬度就只有30px了。



參考資料: Mozilla Developer Network: box-sizing


星期三, 5月 22, 2013

[CSS] pointer-events

  今天在 Front-End Developers Taiwan社群看到有人問 css3 的 pointer-events,感覺還蠻有趣的,就稍微研究一下。

  我自己實作了一下有點像是透過 css 達到 JavaScript的 preventDefault或是拖拉效果的功能。其主要常用的兩個屬性為 auto 以及 none,若設定 pointer-events: none主要達到下面四點功能:


  • click 功能失效。
  • 指標重置回預設樣式。
  • hover以及 active樣式均失效。
  • JavaScript 點擊功能失效。


JS Bin

  各位也可以去玩玩 google map的地圖圖層的控制項。原本下方這一塊 div是無法拖拉的,只要設定 pointer-events為 none就可以拖動下方圖層。不過上方控制項也不能夠操控了。(感覺是有點無力的豆知識就是。)

  目前 pointer-events在 ie支援不甚理想,有人列出整理表 - Can I use pointer-events?


星期四, 4月 18, 2013

[CSS3] How to make marquee by CSS3 animation

  這次要來探討如何使用 CSS3的 animation達成跑馬燈效果, 原因是原本的 HTML的 marquee標籤是非標準標籤 (refer from wiki), W3C也不建議使用囉. 所以乾脆自己用 CSS3的動畫效果刻一個.分享出來給大家玩看看.

  主要規格是當我  focus到一個連結後底下的字樣會進行跑馬燈的效果.使用到 CSS3的 animation跟 keyframe來呈現.當然有設定文字呈現最基本的 white-space以及overflow: hidden (這樣才有跑馬燈效果阿) .


Check out this Pen!

  透過 keyframes可以設定在動畫的秒數內文字的位置來做到跑馬燈效果, 算是很彈性的作法!