SCSS 語法介紹

SCSS(Sassy CSS)是 Sass 的一種語法,它擴展了 CSS,提供了一些強大的功能,如變量、嵌套、Mixin、繼承、運算等,使樣式開發更加靈活和高效。SCSS 是 CSS 的超集,這表示所有有效的 CSS 代碼也是有效的 SCSS 代碼。

以下是 SCSS 語法的詳細介紹:

1. 變量 ($ 符號)

SCSS 支持變量,變量可以存儲顏色、字體、尺寸等值,並在樣式表中重複使用。

scss 範例:

$primary-color: #3498db;
$font-stack: Helvetica, sans-serif;
$base-margin: 10px;

body {
font-family: $font-stack;
color: $primary-color;
margin: $base-margin;
}
css 結果:

body {
  font-family: Helvetica, sans-serif;
  color: #3498db;
  margin: 10px;
}

2. 嵌套

SCSS 支持選擇器的嵌套,這使得樣式層次結構更加清晰,並且可以模仿 HTML 結構進行樣式設計。

scss 範例:

nav {
ul {
list-style: none;
}

li {
display: inline-block;
}

a {
text-decoration: none;
color: $primary-color;

&:hover {
text-decoration: underline;
}
}
}
css 結果:

nav ul {
  list-style: none;
}

nav li {
  display: inline-block;
}

nav a {
  text-decoration: none;
  color: #3498db;
}

nav a:hover {
  text-decoration: underline;
}

3. 父選擇器引用 (& 符號)

在嵌套中,& 用來引用父選擇器。這在處理偽類、偽元素或修改父元素樣式時非常有用。

scss 範例:

.button {
display: inline-block;
padding: 10px 20px;

&:hover {
background-color: darken($primary-color, 10%);
}

&.active {
background-color: $primary-color;
}
}
css 結果:

.button {
  display: inline-block;
  padding: 10px 20px;
}

.button:hover {
  background-color: #2980b9;
}

.button.active {
  background-color: #3498db;
}

4. Mixin(混合)

Mixin 是一種可以重複使用的樣式塊,類似於函數。你可以通過 @mixin 來定義 Mixin,並使用 @include 來調用。

scss 範例:

@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}

.button {
@include border-radius(10px);
}
css 結果:

.button {
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  border-radius: 10px;
}

5. 繼承 (@extend)

SCSS 支持繼承樣式,這樣可以讓一個選擇器繼承另一個選擇器的樣式。

scss 範例:

.message {
padding: 10px;
border: 1px solid #ddd;
color: #333;
}

.success {
@extend .message;
border-color: green;
}

.error {
@extend .message;
border-color: red;
}
css 結果:

.message, .success, .error {
  padding: 10px;
  border: 1px solid #ddd;
  color: #333;
}

.success {
  border-color: green;
}

.error {
  border-color: red;
}

6. 運算

SCSS 支持數字、顏色、字串等運算,可以在樣式中進行加減乘除或顏色操作。

scss 數字運算:

$base-padding: 10px;

.container {
padding: $base-padding * 2;
}
css 結果:

.container {
  padding: 20px;
}
scss 顏色運算:

$primary-color: #3498db;

.button {
background-color: lighten($primary-color, 10%);
}

.alert {
background-color: darken($primary-color, 10%);
}
css 結果:

.button {
  background-color: #5dade2;
}

.alert {
  background-color: #2980b9;
}

7. 條件與循環

SCSS 允許使用條件語句和循環來控制樣式的生成。

scss: @if 和 @else 條件:

$theme: light;

body {
@if $theme == light {
background-color: white;
color: black;
} @else {
background-color: black;
color: white;
}
}
css 結果:

body {
  background-color: white;
  color: black;
}
scss: @for 循環:

@for $i from 1 through 3 {
.col-#{$i} {
width: 100% / $i;
}
}
css 結果:

.col-1 {
  width: 100%;
}

.col-2 {
  width: 50%;
}

.col-3 {
  width: 33.3333%;
}

8. 部分(Partials)與導入

SCSS 支持將樣式拆分成多個文件,然後使用 @import 導入它們。這樣可以讓代碼更具結構性。

假設你有一個 _variables.scss 文件:

scss

// _variables.scss
$primary-color: #3498db;

在主 SCSS 文件中導入:

scss

// styles.scss
@import 'variables';

body {
color: $primary-color;
}
css 結果:

body {
  color: #3498db;
}

注意:使用 @import 時,導入的文件名需要以 _ 開頭,這樣它不會被單獨編譯成 CSS 文件。

