【HTML】顏色和選擇器

韶音鄀逝發表於2020-09-25

顏色與單位

一.顏色

  • 相關的概念
  1. 色調:指影像的相對明暗程度,也稱色相。 通俗來說就是顏色。
  2. 飽和度:指色彩的鮮豔程度,也稱色彩的純度或彩度。是顏色中灰色的含量。飽和最大灰色為零
  3. 亮度:指色彩的明暗差異,也稱色彩明度。是顏色中黑色的含量。亮度最大黑色為零
    飽和度、亮度和色調是色彩的三要素
  4. 對比度:前景色與背景色之間的差異。差異越大,對比度越大。
  5. web安全色:一個色板,些顏色可以安全的應用於所有的Web中.
    具體顏色參考網站:https://www.bootcss.com/p/websafecolors
  • 前景色與背景色
  • 前景色:在css中是color屬性,color還表示文字內容的顏色。
用法:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>顏色</title>
    <style>
        h2{
            color: aqua;
        }
    </style>
</head>
<body>
    <h2>床前明月光,疑是地上霜</h2>
</body>
</html>
  • 背景色css中由background-color屬性設定背景色,預設屬性為transparent(透明)
用法:
<head>
    <style>
        p{
            background-color: black;
        }
    </style>
</head>
<body>
    <p>床前明月光,疑是地上霜</p>
    <p>舉頭望明月,把酒問青天</p>
</body>
  • 顏色值的型別
  • 顏色值是一種標準RGB色彩空間的顏色,可通過以下三種型別進行定義:
    1. 色彩關鍵字:是一個不分大小寫的識別符號,如red、blue、black等。
      transparent關鍵字表示一個完全透明的顏色。
    2. RGB模式:就是紅-綠-藍 Red-Green-Blue的簡稱。通過這三種顏色互相疊加組合成各種顏色。
      css中使用RGB色彩模式的方式:
      • 十六進位制符號:#RRGGBB和#RGB
      • #RRGGBB:#後6個十六進位制字元(0-9,A-F)
      • #RGB:#後3個十六進位制字元
      • #ff0033可簡寫為#f03
    3. 函式符:rgb(R,G,B)
      • R,G,B的值可以用0255或0%100%之間的值
      • 這裡的255和100%是一樣的,相對於十六進位制FF

幾種用法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>顏色</title>
    <style>
        #p1{
            color: #FFCC33;
            background-color: rgb(137,0,137);
        }
        #p2{
            color:#FC3;
        }
    </style>
</head>
<body>
    <p id="p1">轉朱閣,低綺戶,照無眠</p>
    <p id="p2">不應有恨,明月長向別時圓</p>
</body>
</html>
  1. HSL模式:是Hue-Saturation-Lightness 色調-飽和度-亮度的簡稱。是一種將RGB色彩模型中的點在圓柱座標系中的表示法。 CSS3 版本新增用法。
    在CSS中用hsl(H,S,L)函式實現:
    • H表示色調,範圍0~360之間的一個角度。
    • S表示飽和度,範圍0%~100%之間的百分百。
    • L表示亮度,用百分比表示,0%黑色,50%標準色,100%白色
用法:
<head>
    <style>
        .test{
            background-color: hsl(99, 66%, 30%);
        }
    </style>
</head>
<body>
    <p class="test">你在這裡不要走動,我去給你買幾個橘子</p>
</body>
  • 透明度
    • CSS3版本中新增了opacity屬性用來設定透明度,值介於0~1之間。
      • 值為0或0.0表示完全透明
      • 值為0.5表示半透明
      • 值為1或1.0表示不透明

用法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>顏色</title>
    <style>
        #op1{
            opacity: 1;
        }
        #op2{
            opacity: 0.7;
        }
        #op3{
            opacity: 0.5;
        }
    </style>
