Arturo Elena

. : : A R T U R O E L E N A : : .

Michael Whelan

Michael Whelan | Science Fiction and Fantasy Artist

井上雄彥(Inoue Takehiko)


::: INOUE TAKEHIKO ON THE WEB :::
井上雄彦 - Wikipedia

IE中<br />換行顯示有問題

發現文章的 <br /> 換行在 IE 中顯示不正確
必須要兩個 <br /> 才能顯示出自己所需要的斷行形式
而在火狐中的顯示則是正確的
最後找到這個錯誤是因為定義了 letter-spacing 產生的
letter-spacing 可以細微調整字元與字元之間的距離
所以第一個 <br /> 可能被 IE 加上了 letter-spacing
以致於判斷成是一個字元
故而沒有換行
到了第二個 <br /> 才開始真正的換行
解決方式就是把 <br /> 的 letter-spacing 恢復成預設值就好

.post br {
letter-spacing:normal;
}
<!--
.post 是本 blog 的內文範圍的 CSS 樣式名稱
限制在內文部分是因為我在其他地方也有使用到 <br />
避免發生不必要的錯誤又要多作修正的緣故
如果也有相同考量的人
請修改內文範圍的的 CSS 樣式名稱即可
沒有這種考量的人可以直接寫成
br {
letter-spacing:normal;
}
-->

CSS的id跟class

#id

id 是不可重複的
在 CSS 中用 # 表示
優先權比 class 大
<!--
不可重複的意思是在一個頁面中只能有一個元素使用
-->

.class

class 是可重複的
在 CSS 中用 . 表示
優先權比 id 小
可多重使用
多重使用的範例
<div class="ResetClassA ResetClassB">生まれ変わろうよ 人生を初期化(りせっと)しよう</div>
<!--
多重使用部分可參考 xStyle alpha 1.0
-->
<!--
class 由於可重複使用
衝突性小
用法上沒有什麼大問題
只要注意優先權是否有跟 id 衝突到
若要使用拆解
要注意不要拆解的太瑣碎
否則元素中若使用太多 class 便難以維護
-->
<!--
id 只要跟程式設計師確認沒有使用到同樣的名稱便沒有問題
-->
<!--
基本上要使用 id 或 class 取決於偏好
不過個人建議把 id 留給程式設計師比較好
-->

CSS的優先順序

CSS 優先權有一個固定的計算法
網路上有許多教學文章
但我覺得這個計算法有點太複雜
而且其實可以不用理會
因為優先權的邏輯性很簡單
就是指定的層級越高或是越清楚越優先

<!--
舉個例子
詳解CSS的優先權 - 網頁製作 - 藍色理想所提到的
html > body table tr[id=」totals」] td ul > li {color: maroon;}
/* 7個普通元素、一個屬性選擇符、兩個其他選擇符,結果是0,0,1,7 */
li#answer {color: navy;}
/* 一個ID選擇符,一個普通選擇符,結果是0,1,0,1 */
——後者勝出
li#answer 可以看成是直接指定某個 id
只是這個 id 在 li 這個元素中
雖然一堆子選擇符寫得很清楚
但直接指定 id 的層級比較高
當然會比較優先
根本就不需要去計算
-->

以下為 CSS 優先權的幾個簡單要點說明

頁面設定為優先

直接設置在元素內的樣式為最優先
<div class="ResetCssTest" style="width:300px;height:40px;background:#645930;">生まれ変わろうよ 人生を初期化(りせっと)しよう</div>
設置在頁面內的 CSS 為第二優先
<style type="text/css">
.ResetCssTest {
width:200px;
height:20px;
background:#645930;
}
</style>

外部載入為次

在頁面內以 @import 方式載入
<style type="text/css">
@import url("ResetCssTest.css");
</style>
在頁面內以 link 方式載入
<link type='text/css' rel='stylesheet' href='ResetCssTest.css' />
<!--
最後載入的樣式會蓋過先前載入的樣式
建議使用 link 方式載入
詳細說明請參見 不要使用@import - 網頁製作 - 藍色理想
-->

最後設定的樣式將蓋過之前設定的樣式

<style type="text/css">
.ResetCssTest {
width:300px;
height:40px;
background:#ffffcc;
width:200px;
height:20px;
background:#645930;
}
</style>
<!--
其實這個觀念也是一般使用方式最主要的優先順序
由於外部載入的樣式會放在 <head> 跟 </head> 之中
所以載入頁面時會先讀取
然後才開始讀取到頁面中的樣式
故而在大多數情況下
CSS 優先順序的邏輯可以簡化成
最後設定的樣式將蓋過之前設定的樣式
-->

!important 為最高優先

!important 的作用為強制提高優先權
照理說越後面設定的越優先
但這個範例使用了 !important
使得最前面的設定變成了最優先
用了這個的 CSS 樣式等於無敵狀態
除非遇到另一個 CSS 樣式也使用了 !important
這時就按照上面所提到的優先權邏輯再重新比較一次
<style type="text/css">
.ResetCssTest {
width:300px!important;
height:40px!important;
background:#ffffcc!important;
width:200px;
height:20px;
background:#645930;
}
</style>
<!--
有人說 IE 不支援 !important
就我測試的結果
只有 IE6 不支援
不過 IE6 這垃圾瀏覽器很多東西都不支援
我一點也不訝異
-->

id 大於 class

由於 id 具有不可重複性
而 class 則是可重複的
故 id 層級上大於 class
若一個元素同時有 id 跟 class 兩種屬性
且樣式有所衝突時
id 優先權大於 class
<style type="text/css">
#ResetCssTestID {
width:200px;
height:20px;
background:#645930;
}
.ResetCssTestClass {
width:300px;
height:40px;
background:#ffffcc;
}
</style>

<div id="ResetCssTestID" class="ResetCssTestClass">生まれ変わろうよ 人生を初期化(りせっと)しよう</div>

Danny Roberts

Igor + André

Kirsten Deirup

KIRSTEN DEIRUP

伊島薰(Izima kaoru)

Izima Kaoru on artnet

Gerald Brom

Brom
CGSociety - BROM