9. 插值 (#{})

插值用來將變量或運算結果插入到選擇器或屬性中。

scss 範例:

$size: large;

.icon-#{$size} {
font-size: 32px;
}
css 結果:

.icon-large {
  font-size: 32px;
}

10. 顏色函數

SCSS 提供了大量的內建顏色函數來操作顏色值,比如 lighten、darken、fade-in、fade-out 等。

scss 範例:

$primary-color: #3498db;

.button {
background-color: lighten($primary-color, 20%);
border-color: darken($primary-color, 10%);
}

小結

SCSS 提供了許多強大的功能,讓你可以以更具模組化和可維護性的方式來編寫樣式。這些功能包括:

變量:存儲重複使用的值。
嵌套:更清晰的層次結構。
Mixin 和繼承:重複使用樣式片段,避免代碼重複。
運算:在樣式中進行數值和顏色運算。
條件和循環:動態生成樣式。
這些功能幫助開發者更高效地管理樣式表,特別是在大型項目中,SCSS 可以顯著提高開發和維護的效率。如果你有更多問題,隨時告訴我!

回魂

文章:蔡健發 (2024), 殯儀手記「回魂」

在中國傳統文化中,「回魂夜」是指亡者在去世後的特定夜晚回到家中探望親屬的時刻。許多人誤會認為回魂夜發生在亡者去世後的第七天,但實際上,具體日期通常由師傅根據陰曆及亡者的生辰八字來計算。關於回魂夜當晚,家人是否應該留在家中,不同地區有著各自的看法。以下我們將探討香港地區的回魂夜習俗,並分析家人是否應留在家中的各種原因。

回魂日期和時間

回魂的日期和具體的時間範圍,通常需要由師傅根據亡者的生辰八字、陰曆等因素來進行計算。回魂的方向、從哪方來和哪方去也都是由師傅來確定,這些細節都關乎儀式的嚴謹性和對亡者靈魂的尊重。

通常,回魂的時間會在零晨前後的時分開始。因此,家屬一般會在黃昏之後如常用膳,而在入黑之後才開始準備祭品和進行拜祭儀式,這段時間被視為先人回家的重要時刻。家人會在此時進行點香、獻上供品等祭祀活動。

祭品通常會放置到第二天天亮或先人離開的時間,這樣可以確保亡者的靈魂能夠享用供奉的食物並感受到家人的敬意。這段時間,家人會遵循傳統習俗,保持安靜並避免打擾亡者。

拜祭回魂的儀式

在回魂夜的拜祭儀式中,家人會在廳中設置一個簡單的供奉場景,具體的步驟如下:

  1. 廳中放置一張檯和三張椅
    檯子象徵供桌,三張椅子則是為亡者和隨行的鬼差準備的座位,讓他們有「地方」歇息。
  2. 檯上放置香爐
    在檯上擺放香爐,插上已燃的大香,這些香煙象徵引導亡者靈魂回家。
  3. 點燃洋燭
    在供桌上點燃紅色洋燭,以作祭拜。
  4. 燒一份回魂衣以作引魂
    家人在開始拜祭時,會燒一份回魂衣紙,這是為了引導亡者靈魂回家並確保其能夠順利接收到家人的供奉。

拜祭用品

在回魂夜的拜祭儀式中,燒紙錢和衣紙是重要的一部分。以下是常見的拜祭用品:

  • 回魂衣紙 一式兩份
    這是專門為回魂儀式準備的衣紙,分別在開始拜祭和第二天完成拜祭時燒化。
  • 金、銀、元寶、溪錢、往生錢
    這些紙錢和金銀元寶是供奉亡者在陰間使用的財物,祈求亡者能夠在另一個世界中生活安穩、順利往生。

香港地區的回魂夜習俗