</head>
<body>
    <p id="op1">老夫從未見過如此厚顏無恥之人</p>
    <p id="op2">ohhhhhhhhhhh</p>
    <p id="op3">李斯拉里人呀</p>
</body>
</html>
  • 可以結合RGB模式和HSL模式使用

    RGB模式增加了rgba(R,G,B,A),A表示透明度

    HSL增加了hsl(H,S,L,A),A表示透明度

  • 顏色模式

    四種顏色模式:

    • CSS2 版本的是 rgb() 函式
    • CSS3 新增加了 rgba()hsl()hsla() 函式。

二. 單位

  • 相關概念
  1. 值:
#op3{
        background-color: red;
    }
   
background-color是屬性    red是設定的值
  1. 單位:描述長度值時附加單位。
    CSS中有兩種不同的長度單位:

    絕對長度單位
    長度是固定的、不變化,常見絕對長度單位如下

單位名稱等價換算
cm釐米1cm = 96px/2.54
mm毫米1mm = 1/10th of 1cm
Q四分之一毫米1Q = 1/40th of 1cm
in英寸1in = 2.54cm = 96px
pc十二點活字1pc = 1/16th of 1in
pt1pt = 1/72th of 1in
px畫素1px = 1/96th of 1in
  • 相對長度單位
    • 一般有明確的參照物,比絕對長度單位更適用於複雜的螢幕輸出
單位相對於
em父元素的字型大小
ex字元“x”的高度
ch數字“0”的寬度
rem根元素的字型大小
lh元素的line-height
vw視窗寬度的1%
vh視窗高度的1%
vmin視窗較小尺寸的1%
vmax檢視大尺寸的1%
  • 畫素值(px)
    是構成圖片的最小單元,畫素(px)是絕對單位,顯示器的(PPI)一般都是由物理元件決定的
  • 百分比(%)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>百分比</title>
    <style>
        .parent{
            width: 400px;
            height: 200px;
            border: 3px solid burlywood;
        }
        #child1{
            width: 40%;
            height: 100px;
            background-color: aqua;
        }
        #child2{
            width: 80%;
            height: 100px;
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div id="child1"></div>
        <div id="child2"></div>
    </div>
</body>
</html>
  • em和rem
    • em:是相對於當前 HTML元素的父級元素來進行設定。
    • rem:是相對於當前 HTML根元素(<html>)來進行設定。

上述 2 種單位都具有如下 3 種情況:

  • 小於 1 時:表示相對於父級元素或根元素縮小。例如 0.5em 表示是父級元素的 0.5 倍,0.5rem 表示是根元素的 0.5 倍。
  • 等於 1 時:表示與父級元素或根元素的大小保持一致。
  • 大於 1 時:表示相對於父級元素或根元素放大。例如 1.5em 表示是父級元素的 1.5 倍,1.5rem 表示是根元素的 1.5 倍。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>em AND rem</title>
    <style>
        html{
            font-size: 18px;
        }
        .ems li{
            font-size: 1.3em;
        }

        .rems li{
            font-size: 1.3rem;
        }
    </style>
</head>
<body>
    <ul class="ems">
        <li>One</li>
        <li>Tow</li>
        <li>三
            <ul>
                <li>3-11111</li>
                <li>3-22222
                    <ul>
                        <li>3-22222-11111</li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>

    <ul class="rems">
        <li>One</li>
        <li>Tow</li>
        <li>三
            <ul>
                <li>3-11111</li>
                <li>3-22222
                    <ul>
                        <li>3-22222-11111</li>
                        <li>1111111111111</li>
                        <li>1111111111</li>
                    </ul>
                    <li>1111111111111111</li>
                </li>
            </ul>
        </li>
    </ul>
</body>
</html>

