iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
SideProject30

30天製作RWD個人品牌網站系列 第 13

Day13. 切版前知識(三) CSS介紹、選擇器、常用屬性

  • 分享至 

  • xImage
  •  

嗨~從今天開始是一系列的CSS內容,前一章說到瀏覽器會讀取HTML轉譯成視覺化網頁,並搭配CSS、JavaScript使用。CSS負責網頁呈現的樣式、外觀,JavaScript則控制元件的功能、行為。我一直覺得人是視覺動物,會喜歡美的、有趣的事物,所以CSS對於網頁來說很重要!他決定了一個人對於這個網頁的第一印象,要怎麼才能將設計稿完整的轉換成瀏覽器讀得懂的形式呢?一起來瞭解吧!

CSS

CSS

CSS,全名Cascading Style Sheets,又稱「階層式樣式表」,是一種用來為結構化文件(如HTML文件或XML應用)添加樣式的電腦語言。CSS不能單獨使用,必須與HTML或XML一起協同工作,才能達到他的價值。
-- 取自維基百科 CSS

CSS的組成格式

CSS的組成格式

  • 選擇器 - 要套用此樣式的元素。
  • 屬性 - 樣式屬性名稱,以「:」連結屬性值,在「:」左側。
  • 屬性值 - 此屬性要調整成的值,在「:」的右側。

整個屬性宣告結束後,以「;」結尾。

引入CSS

在網站中不一定會只套入一個CSS檔案,可以分成外部CSS自訂CSS,通常會在head標籤中引入,順序為先引入外部CSS再引入自訂CSS。

套用外部CSS設定:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--使用cdnjs引入 bootstrap樣式-->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
</head>

套用自訂CSS設定有3種方法:

  1. 直接在HTML元素中,以**「style」屬性加入樣式。
    這種方法每次只能指定給
    單一元素**,效率最差且會讓HTML畫面雜亂,不建議使用。
   <h1 style="color: blue;">Logo</h1>
  1. 在網頁中加入「style」標籤的區塊,並加入CSS樣式在其中。
    這種方式加入的樣式只會被當頁面套用,有一樣的樣式設定時,不同頁面就需要重複編寫,效率在兩者之間,但還是不高。建議碰到只有此單一頁面有特殊樣式時再使用。
  <style>
    p {
        color: red;
    }
</style>
  1. 分割出獨立CSS樣式檔案,並用link引入使用。
    這是最常態的方式,效率最高、方便修改及閱讀,只需一行程式就能輕鬆引入。建議使用。
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
     <!--引入獨立CSS樣式檔案 href=>檔案位置 -->
    <link rel="stylesheet" type="text/css" href="assets/css/style.css">
</head>

選擇器

CSS組成格式最前方是「選擇器」,是用來告訴瀏覽器此樣式應該套用給哪些元素。其實光是選擇器就能講一篇文章,但這裡就先提出幾個最常使用的吧!
CSS的選擇器表達方式是從外層到內層,越仔細、越內層的順序層級越高,內層的元素也會套用外層的樣式,但內層的樣式不會影響外層。

*

代表以下所有元素。

 <style>
*{
  box-sizing: border-box;
}
 <style>

p

代表套用給所有「標籤」為p的元素。

<p>這是文字區塊,相連的p標籤會換行</p>
  
<style>
p{
 color:red;
}
</style>

#abc

代表套用給指定id名稱為abc的元素。同一網頁頁面不應重複id

<div id="abc">abc的元素區塊</div>
 
<style>
#abc{
 color:red;
}
</style>

.abc

代表套用給所有「class」名稱為abc的元素

<div class="abc">abc的元素區塊</div>

<style>
.abc{
 color:red;
}
</style>

.abc .def

代表套用給class為abc的元素中,class為def的元素

<div class="abc">abc的元素區塊
    <div class="def"> <!--只有內層會被套用-->
        def的元素區塊
    </div>
</div>

<style>
.abc .def{
 color:red;
}
</style>

.abc , .def

代表套用給class為abc及def元素

<div class="abc"><!--兩個元素都會套用-->
    abc的元素區塊