在香港,回魂夜的習俗仍然保留了許多中國傳統文化的元素,儘管都市生活的變遷也對其產生了一定影響。香港人普遍認為,回魂夜是亡者靈魂回家探望家人的時刻。家人通常會留在家中,並遵守一些特定的規矩,以避免與亡者的靈魂及其隨行的鬼差相衝。

  1. 保持安靜,不打擾亡者
    回魂夜當晚,家人通常會早早入睡,並保持安靜,避免製造過大的噪音,讓亡者能夠安心探望。家人會避免半夜走動或走出房間,以免與亡者的靈魂或鬼差相遇。
  2. 是否需要關燈?
    回魂夜當晚是否需要關燈,並無硬性規定。通常只需按照平時的生活習慣即可,無需特意變更燈光安排。例如,若家人平時習慣關燈入睡,當晚依然可以保持這一習慣,讓家中的氛圍顯得自然且安靜。
  3. 利器避衝
    根據傳統習俗,家人會在床邊放置剪刀或小刀等利器。若半夜需要起床,會先將這些利器掉在地上,提醒亡者和鬼差迴避,避免與亡者靈魂相衝。現代生活中,有些家庭會改用金屬鎖匙代替,以製造金屬聲音達到同樣的效果。
  4. 家人外出避忌
    部分家人可能會選擇在回魂夜當晚外出,這並非因為擔心具體的事情,而是出於對神秘氣氛的恐懼。他們認為外出過夜能減輕心理壓力,讓自己感到更安心。
  5. 拜祭食物不食用
    在回魂夜的拜祭活動中,家人通常會準備亡者生前喜愛的食物作為供品。然而,這些拜祭的食物一般不會用作食用。出殯之前,所有拜祭先人的食品都會被棄置,並不會食用。一般的習慣是將餐具與供品一同丟棄,這就是為什麼經常使用即棄餐具來進行拜祭。

回魂祭品準備

在回魂夜的祭祀活動中,祭品的準備至關重要。這些供品通常是亡者生前喜愛的食物,並且有特定的擺放方式和禁忌。以下是常見的回魂祭品清單:

  1. 鯪魚原條生煎(不打鱗不劏肚)
    整條生煎鯪魚不會去鱗、不劏肚。
  2. 熟鴨蛋或咸蛋三隻(留殼免切)
    三隻熟鴨蛋或咸蛋保留蛋殼,不切開,分別放置在三碗白飯上。
  3. 齋菜三碗
    三碗齋菜是常見的素食供品。
  4. 燒鴨一碟
    一碟燒鴨,象徵豐盛與誠意。
  5. 生前喜愛的食物數碟(忌供牛肉)
    供奉亡者生前喜愛的食物,但要格外注意避免供奉牛肉。這是因為根據中國傳統信仰,亡者回魂時通常會有鬼差(如牛頭馬面)隨行,若供奉牛肉,會被視為對鬼差的極大不敬,可能會觸怒他們,從而影響亡者的安寧。因此,避免牛肉是出於對鬼差的尊敬,確保祭祀過程的順利。
  6. 酒杯三隻,裝滿白酒
    三隻酒杯裝滿白酒,擺放在供桌上作為祭品。並向先人敬酒。
  7. 筷子三對
    三對筷子與酒杯一同擺放,象徵亡者能「享用」供品。
  8. 紅色洋燭
    紅色洋燭點燃,作為祭拜用品。
  9. 大香一支,香爐一個
    大香插入香爐,供奉先人
    值得注意的是,按照傳統習俗,香爐在出殯後會被棄置,不再使用。這是因為香爐作為出殯前祭祀用品,在出殯後將一併丟棄,以示儀式的圓滿結束

家人選擇留在家中的原因

  1. 對亡者的尊重
    回魂夜是表達哀思與敬意的重要時刻。家人通常會準備亡者生前喜愛的食物和祭品,象徵讓亡者靈魂「享用」。留在家中進行祭祀活動,是對逝者的一種尊重與紀念,讓亡者感受到家人對他的懷念。
  2. 避免亡者依戀現世
    傳統信仰認為,亡者回魂時若看到家人仍在活動,可能會對現世產生眷戀,不願離去,這會影響亡者的輪回。家人選擇留在家中,但保持安靜,避免與亡者靈魂互動,讓其安心離開。
  3. 完成祭祀儀式
    在回魂夜,家人會進行點香、燒紙錢等一系列祭祀活動。這些儀式需要家人在場進行,以便引導亡者的靈魂回家,並確保其安息。留在家中也是為了完成這些重要的傳統儀式,讓亡者靈魂得到寧靜。

家人選擇不留在家中的原因

  1. 躲避凶煞
    一些傳統觀念認為,亡者回魂時可能會帶著「凶煞」的力量,這種力量可能對家人不利。部分家人為了避免潛在的風險,會選擇外出過夜,避免與亡者靈魂相遇,從而避免不必要的衝突或不幸。
  2. 避免干擾亡者的靈魂
    在某些地區的習俗中,人們相信家人在回魂夜應該外出,這樣可以讓亡者靈魂自由地回家探望,而不會因家人的存在而感到壓力或干擾。這樣的做法是為了讓亡者靈魂順利完成回魂之旅,無需擔心被打擾。
  3. 心理上的避忌
    對於一些家人來說,回魂夜是一個神秘且充滿未知的時刻,這可能讓人感到不安或恐懼。出於這種心理上的避忌,一些家庭會選擇在回魂夜外出,避免與亡者靈魂相遇。這種做法更多是基於心理上的舒適感,而非傳統儀式需求。

