【前端知識體系】CSS基礎知識強化

来源:https://www.cnblogs.com/fecommunity/archive/2019/11/17/11874634.html
-Advertisement-
Play Games

本文整理了CSS相關的基礎知識,包括CSS權重、雪碧圖、Base64編碼、自定義字體等知識點在CSS中的使用。 ...


1.CSS樣式(選擇器)的優先順序?

1.1 權重的計算規則

  1. 第一優先順序:無條件優先的屬性只需要在屬性後面使用!important。它會覆蓋頁面內任何位置定義的元素樣式。(ie6支持上有些bug)。
  2. 第一等:內聯樣式,如:style="color:red;",權值為1000.(該方法會造成css難以管理,所以不推薦使用)
  3. 第二等:ID選擇器,如:#header,權值為0100.
  4. 第三等:類選擇器、如:.bar, 權值為0010.
  5. 第四等:類型(標簽)選擇器和偽元素選擇器,如:div ::first-line 權值為0001.
  6. 通配符,子選擇器,相鄰選擇器等。如*,>,+, 權值為0000.
  7. 繼承的樣式沒有權值。

[!NOTE]
CSS選擇器的優先順序:!important > 行內樣式 > ID選擇器 > 類選擇器 > 標簽選擇器 > 其他

1.2 實際案例

<style>
    a{color: yellow;} /*權值:0,0,0,1*/
    div a{color: green;} /*權值:0,0,0,2*/
    .demo a{color: black;} /*權值:0,0,1,1*/
    .demo input[type="text"]{color: blue;} /*權值:0,0,2,1*/
    .demo *[type="text"]{color: grey;} /*權值:0,0,2,0*/
    #demo a{color: orange;} /*權值:0,1,0,1*/
    div#demo a{color: red;} /*權值:0,1,0,2*/
</style>

<body>
    <a href="">第一條應該是黃色</a> <!-適用第1行規則->
    <div class="demo">
    <input type="text" value="第二條應該是藍色" /><!-適用第4、5行規則,第4行優先順序高->
    <a href="">第三條應該是黑色</a><!-適用第2、3行規則,第3行優先順序高->
    </div>
    <div id="demo">
    <a href="">第四條應該是紅色</a><!-適用第5、6行規則,第6行優先順序高->
    </div>
</body>

2.雪碧圖的作用?

[!NOTE]
減少HTTP的請求次數,提高載入的性能
在一些情況下可以減少圖片的大小
關鍵在於對background-position概念的理解和使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>購物車特效</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        .select{
            margin: 0 auto;
            display: block;
            width: 1000px;
            height: 35px;
            background-color:#F5FFFA;
        }
        div{
            width: 42px;
            height: 34px;
            background-image: url(amazon-sprite_.png);
            background-repeat: no-repeat;
            background-position: -8px -335px;
        }
        div:hover{
            background-image: url(amazon-sprite_.png);
            background-repeat: no-repeat;
            background-position: -55px -335px;
        }
    </style>
</head>
<body>
    <a href="https://www.baidu.com" target='_blank' class="select">
        <div></div>

    </a>
</body>
</html>

3.自定義字體的使用場景?

[!NOTE]
宣傳/品牌/banner等固定文案
字體圖標中使用

<style>
@font-face{
     font-family: '字體名稱隨便起'; 
     src: url('../font/字體名稱.eot');
     src:url('../font/字體名稱.woff') format('woff'),
         url('../font/字體名稱.ttf') format('truetype'),
         url('../font/字體名稱.svg') format('svg');
}
/* 使用方法:html中的代碼中加一個h1或者其他的,裡面寫你自己想要的特殊文字 */
h1{
    font-size:36px; 
    color:#ccc;
    font-family: "字體名稱隨便起";
}

</style>

4.Base64的使用?

4.1 概念

Base64就是一種基於64個可見字元(26個大寫字母,26個小寫字母,10個數字,1個+,一個 / 剛好64個字元)來表示二進位數據的表示方法。

Base64編碼表

[!NOTE]
擴展:不可見字元其實並不是不顯示,只是這些字元在屏幕上顯示不出來,比如:換行符、回車、退格......字元。

Base64字元表中的字元原本用6個bit就可以表示,現在前面添加2個0,變為8個bit,會造成一定的浪費。因此,Base64編碼之後的文本,要比原文大約三分之一

4.2 原理

  • 第一步,將待轉換的字元串每三個位元組分為一組,每個位元組占8bit,那麼共有24個二進位位。
  • 第二步,將上面的24個二進位位每6個一組,共分為4組。
  • 第三步,在每組前面添加兩個0,每組由6個變為8個二進位位,總共32個二進位位,即四個位元組。
  • 第四步,根據Base64編碼對照表(見下圖)獲得對應的值。

[!NOTE]
兩個位元組:兩個位元組共16個二進位位,依舊按照規則進行分組。此時總共16個二進位位,每6個一組,則第三組缺少2位,用0補齊,得到三個Base64編碼,第四組完全沒有數據則用“=”補上。因此,上圖中“BC”轉換之後為“QKM=”;
一個位元組:一個位元組共8個二進位位,依舊按照規則進行分組。此時共8個二進位位,每6個一組,則第二組缺少4位,用0補齊,得到兩個Base64編碼,而後面兩組沒有對應數據,都用“=”補上。因此,上圖中“A”轉換之後為“QQ==”;

