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

星期三, 8月 30, 2017

[CSS] All property 筆記

All 是 CSS 的用來重設樣式的屬性的簡化方法(shorthand), 重設範圍不包括 direction 跟 unicode-bidi。
瀏覽器支援度http://caniuse.com/#search=css%20all
All Value
  • initial: 重設樣式到 CSS spec 的初始值
  • inherit: 樣式會從parent element 的樣式繼承下來,包括一些 Non-inherited 的屬性,例如 border
  • unset: 一些可繼承的樣式會從 parent element, Non-inherited 的樣式將會回到 CSS spec 的初始值。




Ref.1: https://developer.mozilla.org/en-US/docs/Web/CSS/inheritance

星期二, 6月 25, 2013

[css] units of css

  這次來介紹 css的度量衡,尺寸介紹。尺寸共有三種類型,一種是絕對數值,如 inch, cm, mm, pt(point), pc(pica), 這種和日常生活相關的尺寸。另外一種是比例上的計算,如 em,ex或 %,最後一種則是特別的單位  px 。

  首先先介紹絕對數值,基於現實生活數值,所以呈現的情況在各種裝置下將會一致,也因此不建議使用在螢幕上,原因是呈現出來螢幕的大小是很多變的,若使用固定尺寸輸出將會造成呈現錯誤。

  絕對數值的轉換公式為 1in = 2.54cm = 25.4mm = 72pt = 6pc。

  接下來來討論比例上的計算,以em當例子,若我們設定字形尺寸為 2in, 1em 就相當於 2in。 em 相關於 font-size大小,所以字體大小也影響到 em的所呈現的大小。我們也常看到 "text-ident: 1.5em" 或是 "margin: 1em"這種用法,都是配合字體大小設定所呈現的格式。下方我做了個 em實例,有機會可以去實驗看看。

Check out this Pen!

  最後介紹 px 這個特別的單位,他和上述兩個不一樣的地方是,他是基於電腦螢幕所發展出來的規格,定義在最小,但是是可以看見的一個單位下所創造出來的螢幕單位。而 px 這名字則是來自於 screen pixels。


  下面這張圖是 W3C 各種單位推薦的的使用方法。也可以參考看看。


參考資料: W3C - EM, PX, PT, CM, IN…

星期四, 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可以設定在動畫的秒數內文字的位置來做到跑馬燈效果, 算是很彈性的作法!

星期四, 3月 07, 2013

[CSS] Calculation a selector's specifiicity.

  這篇文章其實是參照 W3C - Calculating a selector's specificity 應該會有點像是翻譯文章, 不過我會盡量白話的解釋如何計算 CSS的最後優先順序的數值, 並且呈現最後結果.

  我們把 css selector分做四類, 相對應有四個變數, 定義為 a, b, c, d.
  a for style, b for id, c for pseudo-classes, d for pseudo-elements.

  四個定義如下:

  • 如果有設定值來自於 "style" 屬性設定 a為1, 由於這個規則並不沒有任何 CSS Selector的規則, 所以 a = 1, b = 0, c = 0 , d = 0.
  • 如果 CSS Selector 有設定 ID 屬性, 則設定 b加一.
  • 如果 CSS Selector 有設定 classes, 設定一個 c加一.
  • 如果 CSS Selector 有設定 element names 設定一個 d加一.
  最後將四個數值串接起來 a-b-c-d.比較, 優先順序是a > b > c > d. 相通者比較下一級數字差異,若仍相同者後宣告者會覆蓋掉前方的設定值.
  我稍微修改了一下 W3C的範例加了一些自己的測試案例, 會更能理解 css是怎樣計算出來的.

*             {background-color:grey;}  
/* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */

li            {color:blue;}  
/* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */

li:first-line {background-color:yellow;}  
/* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */

ul li         {background-color:pink;}  
/* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */

ul ol+li      {}  
/* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */

h1 + *[rel=up]{}  
/* a=0 b=0 c=1 d=1 -> specificity = 0,0,1,1 */

ul ol li.red:first-line {background-color:red;} 
/*a=0 b=0 c=1 d=4 -> specificity = 0,0,1,4 */

ul ol li.red  {background-color:cyan;}  
/* a=0 b=0 c=1 d=3 -> specificity = 0,0,1,3 */

li.red.level  {background-color:lime;}  
/* a=0 b=0 c=2 d=1 -> specificity = 0,0,2,1 */

#x34y         {color:red;}  
/* a=0 b=1 c=0 d=0 -> specificity = 0,1,0,0 */

Check out this Pen!

星期四, 2月 21, 2013