總結

回魂夜家人應否留在家中,取決於家庭的信仰、習俗以及心理需求。在香港地區,許多家庭仍然選擇遵循傳統,留在家中進行祭祀,以表達對亡者的尊重與懷念。然而,另一些家庭則會選擇外出,避免與亡者靈魂相遇,或是出於對凶煞的避忌。無論選擇哪種方式,核心都是家人對逝者的尊重與懷想。隨著現代生活的節奏變化,香港的回魂夜習俗也逐漸融入了現代元素,反映了文化的多樣性與靈活性。


殯儀服務

為先人安排好身後事,安排靈堂及火葬葬事儀。

請聯絡:蔡先生,91413448

CSS 組合器( CSS combinators )

CSS Combinators 包括:

  1. 後代選擇器(Descendant Combinator): 「 」
  2. 子選擇器(Child Combinator):「 > 」
  3. 相鄰兄弟選擇器(Adjacent Sibling Combinator):「 + 」
  4. 一般兄弟選擇器(General Sibling Combinator):「 – 」
  5. 組合選擇器(Group Selector):「 , 」

1. 後代選擇器(Descendant Combinator):(空格)

  • 用法A B
  • 作用:選擇所有位於 A 元素內部的 B 元素,不論它們之間有多少層嵌套。
  • 例子
<div class="container">
  <p>我是第一個段落</p>
  <div>
    <p>我是嵌套的段落</p>
  </div>
</div>
.container p {
  color: red;
}

codepen 實測

結果:選擇 .container 內的所有 p 元素,無論它們是否直接位於 .container 內。例子中,兩個 p 元素都會變成紅色。

2. 子選擇器(Child Combinator)>

語法A > B

  • 作用:選擇 A直接子元素 B,不會選擇後代元素(孫元素及更深層次的後代元素)。
  • 例子
<div class="container">
  <p>我是直接子元素</p>
  <div>
    <p>我是嵌套的段落</p>
  </div>
</div>
.container > p {
  color: blue;
}

codepen 實測

結果:只會選擇 .container 的直接子元素 p,即第一個 p 會變成藍色。嵌套在 div 中的第二個 p 不會被選中。

3. 相鄰兄弟選擇器(Adjacent Sibling Combinator)+

語法A + B

  • 作用:選擇緊接在 A 元素後面的相鄰兄弟元素 B,中間不能有其他元素。
  • 例子
<h1>標題</h1>
<p>我是第一個段落</p>
<p>我是第二個段落</p>
h1 + p {
  color: green;
}

codepen 實測

結果:只會選擇緊接在 h1 後面的第一個 p,即第一個 p 會變成綠色。第二個 p 不會被影響,因為它不是緊鄰的兄弟元素。

4. 一般兄弟選擇器(General Sibling Combinator)~

語法A ~ B

  • 作用:選擇 A 元素後面的所有兄弟元素 B,不要求它們緊鄰在一起。
  • 例子
<h1>標題</h1>
<p>我是第一個段落</p>
<p>我是第二個段落</p>
<div>我是另一個元素</div>
<p>我是第三個段落</p>
h1 ~ p {
  color: orange;
}

codepen 實測

結果:所有位於 h1 後面的 p 元素都會變成橙色,包括第一個、第二個和第三個 p,即使它們中間隔著其他元素(如 <div> )。

組合選擇器(Group Selector),(逗號)

語法A, B, C

  • 作用:將多個選擇器組合在一起,使它們共享相同的樣式。
  • 例子
<h1>我是標題</h1>
<h2>我是副標題</h2>
<p>我是段落</p>
h1, h2, p {
  color: purple;
}

codepen 實測

結果:h1、h2 和 p 都會變成紫色,因為這三個選擇器共享相同的樣式。

6. 否定偽類選擇器(:not)(雖然不是組合器,但它常用於選擇元素時排除特定元素)

語法:not(A)

  • 作用:選擇除了 A 之外的所有元素。
  • 例子
<ul>
  <li>項目 1</li>
  <li>項目 2</li>
  <li class="special">特殊項目</li>
  <li>項目 3</li>
</ul>
li:not(.special) {
  color: gray;
}

codepen 實測

結果:除了類為 specialli 元素外,所有的 li 元素都會變成灰色。

7. 伺機選擇器(Universal Selector)*

