2019年5月29日 星期三

(單元11-20)使用 HTML、CSS 開發一個網站 筆記



單元18:CSS Reset,讓所有瀏覽器都長得一致
在沒有任何設定的情況下,CSS有一套原始的預設值。若想刪除預設格式,可至CSS Tools: Reset CSS - Meyerweb網站,將第一頁的程式碼丟到空白的CSS頁面將格式歸零。
說明:將網站的邊界值歸零(Chrome的原設定為8px)


單元19:行內元素&區塊素的差異
每一個標籤的顯示方式皆有屬於自己的預設值,
例如,標題、列表的預設值皆為block,段落的預設值則為inline。

a{display:block;}
說明:以區塊樣式呈現指定連結(指定文字佔滿整排行距,進而使得文字內容自動斷行)

a{display:inline;}
說明:以並排樣式呈現指定連結(指定文字於行內並排顯示,直到佔滿行距才會自動換行)


單元20:DIV 與 SPAN 的使用時機、CSS 後代選擇器
<div></div>
說明:div為division的縮寫(可以翻譯為一個區塊或全域的意思),其樣式的原始值為區塊元素。使用上能以div將標題(h)及段落(p)包起來,做區塊性的樣式調整。
例如

若想針對內容標題做調整,可以這樣寫(此語法稱為後代選擇器)
.style2 h2{color:blue;}

<span></span>
說明:span為一段距離的意思,其原始值為行內元素。

若想針對段落內的特定文字做樣式修改,可以這樣寫
.style2 p span{color:red;font-size:32px;}
說明:在style2當中,被span包起來的文字內容,以紅色及32px字體大小作呈現。

(單元21-30)使用 HTML、CSS 開發一個網站 筆記

單元21:使用 margin、padding 來推擠距離
.style1 p{margin-bottom:30px;}
說明:margin是留白的意思,是在段落下方「向外推」30px的間距。

.style{padding-left:15;padding-right:15;}
說明:padding是填充的意思,是在邊界指定區塊的左右兩側「向內推」15px的間距。


單元22:Box Model(盒模型)
透過Box model,開發者可以更瞭解padding、border、margin標籤之間的差異。

<div class="box"></div>
說明:上述文字為HTML頁面box model的語法

.box{
width:300px;
height:300px;
padding:15px;
border:10px solid red;
margin-bottom:30px;
background:black;
color:white;}

說明:上述文字為CSS頁面box model的語法。width與height為box model的主體,當你輸入標題與段落時,文字內容會呈現在主體範圍內。padding為主體與border之間的距離。border為主體的邊界。而margin則是兩個主體之間的距離。

當開發者將background設定為黑色時,主體與padding會呈現同一個顏色(即黑色)。border在沒有設定顏色的情況下,會呈現透明狀。

單元23:使用 margin: auto 讓版型置中
<div class="wrap">
<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>

</div>
說明:在HTML頁面以wrap標籤將header、content、footer打包。

.wrap{width:900px;margin:0 auto 0 auto;}
說明:設定打包範圍為900px,上右下左的外距分別是0 auto 0 auto(上下的外距為0,左右的外距為自動置中)。

.header{height:100px;background:black;}
說明:設定頁眉高度為100px,背景為黑色。

.content{height:300px;background:orange;}
說明:設定內文高度為300px,背景為橘色。

.footer{height:50px;background:pink;}
說明:設定頁腳高度為50px,背景為粉紅色。


單元25:不想算盒模型的推擠?試試 CSS3 box-sizing 吧!
在撰寫「盒模型」時,為了讓網頁有更好的可讀性,開發者除了width與height以外,時常會撰寫padding、border等語法以美化頁面。但每次在撰寫padding與border後,會發現版面的寬度與高度超出預期範圍。

以style1為例,其寬度與高度各為150px,但再加入padding與border左右各10px的設定值以後,其寬度就變為190px了。若開發者要將寬度值固定在150px,則需將原本的width改為110px。

若不想浪費時間計算盒模型的寬度,可參考.style2加入box-sizing:border-box的語法。
讓你不管如何調整padding與border的參數,其寬高都能與width、height的原始值一致。

.style1{
width:150px;
height:150px;
background:black;
padding-left:10px;
padding-right:10px;
border-left:10px solid yellow;
border-right:10px solid yellow;}

.style2{
width:150px;
height:150px;
background:black;
padding-left:10px;
padding-right:10px;
border-left:10px solid yellow;
border-right:10px solid yellow;
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;}

備註:前綴詞-moz與-webkit是讓box-sizing能兼容舊版瀏覽器的語法。
-moz:讓舊版的Firefox瀏覽器也能正常瀏覽。
-webkit:讓舊版的Chrome瀏覽器也能正常瀏覽。
若要套用box-sizing到網頁中的所有盒模型,可以在CSS頁面的最前面加入*{}語法,如下
*{box-sizing:border-box;}