</div>
<div class="def"> <!--兩個元素都會套用-->
    def的元素區塊
</div>

<style>
.abc , .def{
 color:red;
}
</style>

.abc > .def

代表套用給abc 直屬class為def之子元素,不能跳層級。

<div class="abc">
    abc的元素區塊
    <div class="def"> <!--此def被套用樣式-->
        def的元素區塊
    </div>
    <div class="aaa"> 
       <div class="def"> <!--不能跳層級,所以此def不會被套用樣式-->
            def的元素區塊
        </div>
    </div>
</div>

<style>
.abc > .def{
 color:red;
}
</style>

.abc + .abc

代表套用給class為abc之後,class為abc的兄弟元素

<div class="abc">
    abc的元素區塊
</div>
<div class="def"> <!--此def被套用樣式-->
    def的元素區塊
</div>

<style>
.abc + .abc{
 color:red;
}
</style>

.abc[data-color]

代表套用給class為abc且同時帶有data-color屬性的元素

<div class="abc" data-color="red"><!--套用樣式-->
    abc的元素區塊
</div>

<style>
.abc[data-color]{
 color:red;
}
</style>

ul .abc:nth-child(n)

代表在ul中class為abc元素中,第n個元素

<ul>
    <li class="abc">abc的元素區塊</li><!--只有第一個會被套用-->
    <li class="abc">abc的元素區塊</li>
    <li class="abc">abc的元素區塊</li>
</ul>

<style>
.abc:nth-child(1){
 color:black;
}
</style>

.abc:hover

代表在class為abc元素滑鼠懸停時套用樣式

<div class="abc"><!--滑鼠懸停在abc時套用樣式-->
    abc的元素區塊
</div>

<style>
.abc:hover{
 color:black;
}
</style>

常用屬性

CSS可設定的屬性很多,今天先主要提出最常使用的幾個屬性,不同屬性也有自己搭配的屬性值,想更詳細了解,可以參考W3School

區塊

background:url(../img/land.png)no-repeat bottom center; 
/*背景:(background-image)背景連結位置|(background-repeat)是否重複|(background-position)垂直對其、水平對齊 */
background-color: #ffffff; /*背景顏色*/
background-size: cover; /*背景大小*/
width: 100%; /*寬度*/
height: 100vh; /*高度*/
display: block; /*顯示方式*/ 
border: 1px solid #777777; /*邊框:(border-weight)寬度|(border-style)類型|(border-color)顏色 */ 
border-radius: 10px; /*弧度*/ 
box-shadow: 0 0 10px 10px rgba(0,0,0,0.5); /*陰影:x軸位移,y軸位移,模糊度,擴散,顏色 */ 
opacity: 0.8; /*不透明度*/ 

文字

font-family: "微軟正黑體", sans-serif; /*字型-越前面的優先*/ 
font-size: 16px; /*字體大小*/ 
font-weight: bold; /*文字粗度*/ 
color: #202020; /*文字顏色*/ 
text-align: center; /*文字對齊方式*/ 
line-height: 1.5; /*行高*/ 
letter-spacing: 1px; /*字距*/ 

區塊間隔

CSS佈局主要基於「box模型」,元素之外為margin,元素之內為padding,中間為邊框border,由此方式來定義與其他元素的間隔。
box模型

padding: 10px; /*元素內上下左右各10px距離*/ 
margin: 5px auto; /*元素外上下各5px距離,左右平均分配*/ 

排列位置

position: relative; /*元素位置*/ 
top: 10px; /*離上方距離*/ 
bottom: 20px;  /*離下方距離*/ 
left: 50%;  /*離左方距離*/ 
right:0;  /*離右方距離*/ 

明天會更深入聊聊進階的其他CSS屬性,其中也有我最喜歡用的Flexbox版面配置系列,那就明天見吧!


上一篇
Day12. 切版前知識(二) HTML 教學、常用標籤
下一篇
Day14. 切版前知識(四) CSS進階屬性:Flexbox、transition、transform和更多
系列文
30天製作RWD個人品牌網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言