語法*

  • 作用:選擇所有元素。
  • 例子
<div>
  <p>段落 1</p>
  <p>段落 2</p>
</div>
* {
  margin: 0;
  padding: 0;
  color: red;
}

codepen 實測

結果:所有的元素(包括 divp 等)都會把內邊距和外邊距設置為 0,並且文字顏色為紅色。

小結:所有 CSS 組合器及部分常用選擇器

  1. (空格):後代選擇器,選擇 A 內部的所有 B 元素。
  2. >:子選擇器,選擇 A 的直接子元素 B
  3. +:相鄰兄弟選擇器,選擇緊接在 A 後面的兄弟元素 B
  4. ~:一般兄弟選擇器,選擇 A 之後的所有兄弟元素 B
  5. ,:組合選擇器,將多個選擇器組合在一起,使它們共享相同的樣式。
  6. :not:否定偽類選擇器,用來排除特定元素。
  7. *:伺機選擇器,選擇所有元素。

Power over Ethernet, PoE 的標準電壓

PoE 的標準電壓有以下幾種:

PoE (IEEE 802.3af):
標準電壓: 48 V DC
最大功率: 15.4 W

PoE+ (IEEE 802.3at):
標準電壓: 48 V DC
最大功率: 30 W

PoE++ (IEEE 802.3bt):
標準電壓:
Type 3: 48 V DC
Type 4: 54 V DC

最大功率:
Type 3: 60 W
Type 4: 100 W

所以對於標準的 PoE 設備而言,常見的標準電壓是 48 V DC,這是 IEEE 802.3af 和 802.3at 標準中指定的。後來的 802.3bt 標準則提供了更高功率的 PoE++ 選項。

Linux Find Command

ExamplesCreated by @dan_nanni on Instagram

find . -name “my.txt” find all files named “my.txt”

find .-type d-name “mydir” find all directories named “mydir”

find . -type f-name “*.jpg” find all “.jpg” files

find . -type f-size +100M find all files larger than 100MB

find . -type f-size +100M-size -500M find files with a specific size range

find . -type f-mtime-1 find all files modified in last 24 hours

find .-mtime-7-mtime +1 find files modified betn yesterday & a week ago

find . -type f-name “*.tmp” -delete find and remove all “.tmp” files

find . -type f-perm 0777 find all files with “777” permission

find . -type f-perm-u+x find all files executed by the user

find . -type f-name “*.txt” -exec cat {} \; find and cat all “*.txt” files

find . -type f-amin-60 find all files accessed within the last hour

find . -type f-user dan find all files owned by the user “dan”

find .-type f-ctime -2 find files created within last 2 days

find .-maxdepth 1 -name “my.txt” search only in current dir

find . -type f-name “*.txt” | xargs chmod 644 chmod all “.txt” to 644

find . -type f-name “*.jpg” | xargs tar -cf img.tgz archive all “.jpg” files

find . -type f-name “*.png” | xargs -I {} mv {} /tmp move all “.png” files

find . -type f-name “*.txt” | xargs grep “Hello” search for Hello in “.txt”

find .-xtypel-delete find and remove all broken symbolic links

find .-type d-empty-delete find and remove all empty directories

find .-newermt “2024-01-01”! -newermt “2024-03-15” use a time range

做人要學會保護自己

  1. 你不讓他佔便宜,就是你自私。
  2. 你不接受他們的價值觀,就是你固執。
  3. 你不肯接受他們的指揮,就是你強勢。
  4. 你一旦站在道理上不肯退讓了,就是你態度問題。
  5. 你差到他們的陰謀時,你太敏感了。
  6. 他們一旦發現你沒有那麼好騙,就是你們不懂事。
  7. 你一旦要勝利了,他們發現了就要輸,你就是世界第一大反派。

別因為一時的成功,而得以忘形

別因為一時的成功,而得以忘形 ,隨便發表自己的個人想法,從而導致身邊的人感受不良好,不舒服。這會直接為自己造成重大影響,損害個人形象。我們必須要記住,沒有人喜歡聽另一個人講大道理,特別是這些道理他們不接受,為了自己,讓自己成為一個謙虛的人謙卑的人,就是保護自己最好的方法。 別忘記,當你成功時,同時代表人家失敗。人家為什麼要高興呢? 不喜歡人家過得比自己好,是很多人的內心世界,沒必要讓這些人不高興,以為自己造成傷害。再溝,只不過是一些少許的成就,有必要炫耀嗎?就算要炫耀,都必須要對自己有幫助下,才有意義,傷害自己毫無意義也可言。