單元26:CODEPEN:線上撰寫網頁服務
透過Codepen線上服務,使用者可將程式碼分享給其他開發人員。
Settings:變更HTML、CSS之基礎設定值。
ChangeView:變更欄位樣式。
Save:按下Save後,網址後方會出現一串代碼,此時即可將此代碼分享給其他人。
Export:檔案輸出。


單元27:Float 浮動定位技巧
說明:在CSS頁面加入float:left即可讓欄位並排。

.wrap{
margin:0 auto;
width:1000px;}

.box{
width:200px;
background:black;
height:50px;
float:left;}

.box2{
width:800px;
background:pink;
height:50px;
float:left;}

說明:<div class="wrap">將box及box2包起來,所以wrap的寬度1000px為兩者之父元素。
在box與box2寬度相加不超過1000px的情況下,兩個欄位會並排置中。
但若兩者寬度超過1000px,則後者(box2)欄位將會被擠到下方。

備註:margin:0 auto為板塊置中的語法。

單元28:使用 clear 清除浮動
因為Menu與content是用float:left與float:right的浮動語法去作排版的,其浮動效果並沒有一個明確的邊界。因此當我們在menu與content下方寫入footer時,若menu與content的寬度不是滿版格式,footer的設定值就會自動跑到menu與content之間,造成版面的錯亂。

此時我們可以在html頁面中,增加<div class="clearfix"></div>的語法,並在css當中加入.clearfix{clear:both;}。讓Menu與Content的浮動效果有一個明確的邊界,將footer的設定值與其隔絕。這樣頁尾就能正常顯示啦。

單元29:兩欄式、三欄式版面定位技巧
其實就是在div欄位裡應用margin、padding作排版而已。

單元30:設計並排式選單
.topmenu{height:25px;}
說明:設定topmenu的高度為25px

.topmenu li{float:left;}
說明:設定topmenu的選項為並排選單,讓所有<li></li>連結移動到同一行裡。

.topmenu li a {
display:block;
width:200px;
background:green;
color:white;
text-align:center;
text-decoration:none;}
說明:設定topmenu的選項連結為"區塊顯示"並設定其高度、背景顏色、文字顏色、並使文字置中、取消下底線。

.topmenu li a:hover{background:orange;}
說明:設定topmenu的選項連結,當指標滑過時變為橘色。

(單元???) 使用 HTML、CSS 開發一個網站 筆記


a:active=此標籤能讓使用者的鼠標在"點選"特定段落時,讓文字的顏色及底線有所改變。
a:hover=此標籤能讓使用者的鼠標在"滑至"特定段落時,讓文字的顏色及底線有所改變。


dotted=由點組成的線
dashed=由線條組成的線

2017年8月5日 星期六

2017年08月06日 實驗22:有獎徵答

實驗22:有獎徵答

功能描述:
此電路設有2組觸控按鈕,分別是A鈕及B鈕。在有獎徵答比賽裡,參賽者雙方可透過桌面上的按鈕作為搶答的依據,當參賽者拍下按鈕後,桌面上的燈號將發出耀眼的紅光。與此同時,當邏輯晶片的OR閘感應到電源接通後,將阻止其他參賽者再次搶答。而下一次的機會則待主持人撥動「復位開關」後才能再次啟動。

問題:
(1)   如何透過邏輯晶片判斷誰先按下開關呢?
在沒有任何人觸碰「搶答鈕」之前,邏輯晶片的OR1OR2,分別有一組來自上拉電阻的正
(高電平),及一組來自OR3的負電源(低電平)。當選手A按下觸碰開關後,使得OR1出現兩
組邏輯低電平,因而以低電平輸出觸動定時器的引腳3(輸出),點亮LED燈。
(備註:當電壓接近0V時稱為邏輯低電平,反之若接近5V則稱為邏輯高電平)

(2)   當第一位參賽者按下觸動開關後,邏輯晶片是如何阻擋其他參賽者再次搶答的呢?
(3)   在主持人撥動「復位開關」前,為什麼LED燈會一直亮著?
當「定時器1」受到兩組邏輯低電平觸發後,其引腳3(輸出)轉為高電平,並點亮LED燈,同時反饋至OR3使接腳電平呈現一高一低的狀態。而在邏輯晶片74HC08的判斷裡,只要有一組輸入呈現高電平,則輸出就會是高電平,因此當OR3邏輯反饋回OR1時,就會呈現一高一低的狀態,而OR2則是兩高的狀態,所以LED燈在第一次啟動後,將呈現鎖存狀態。
(備註:只有當邏輯晶片收到兩組低電平,才會觸發555定時器及LED)

(4)   「復位開關」如何運作?
A鈕及B鈕的上引腳互通,並連接復位開關的上引腳。復位開關的中引腳接地,下引腳連接兩
組「555定時器」的引腳4(重置)。紅色LED持續發光是因為「555定時器」的引腳6(閥值)直接
接地的關係。引腳6接地時,定時器會呈現「雙穩態模式」,若無人啟動會處於關閉裝態,若
有人啟動則會點亮紅色LED燈。


2017年7月31日 星期一

2017年07月31日 實驗21:精密的密碼鎖