[CSS] how to use white-space

  最近在玩這 css屬性: white-space, 相信很多人在用的時候常常都是一知半解在玩他. 不過瞭解原理跟定義之後其實是蠻簡單的屬性. white-space有六個 property values, inherit是繼承父元件屬性值就不另外介紹, 下面跟各位一一就定義說明一下.

  • normal: 連續的空白將會被合併為一個, 文字在容器內會合理的換行.
  • nowrap: 連續的空白將會被合併為一個, 文字直到遇到 <br> 標籤才會換行.
  • pre: 空白將會被保留, 換行符號 (line break)也會呈現. 效果類似 HTML的 <pre> 這個標籤.
  • pre-wrap: 空白將會保留, 在容器內文字也會合理換行, 遇到換行符號 (line break)也會換行.
  • pre-line: 連續的空白將會會合併為一個, 在容器內文字也會合理換行, 遇到換行符號 (line break)也會換行.
  下面我實做了這幾個案例, 各位可以觀察 第一句子後面的 Vestibulum這邊空白字元跟換行的情況, 就比較知道white-space的實際運作情況. 可以點擊右上角 Edit on CodePen連結顯示完整程式碼.

Check out this Pen!

星期三, 1月 23, 2013

[CSS] Display Memo

  大家好! 太久沒上來寫東西了,大家應該都忘記這邊了吧. 沒辦法, 最近真的是太忙了, (我絕對不會承認我買了 XBOX, AppleTV等有的沒的東西就忘記這邊了).

   標題這邊是來筆記一下 CSS的 Display 這屬性, 為何會想要筆記這屬性呢? 原因是看了  Evenwu的給網頁設計師的建議. 這篇文章, 才發現這些問題如果當下問我, 我可能也都會回答不出來, 可是包括 CSS reset, float 的 clearfix, 我其實每天都在用.

   這時候我就來問我自己原因, 為什麼我每天再用的東西, 別人換個角度問就回答不出來呢? 答案很簡單, 就是我底子還不夠紮實.所以今天就從很簡單的 CSS Display自己筆記一下囉!


  • display: none 
    • 設定元素在網頁上呈現消失掉. 我們常常會拿他和 visibility比較. visibility是不顯示, 實際上還是佔有空間.而display: none則是不占空間.
  • display: inline
    • 寬度高度均不可設定, 文字圖片均不換行, 內容的文字或圖片寬度即是他的寬度.
    • 可以有 margin-left, margin-right, padding-left, padding-right.
    • 但margin-top, margin-bottom, padding-top, padding-bottom, width, height, background 為無效.[ref. 1]
    • 預設為inline的標籤有: span, a, input, img, em, i, b,iframe.
    • iframe 不是block 讓我訝異了一下!
  • display: block
    • 可設定寬度高度, 所以就會以區塊方式呈現. 至於呈現位置則相關於position以及float的相關設定.
    • 由於為區塊設定, margin, padding等範圍設定均可生效.
    • 預設為block的標籤有: div, p, h1, h2...
 
       Display還有很多可討論的, 不過我覺得這三個屬性最重要, 若之後有研究的更清楚的話,我再把一些研究整理出來.





參考資料

星期五, 7月 20, 2012

[css] z-index test memo.

  所謂 z-index就是個靠爸的東西, 因為不管你的 z-index設定的多高, 跟別人比在一起只要你老爸(parent)的 z-index輸人家一節,你就很難翻身啦.XDD

  以下面案例來舉例:

Check out this Pen!

  我設定了幾個物件: bd, bd下的 draw; ft,  ft下的 img. 而 bd與 ft同一層(意味著兩著互相比較z-index).

  然後設定 bd: z-index為1, ft為2 ( ft比bd高); draw為3, img為-1.
  由此可知道最不成材的就是 img,可是!可是怎麼看他都是在最上層啊!(各位看官可以把img的top改為0,仍然會在ft的上層.

由此可知身為draw的你不管再怎樣努力,都比不過ft底下的img啊!

  而且物件生成的順序也會決定他的 z-index, 若我都設定 bd跟 ft為-1, 由於 ft較 bd後呈現, 所以 layer仍然比較高, 這樣一比較 img仍然比 draw來的高阿.

<div class="content">
    <div class="bd">
        <div class="draw"></div>        
    </div>
    <div class="ft">
        <img src="http://avekta.com/site2/wp-content/uploads/2011/10/ico_fb.png" />
    </div>
</div>Check out this Pen!


Check out this Pen!

星期四, 6月 21, 2012

[CSS] clear:both sample

  之前在跟同事討論到一個CSS的屬性clear,他有所謂的clear:left, clear:right,跟最常使用的clear:bith.不過其概念是真的蠻模糊的,根據W3C School的說明是


  Elements after the floating element will flow around it. To avoid this, use the clear property.

  The clear property specifies which sides of an element other floating elements are not allowed.
  Add a text line into the image gallery, using the clear property.

  恩~有看沒有懂, 不如拿code當範例說明最快了.

  Float會把所指定的 DOM物件浮出它原來的位置, 所以當一個父 DOM物件下面的物件都設定了 float, 會造成此裡面父物件的認為裡面沒有物件撐開,進而高度縮起來

Check out this Pen!

  此解法有相當多種解法,如多加一個 p tag
  .clear {zoom:1; clear:both;}
  .clear:after {content:''; display:block; clear:both; visibility:hidden; height:0;}

(修正 CSS 對於 float 區塊, 使用 clear:both 無效的解法,有更詳細完整的解法)

  所以clear就是清除掉此物件的左或是右,或是兩邊的Float.直接看sample code會更能了解呈現效果.

Check out this Pen!