三. 結構化元素

  • 相關概念

    • 結構化元素就是指HTML元素中具有明確含義和作用的元素,例如 <p> 元素表示段落
      如下列表所示展示了部分 HTML 4.01 版本的結構化元素:

      • 標題元素(<h1> ~ <h6>
      • 段落元素(<p>
      • 粗體元素(<b>
      • 斜體元素(<i>
      • 上標元素(<sup>)與下標元素(<sub>
      • 換行符(<br>
      • 水平線元素(<hr>
    • 如下列表所示展示了部分 HTML5 版本新增的結構化元素:

      • <article> 元素
      • <section> 元素
      • <nav> 元素
      • <aside> 元素
      • <header> 元素
      • <main> 元素
      • <footer> 元素
  • 標題元素:

<h1>這是標題一</h1>
<h2>這是標題二</h2>
<h3>這是標題三</h3>
<h4>這是標題四</h4>
<h5>這是標題五</h5>
<h6>這是標題六</h6>
  • 段落元素 <p>
可用margin取消行間距,如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>結構化元素</title>
    <style>
        p{
            margin: 0;
        }
    </style>
</head>
<body>
    <p>我是一個段落.</p>
    <p>巧了我也是一個段落.</p>
</body>
</html>
  • 粗體元素 <b>
讓文字顯示粗體更好的方式用CSS的font-weight屬性設定為bold,如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>結構化元素</title>
    <style>
        p{
            margin: 0;
        }
        
        #p1{
            font-weight: bold;
        }
    </style>
</head>
<body>
    <p>我是一個段落.</p>
    <p>巧了我也是一個段落.</p>
    <p><b>我</b>比你們<b>粗</b></p>
    <p id="p1">上面的,我比你更粗的均勻</p>
</body>
</html>
  • 傾斜元素 <i>
就是斜體
<p><i>我是歪的</i></p>
  • 上標<sup> 與下標<sub>
<sup> 上標元素元素顯示更高更小。
<sub> 下標元素元素顯示更低更小。

用法:
    <p>我<sup>上</sup>來了</p>
    <p>我<sub>下</sub>去了</p>
  • 換行符 <br>
<p>我斷了<br>一半掉下去了</p>
  • 水平線 <hr>:
表示段落元素之間的主題轉換

<p>我下面有道線</p>
<hr>

四. HTML5 版本的結構化元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>結構化元素</title>
    <style>
        p{
            margin: 0;
        }
        
        #p1{
            font-weight: bold;
        }

        aside{
            width: 28%;
            padding-left: .5rem;
            margin-left: .5rem;
            float: right;
            box-shadow: inset 5px 0 5px -5px #666666;
            color: royalblue;
        }
    </style>
</head>
<body>
    <h1>標題一</h1>
    <h2>標題二</h2>
    <h3>標題三</h3>
    <h4>標題四</h4>
    <h5>標題五</h5>
    <h6>標題六</h6>
    <p>我是一個段落.</p>
    <p>巧了我也是一個段落.</p>
    <p><b>我</b>比你們<b>粗</b></p>
    <p id="p1">上面的,我比你更粗的均勻</p>
    <p><i>我是歪的</i></p>
    <p>我<sup>上</sup>來了</p>
    <p>我<sub>下</sub>去了</p>
    <p>我斷了<br>一半掉下去了</p>
    <p>我下面有道線</p>
    <hr>
    <article>
        <h1>ni hao</h1>
        <p>我是article元素,我定義HTML頁面中的可獨立分配或可複用結構<small>例如論壇的帖子、新聞網站的文章等</small></p>
    </article>
    
    <section>
        <h1>HI I Am section</h1>
        <p>我也是獨立部分</p>
            <article>
                <p>我是子部分</p>
            </article>
        <article>
            <p>我是下面的</p>
        </article>
    </section>
    
    <nav>
        <ul>
            <li><p>我是nav,我用來定義導航連結。比如選單,目錄,索引</p></li>
            <li><a href="#">計算機網路基礎</a></li>
            <li><a href="#">C++</a></li>
            <li><a href="#">程式設計藝術</a></li>
        </ul>
    </nav>
    
    <aside>
        俺是aside,我是獨立於你們的存在,我不受你們影響。  我來當側邊欄。
    </aside>

    <header>
        <h2>
            我是header,我來定義引導和導航內容。 如logo、搜尋框
        </h2>
    </header>

    <main>
        <h2>我是main</h2>
        <p>我用來定義主要內容</p>
        <p>一個頁面只能有一個我,不能出現在article>元素、aside元素、nav元素、header元素和footer元素的內部</p>
    <main>

    <footer>
        <ul>
            <li>footer定義一個章節內容或根元素的頁尾</li>
            <li>一個頁尾通常包含該章節作者、版權資料或文件相關連結等資訊</li>
        </ul>
    </footer>
</body>
</html>

text-size屬性

  • 設定陰影,可以設定多個,之間用逗號隔開。 有四個值:顏色 水平位置 垂直位置 陰影範圍 顏色可以放最後,陰影範圍可以不設。
  • 例如:
<head>
<style>
.h{
        font-size: 56px;
    text-shadow: 0 1px #808d93,
      -1px 0 #cdd2d5,
      -1px 2px #808d93,
      -2px 1px #cdd2d5,
      -2px 3px #808d93,
      -3px 2px #cdd2d5,
      -3px 4px #808d93,
      -4px 3px #cdd2d5,
      -4px 5px #808d93,
      -5px 4px #cdd2d5,
      -5px 6px #808d93,
      -6px 5px #cdd2d5,
      -6px 7px #808d93,
      -7px 6px #cdd2d5,
      -7px 8px #808d93,
      -8px 7px #cdd2d5;
}
.r{
            font-size: 46px;
            text-shadow: 0 0 20px #fefcc9,
                     10px -10px 30px #feec85,
                     -20px -20px 40px #ffae34,
                     20px -30px 35px #ec760c,
                     -20px -40px 40px #cd4606,
                     0 -50px 65px #973716,
                     10px -70px 70px #451b0e;
}
</style>
</head>
<body>
    <p class="h">惑也,終不解矣。</p>
    <p class="r">野火燒不盡,春風吹又生</p>
</body>

效果:

捕獲.JPG

字型測試示例

最終效果:

捕獲.JPG

  • 分析:由一個HTML頁面、一個CSS檔案、一個JS檔案組成
    • HTML頁面:主體由一個表單和多個巢狀div組成,div中有單選按鈕組,用link外聯CSS檔案
部分結構:
段落
表單 action="createShorHand()"
    標籤1 class="cf"
        子標籤1 class="setPropCont"
            單選按鈕 name="font_family"
            單選按鈕
            單選按鈕
            單選按鈕 同上
        子標籤2 class="setPropCont"
            單選按鈕 name="font_family"
            單選按鈕 
            單選按鈕 同上
    標籤2 class="cf"
        子標籤2-1 class="propInputCont"
            單選按鈕 class="curCss"
標籤3 class="fontShortHand"
  • CSS檔案:
    主要用到的屬性:

    • float:left; 左浮動

    • text-align:center; 文字居中

    • margin-right:設定右側外邊間距

    • margin-bottom:設定下外邊間距

    • border-bottom:設定下邊框

    • display: table; 設定顯示型別

    • clear:both; 清除浮動z

    • height:

    • width:

  • JS檔案:

    • var:宣告變數

    • getElementsByClassName:根據 class 屬性值獲取一組元素節點物件

    • document:為對網頁內部文件的操作,它基本上所有的東西都可以操作,一般用來操作一些標籤

    • getElementById: 返回指定 ID 的元素

    • getElementsByTagName:返回帶有指定標籤名的物件的集合

    • appendChild: 向當前節點的子節點列表的末尾新增新的子節點

var textAreas = document.getElementsByClassName("curCss"),
    shortText = "",
    getCheckedValue,
    setCss,
    getProperties,
    injectCss;

getProperties = function () {           
    shortText =
        getCheckedValue("font_style") + " " +         
        getCheckedValue("font_variant") + " " +
        getCheckedValue("font_weight") + " " +
        getCheckedValue("font_size") +
        getCheckedValue("line_height") + " " +
        getCheckedValue("font_family");
    
    return shortText;               
}

getCheckedValue = function(radio_name){              
    oRadio = document.forms[0].elements[radio_name];
    for(var i = 0; i < oRadio.length; i++){
        if(oRadio[i].checked){
            var propInput ="input_" + radio_name,
                curElemName = "input_" + radio_name,
                curElem = document.getElementById(curElemName);
            curElem.value = oRadio[i].value;

            return oRadio[i].value;      
        }
    }
}

setCss = function(){     
    getProperties();      
    injectCss(shortText);   
}

injectCss = function(cssFragment){         
    old = document.body.getElementsByTagName("style");   
    if(old.length > 1){                                   
        old[1].parentElement.removeChild(old[1]);     
    }
    css = document.createElement("style");          
    css.innerHTML = ".fontShortHand{font: " + cssFragment + "}";   
    document.body.appendChild(css);    
}

setCss();

偽類選擇器

一. 動態偽類選擇器

  • 可以劃分為連結中錨點的偽類選擇器和使用者行為的偽類選擇器,如下:
偽類選擇器型別描述
e:link連結錨點偽類選擇器匹配的 e 元素,定義了超連結並且未被訪問過
e:visited連結錨點偽類選擇器匹配的 e 元素,定義了超連結並且已被訪問過
e:active使用者行為偽類選擇器匹配的 e 元素,定義了超連結並且被啟用
e:hover使用者行為偽類選擇器匹配的e元素,定義了超連結並且使用者滑鼠懸停在連結文字內容上
e:focus使用者行為偽類選擇器匹配的 e 元素,定義了超連結並且獲得焦點
  • <a>元素應用如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>連結</title>
    <style>
        a:link{
            color: aqua;
        }
        a:visited{
            color: red;
        }
        a:active{
            color: black;
        }
        a:hover{
            color: fuchsia;
        }
        a:focus{
            color: orange;
        }
    </style>
</head>
<body>
    <a target="_blank" href="www.baidu.com">百度度度度度度度度度度度度度度</a>
    <a href="#">我是一個空連結</a>
    <a href="www.baidu.com">百度</a>
    <a target="_blank" href="#">ooooooooooo</a>
</body>
</html>
  • 其他元素也可以使用動態偽類選擇器,如:
<button>按鈕配合:hover

  <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>連結</title>
    <style>
        button:hover{
            color: aqua;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div>
        <button>一個按鈕</button>
    </div>
</body>
</html>
  
注意:在觸控式螢幕上 :hover 基本不可用。不同的瀏覽器上:hover 偽類表現不同。

二. 目標偽類選擇器

  • 指的是CSS中的:target偽類選擇器,該偽類選擇器用來設定 <a> 元素錨點功能中的目標元素的樣式。
    用法:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>目標偽類選擇器</title>
    <style>
        p:target{
            background-color:aqua;
        }

        p:target::before{
            font: 70% sans-serif;
            content: ">";
            color: blanchedalmond;
            margin-right: .25em;
        }

        p:target i{
            color: red;
        }
    </style>
</head>
<body>
    <h3>The Change is Every</h3>
    <ol>
        <li><a href="#p1">aaaaaaaaaaaaaaaaaaaaaaa</a></li>
        <li><a href="#p1">bbbbbbbbbbbbbbbbbbbbbbb</a></li>
        <li><a href="#nowhere">ccccccccccccccccccccccccccccccc
            cccccccccccccccccccccccccccccccc</a></li>
    </ol>
    <h3>I Am fever</h3>
    <p id="p1">you jump,i don't jump</p>
    <p id="p2">oh my god</p>
</body>
</html>

相關文章