實驗21:精密的密碼鎖
本次實驗以「74CH08邏輯晶片」製作電子密碼鎖。當使用者依序按壓觸控開關後,將觸發定時器及繼電器,並導通末端之電子產品(在此以三用電表作測試)

功能描述:
此電路共有8個觸控按鈕,麵包版最上方的是A鈕、右側由上而下為BCD鈕,左側由上而下為EFGH鈕。這八個按鈕又分為「啟動按鈕」與「虛擬按鈕」,啟動按鈕與邏輯晶片連接,只有在輸入正確指令後,電流才會通往接通555定時器及繼電器,並開啟你所要保護的電子產品。8個觸控按鈕共有幾千種的排列組合,因此在破解密碼上,其實比想像中的還要困難許多。

為釐清「邏輯晶片、555定時器、繼電器」的線路佈置圖,以下將公布此電路的啟動方式。
(1)   按下A(並在解鎖過程中持續按壓),此時紅色LED燈會被啟動。
(2)   緊接著依序按下EFGH鈕,此時會看到綠色LED燈被點亮,並同時聽到繼電器啟動的聲音。

問題:
(1)   要如何設定密碼呢?
實驗21的電路被區分為三個部分:
第一部分是電源及虛擬按鈕,當按下A鈕時9V電源會通往右側「LM7805穩壓器」的輸入端,並從下方接腳輸出5V電源,供電給「74CH08邏輯晶片」(此晶片的作業電源為2~6V)BCD鈕的兩端接腳分別接至正極及負極,並無連接邏輯晶片,在此並無功能可言,形同虛設的按鈕。

第二部分是活動按鈕及邏輯晶片,「74HC08邏輯晶片」共計有14支接腳,其中7是接地,14是正極。
另外12支接腳分為四組,每組有"ABY 3支接腳,第一組的1A連接按鈕E(+5V電源)1B連接10K電阻(下拉電阻)1Y連接第二組的2B,第二組的2A連接按鈕F2Y連接4A,第三組的3B連接10K電阻及按鈕G3A連接4Y3Y連接330電阻並觸發電晶體,第四組的4B連接10K電阻及按鈕H(這部分用文字敘述有點複雜)

第三部分是輸出,當我們解開「邏輯晶片」後, 3Y引腳會啟動電晶體,並觸發555定時器及繼電器,而繼電器則負責將電子產品解鎖。

(2)   解鎖後的開機時效為什麼是11秒呢?
定時器的持續時間是以引腳6RC網路來做控制的,解鎖後的開機時效為11秒,
是因我使用了1M電阻+10uF電容所產生的效果。

(其計算公式為1000K*10F*0.0011=11)


2017年7月23日 星期日

2017年07月23日 實驗19:反應測試儀

這次的實驗加入了三組「觸動開關」分別具有啟動、暫停與歸零的功能。
以下將逐步說明各開關的運作方式。

「啟動開關」功能描述:
按下「啟動開關」後黃色LED燈會亮起,7秒後會切換至紅色LED燈並啟動計數器。

問題:
(1) 為什麼是7秒鐘?
定時器的持續時間是以引腳6RC網路來做控制的,黃色LED燈之所以會在7秒後切換至紅色LED燈,是因為我用了330K電阻+22uF電容所產生的效果。
(其計算公式為330K*22uF*0.0011=7.986)

(2) 黃色LED燈為什麼會在7秒後切換至紅色LED燈?
當「啟動開關」透過引腳2觸發「555定時器(1)」後,引腳622uF電容會開始蓄電,直到電壓值達到6伏特才會停止。而22uF的電容要多久才會達到6伏特,則視電阻大小而定。
假設我要讓「555定時器(1)」在5秒後切換至紅色LED,則可將330K電阻,換為220K電阻。
(其計算公式為220K*22uF*0.0011=5.324)
備註:此配線方式為555定時器的單穩態模式(計時模式)

(3) 七段顯示器為什麼會在紅色LED燈亮起時同步計數呢?
我們將「定時器(1)」的引腳3(觸發),透過0.1uF電容,連接到「定時器(2)」的引腳4(重置)
這樣的連接方式將使得「定時器(2)」的輸出變為低電平,而低電平透過引腳3(觸發),連接到4026B計數器的引腳2(時脈關閉),將觸發七段顯示器開始計數。

「暫停開關」功能描述:
按下「暫停開關」後,七段顯示器(計數器)會出現定格的狀態。

問題:
(1) 為什麼計數器會停止呢?
當「定時器(2)」的引腳2透過「暫停開關」被觸發後,因引腳6(閥值)未連接電容,因此定時器將不會有蓄電(計時)的功能,而是將定時器切換為關閉。
備註:此配線方式為555定時器的雙穩態模式(切換模式)

「重置開關」功能描述:
按下「重置開關」後,三組七段顯示器(計數器)上的數字會瞬間歸零。

問題:
(1) 為什麼計數器會歸零呢?
「重置開關」的下接腳同時連接至4026B的三組引腳15(重置),並以10K電阻接到負極。
而其上接腳則接到「定時器(3)」的引腳4(重置),並直接連接正極。