【前端知識體系】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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...