4.3 作用

  • 用於減少HTTP請求
  • 適用於小圖片
  • base64編碼圖片之後的體積約為原圖的4/3

5.偽類和偽元素的區別?

  • 偽元素是真的有元素
  • 前者是單冒號,後者是雙冒號
<style>
li:first-child {
    height: 20px;
    width: 100px;
    background-color: #139aff;
}
li:last-child {
    height: 60px;
    width: 100px;
    background-color: #89ff56;
    line-height: 60px;
}
p:first-of-type {
    background-color:  red;
}
p:last-of-type {
    background-color:deeppink;
}


/*每個p標簽之前新增一個Hello文本*/
.container p::before {
    content: 'Hello';
}
.container p::after {
    content: 'Thanks';
}
.container p::first-letter {
    font-size: 32px;
}
.container p::first-line {
    background-color: #f1ffad;
}

/*所有選中的元素會變色*/
.container p::selection {
    background-color: #1025ff;
    color: red;
}
</style>
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
        <li>555</li>
    </ul>
<div>
    <h1>h1文本</h1>
    <p>p文本1</p>
    <p>p文本2</p>
    <p>p文本3</p>
    <p>p文本4</p>
</div>

<div class="container">
    <p> css1 </p>
    <p> css2 </p>
    <p> css3 </p>
    <p>我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素,我在學偽元素</p>
</div>
</body>
</html>

6.如何美化CheckBox?

[!NOTE]

  1. label[for]和id
  2. 隱藏原生的input
  3. :checked + label 選擇器
<style>
#value1{
        display: none;
}
#value1:checked+label{
    color:blue;
    background: #4cda60;
}
#value1:checked+label:before{
    left:31px;
}
#value1+label{
    cursor: pointer;
    color:red;
    display: block;
    width:60px;
    height: 30px;
    background: #fafbfa;
    border-radius: 15px;
    position: relative;
    box-shadow:inset 0 0 0 0 #eee,0 0 1px rgba(0,0,0,0.4);
    transition: background 0.1s;
    -webkit-transition: background 0.1s;
    -moz-transition: background 0.1s;
    -o-transition: background 0.1s;
}
#value1+label:before{
    content:'';
    position: absolute;
    background: #fff;
    top:1px;
    left:1px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    box-shadow:0 3px 1px rgba(0,0,0,0.05), 0 0 1px rgba(0,0,0,0.3);
    transition: left 0.1s;
    -webkit-transition: left 0.1s;
    -moz-transition: left 0.1s;
    -o-transition: left 0.1s;
}
</style>
<body>
    <input type="checkbox" name="timeType" value="1" id="value1" checked="checked"/>
    <label for="value1"></label>
</body>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • text transform屬性介紹 屬性就是設置 頁面中的標簽裡面的文本大小寫, 屬性常用的屬性值有三種: 、`uppercase lowercase`,不常用的屬性值在這筆者就不進行一一說明瞭。 text transform屬性值說明表 屬性值 |描述 | none | 預設。定義帶有小寫字母和 ...
  • text decoration屬性介紹 屬性是用來設置文本修飾線呢, 屬性一共有4個值。 text decoration屬性值說明表 值|作用 | none |去掉文本修飾線 underline | 設置下劃線 overline|設置上劃線 line through|設置刪除線 HTML標簽自帶修飾 ...
  • 前言 筆者所做的一個項目需要做一個前端的樹形菜單,後端返回的數據是一個平行的list,list中的每個元素都是一個對象,例如 的值為 ,每個元素都指定了父元素,生成的菜單可以無限級嵌套。一開始找的插件需要手動將生成好的樹形數組傳進去才能使用(儘管後來找到了一個UI框架,可以直接傳list進去,只需要 ...
  • 1. 定位 定位有三種:相對定位、絕對定位、固定定位 1.1 相對定位 現象和使用: 1.如果對當前元素僅僅設置了相對定位,那麼與標準流的盒子什麼區別。 2.設置相對定位之後,我們才可以使用四個方向的屬性: top、bottom、left、right。 特性:1.不脫標 2.形影分離 3.老家留坑 ...
  • 1. 盒模型 在CSS中,"box model"這一術語是用來設計和佈局時使用,然後在網頁中基本上都會顯示一些方方正正的盒子。我們稱為這種盒子叫盒模型。 盒模型有兩種:標準模型和IE模型。我們在這裡重點講標準模型。 1.1 盒模型示意圖 1.2 盒模型的屬性 width:內容的寬度 height: ...
  • [TOC] JavaScript簡介 JavaScript是前端的一門編程語言 node.js 支持前端js代碼可以跑在後端伺服器上 JavaScript 是腳本語言 JavaScript 是一種輕量級的編程語言。 JavaScript 是可插入 HTML 頁面的編程代碼。 JavaScript 插 ...
  • 1. CSS介紹 現在的互聯網前端分三層: HTML:超文本標記語言。從語義的角度描述頁面結構。 CSS:層疊樣式表。從審美的角度負責頁面樣式。 JS:JavaScript 。從交互的角度描述頁面行為 CSS:Cascading Style Sheet,層疊樣式表。CSS的作用就是給HTML頁面標簽 ...
  • 本文介紹了CSS常見的表格、浮動、定位佈局等方式,也介紹了聖杯佈局和雙飛翼佈局高級佈局的實現方式。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...