Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲视频在线一区二区,欧美日韩中文字幕,国产精品亚洲专一区二区三区

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          前端的你應該知道的SVG知識

          前端的你應該知道的SVG知識

          我們閱讀這篇文章之前,我們需要思考下,我們為什要去了解SVG,閱讀了這篇文章是否可以給我們帶來幫助。

          1. 如果你想要一張 css或者JavaScript可以控制的圖片,那么你可以考慮SVG。

          2. 如果你期望圖片的質量不會因為放大或縮小而降低,那么你可以考慮SVG。

          3. 如果你期望網頁對殘障人士和視力受損的用戶有更好的體驗,那么你可以考慮SVG。

          4. 如果你期望圖片在高清設備還是低分辨率設備上,都能保持清晰和細膩的圖像質量,那么你可以考慮SVG。

          1. 矢量圖

          我們在學習SVG之前,需要先了解一下位圖和矢量圖。

          簡單來說:

          • 位圖:由像素點組成的圖像,放大圖像會失真,canvas就是位圖效果。
          • 矢量圖:由數學公式(通常是XML)來描述圖像,放大圖像不會失真。

          詳細來說:

          • 位圖:也稱為像素圖,是由一個個像素點組成的圖像。每個像素點都有特定的顏色和位置,這些信息被編碼并存儲在文件中。位圖的顯示效果取決于像素的數量和密度,即分辨率。一般來說,位圖主要用于表示細節豐富,顏色和亮度變化多的圖像,如照片,自然風景等。
          • 矢量圖:使用數學公式(通常是XML)來描述圖像,而不是像位圖那樣使用像素矩陣。這些數據公式決定了圖像的形狀,線條和填充樣式。由于矢量圖的每個元素都是由數學公式定義的,因此它們可以在不同尺寸和分辨率下保持清晰度。這種類型的圖像在縮放,旋轉或以其他方式變換時不會失去細節或者質量。

          2. SVG

          SVG究竟什么?

          是Scalable Vector Graphics的縮寫,意思是可縮放矢量圖形。

          這是一種基于XML的二維矢量圖形標準,由W3C開發的。

          對于初學者來說,可以將SVG理解為一套新的HTML標簽。

          所以我們可以使用css和JavaScript來對標簽進行操作。

          很多小伙伴可能已經忘記了XML,我們回顧一下:
          XML(可擴展標記語言)是一種用于描述數據的標記語言,它使用一系列簡單的標記來描述數據,這些標記可以用來表示不同類型的數據元素,如標題,作者,價格等。

          3. 優勢

          SVG的優勢:

          1. 可擴展性和響應能力:SVG是使用形狀,數字和坐標在瀏覽器中渲染圖形,這使得它具有分辨率無關性和無限可伸縮性。不管我們畫了什么圖形,不論用戶將頁面放的多大,圖形都不會失真,只是比例變化了而已。
          2. 可編程性和交互性:SVG是完全可編輯和腳本可編寫的,我們可以通過css和JavaScript將各種動畫和交互添加到繪圖中。
          3. 無障礙:SVG文件是基于文本的,可以進行搜索和索引,這使得他們可以通過屏幕閱讀器,搜索引擎和其他設備閱讀。
          4. 性能:與GIF,JPG和PNG相比,SVG通常是較小的文件。

          4. 劣勢

          SVG的劣勢:

          設計復雜性:SVG需要具備一定的設計和制作技巧,與位圖相比,SVG的設計難度較大,需要更高的技術水平。

          瀏覽器兼容性:在一些舊版瀏覽器中,可能存在對SVG的兼容性問題。

          渲染速度:SVG復雜度過高會降低頁面渲染速度。

          5. 使用方式

          對于前端開發的我們,要如何去使用SVG呢?

          SVG歸根結底來說和JPG,PNG一樣,也是一種圖像格式,所以我們可以在HTML中,將SVG的路徑設置為<img>的src屬性。

          我們也可以將SVG的代碼放在HTML中,我們完全可以把SVG的代碼看做成我們的HTML標簽。

          例如:

          <svg width="500" height="500">
              <circle cx="100" cy="100" r="50" fill="transparent" stroke="#000"></circle>
          </svg>
          

          我們也可以通過css的background-image或者偽元素,將SVG圖片作為背景圖像。

          6. 使用場景

          1. 圖標和徽標:由于SVG可以無損縮放,所以非常適合用來做網站的圖標和徽標,無論是在大屏幕還是小屏幕上,SVG都能保證清晰度。
          2. 插畫:任何鋼筆或鉛筆制作的傳統繪圖,都可以完美轉化為SVG格式。
          3. 動態圖形:SVG的腳本特性使它可以用來創建動態的,交互式圖形。
          4. 之前我做過空調的SVG圖片,然后由JavaScript控制空調上的開關,溫度,模式。
          5. 地圖和圖表:SVG可以繪制地圖和圖表,然后和JavaScript進行數據交互。
          6. 游戲:雖然SVG不是專門用來做游戲的,但是一些游戲開發者會用SVG來制作游戲中的圖形。

          總的來說,任何需要保持清晰度,動態交互和無損縮放的圖形場景,都可以考慮使用SVG。

          7. Canvas與SVG

          Canvas和SVG都是用于在網頁上繪制圖形的工具,但它們在許多方面都存在顯著的差異。以下是對Canvas和SVG的對比:

          1. 基本概念
          2. Canvas:是HTML5提供的 <canvas>標簽,使用JavaScript在網頁上繪制圖形。它主要通過像素進行渲染,不支持事件處理器。
          3. SVG:全稱為可伸縮矢量圖形(Scalable Vector Graphics),是基于XML的二維圖形語言。它由許多節點構成,每個被繪制的圖形都被視為一個對象,如果SVG對象的屬性發生變化,瀏覽器能夠自動重現圖形。
          4. 特點
          5. Canvas: 依賴分辨率。 不支持事件處理器。 弱的文本渲染能力。 能夠以 .png 或 .jpg 格式保存結果圖像。 最適合圖像密集型的游戲,其中的許多對象會被頻繁重繪。
          6. SVG: 基于矢量,能夠很好地處理圖形大小的改變。 不支持事件處理器。 弱的文本渲染能力。 能夠以 .png 或 .jpg 格式保存結果圖像。
          7. 性能
          8. Canvas的歷史沒有SVG悠久,它是H5新增的標簽,而SVG已經存在十幾年。
          9. SVG圖形節點足夠多時,渲染會比較慢,而Canvas性能好一些。
          10. 其他差異
          11. Canvas適合帶有大型渲染區域的應用程序(如谷歌地圖)。
          12. SVG的復雜度高可能會減慢渲染速度(任何過度使用DOM的應用都不快)。

          總結:Canvas和SVG各有其優勢和適用場景。Canvas更適合圖像密集型的游戲和需要高效渲染的應用,而SVG更適合處理矢量圖形和大型渲染區域。

          8. 實戰一

          說了這么多,我們來開始實戰,我們要在HTML中,畫出一個SVG圖像。

          <html>
          <body>
          <h1>Feng SVG</h1>
          
          <svg version="1.1"  baseProfile="full"  width="300" height="200"  xmlns="http://www.w3.org/2000/svg">
            <rect width="100%" height="100%" stroke="red" stroke-width="4" fill="yellow" />
            <circle cx="150" cy="100" r="80" fill="green" />
            <text x="150" y="115" font-size="16" text-anchor="middle" fill="white">RUNOOB SVG TEST</text>
          </svg> 
          
          </body>
          </html>
          

          運行后:

          代碼解讀:

          1. <svg>和</svg>是表示SVG代碼,相當于開始標簽和結束標簽,這是根元素。
          2. width 和 height 屬性可設置此 SVG 的寬度和高度。
          3. version 屬性可定義所使用的 SVG 版本。
          4. xmlns 屬性可定義 SVG 命名空間。
          5. baseProfile 特性描述了作者認為正確渲染內容所需要的最小的 SVG 語言概述。這個特性不會說明任何處理限制,可以把它看作是元數據。
          6. SVG 的 <rect> 用來創建一個矩形,通過 fill 把背景顏色設為黃色。
          7. SVG 的 <circle> 用來創建一個圓。cx 和 cy 屬性定義圓中心的 x 和 y 坐標。如果忽略這兩個屬性,那么圓點會被設置為 (0, 0),r 屬性定義圓的半徑。 一個半徑 80px 的綠色圓圈 <circle> 繪制在紅色矩形的正中央 (向右偏移 150px,向下偏移115px)。
          8. stroke 和 stroke-width 屬性控制如何顯示形狀的輪廓。我們把圓的輪廓設置為 4px 寬,紅色邊框。
          9. fill 屬性設置形狀內的顏色。我們把填充顏色設置為紅色。

          9. 實戰二

          我們還可以在線設計SVG圖片,我們可以直接使用該圖片或者拷貝其代碼復制到我們的代碼中。

          SVG在線編輯: c.runoob.com/more/svgedi…

          10. SVG的基本形狀

          10.1 矩形

          示例一

          正常的矩形

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
            <rect width="300" height="100" style="fill:rgb(122,122,0);stroke-width:2;stroke:rgb(0,0,0)" />
          </svg>
          
          

          效果:

          代碼解析:

          • <rect>:這是一個矩形元素,用于在SVG圖像中繪制矩形。
          • width="300" 和 height="100":這兩個屬性定義了矩形的寬度和高度。在這個例子中,矩形的寬度是300像素,高度是100像素。
          • style="fill:rgb(122,122,0);stroke-width:2;stroke:rgb(0,0,0)":這設置了矩形的樣式。 fill:rgb(122,122,0):設置填充顏色為RGB值(122,122,0)的顏色,這是一種黃色調的顏色。 stroke-width:2:設置線條寬度為2像素。 stroke:rgb(0,0,0):設置線條顏色為RGB值(0,0,0)的顏色,這是一種黑色。

          綜上,這段代碼會在SVG圖像中繪制一個寬度為300像素、高度為100像素、填充顏色為黃色調、線條寬度為2像素、線條顏色為黑色的矩形。

          示例二:

          填充和邊框的透明度

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
            <rect x="50" y="20" width="150" height="150" style="fill:blue;stroke:red;stroke-width:5;fill-opacity:0.5;stroke-opacity:0.5" />
          </svg>
          
          

          效果:

          代碼解析:

          • <rect>:這是一個矩形元素,用于在SVG圖像中繪制矩形。
          • x="50" 和 y="20":這兩個屬性定義了矩形左上角的坐標(x, y)。在這個例子中,坐標是(50, 20)。
          • width="150" 和 height="150":這兩個屬性定義了矩形的寬度和高度。在這個例子中,矩形的寬度是150像素,高度是150像素。
          • style="fill:blue;stroke:red;stroke-width:5;fill-opacity:0.5;stroke-opacity:0.5":這設置了矩形的樣式。 fill:blue:設置填充顏色為藍色。 stroke:red:設置線條顏色為紅色。 stroke-width:5:設置線條寬度為5像素。 fill-opacity:0.5:設置填充透明度為0.5,這意味著矩形將是半透明的。 stroke-opacity:0.5:設置線條透明度為0.5,這意味著線條將是半透明的。

          綜上,這段代碼會在一個SVG圖像中繪制一個左上角坐標為(50, 20)、寬度為150像素、高度為150像素、填充顏色為藍色、線條顏色為紅色、線條寬度為5像素、填充透明度和線條透明度都為0.5的矩形。

          示例三:

          整個元素的透明度

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500px" height="500px">
            <rect x="50" y="20" width="150" height="150" style="fill:blue;stroke:pink;stroke-width:5;opacity:0.4" />
          </svg>
          

          效果:

          代碼解析:

          • <rect>:這是一個矩形元素,用于在SVG圖像中繪制矩形。
          • x="50" 和 y="20":這兩個屬性定義了矩形左上角的坐標(x, y)。在這個例子中,坐標是(50, 20)。
          • width="150" 和 height="150":這兩個屬性定義了矩形的寬度和高度。在這個例子中,矩形的寬度是150像素,高度是150像素。
          • style="fill:blue;stroke:pink;stroke-width:5;opacity:0.4":這設置了矩形的樣式。 fill:blue:設置填充顏色為藍色。 stroke:pink:設置線條顏色為粉紅色。 stroke-width:5:設置線條寬度為5像素。 opacity:0.4:設置透明度為0.4,這意味著矩形將是半透明的。

          綜上,這段代碼會在一個500x500像素的SVG圖像中繪制一個左上角坐標為(50, 20)、寬度為150像素、高度為150像素、填充顏色為藍色、線條顏色為粉紅色、線條寬度為5像素、透明度為0.4的矩形。

          示例四:

          圓角矩形

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500px" height="500px">
            <rect x="50" y="20" rx="20" ry="20" width="150" height="160" style="fill:red;stroke:black;stroke-width:1;opacity:0.5" />
          </svg>
          

          效果:

          代碼解析:

          • <rect>:這是一個矩形元素,用于在SVG圖像中繪制矩形。
          • x="50" 和 y="20":這兩個屬性定義了矩形左上角的坐標(x, y)。在這個例子中,坐標是(50, 20)。
          • rx="20" 和 ry="20":這兩個屬性定義了矩形的圓角半徑。在這個例子中,矩形的圓角半徑是20像素。
          • width="150" 和 height="160":這兩個屬性定義了矩形的寬度和高度。在這個例子中,矩形的寬度是150像素,高度是160像素。
          • style="fill:red;stroke:black;stroke-width:1;opacity:0.5":這設置了矩形的樣式。 fill:red:設置填充顏色為紅色。 stroke:black:設置線條顏色為黑色。 stroke-width:1:設置線條寬度為1像素。 opacity:0.5:設置透明度為0.5,這意味著矩形將是半透明的。

          綜上,這段代碼會在一個500x500像素的SVG圖像中繪制一個左上角坐標為(50, 20)、寬度為150像素、高度為160像素、填充顏色為紅色、線條顏色為黑色、線條寬度為1像素、透明度為0.5的圓角矩形。

          10.2 圓形

          示例:

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
             <circle cx="100" cy="50" r="40" stroke="red" stroke-width="2" fill="blue" />
          </svg> 
          

          效果:

          代碼解析:

          • <circle>:這是一個圓形元素,用于在SVG圖像中繪制圓形。
          • cx="100" 和 cy="50":這兩個屬性定義了圓心的坐標(x, y)。在這個例子中,圓心的坐標是(100, 50)。
          • r="40":這個屬性定義了圓的半徑,單位是像素。在這個例子中,圓的半徑是40像素。
          • stroke="red":這個屬性定義了圓的邊框顏色。在這個例子中,圓的邊框顏色是紅色。
          • stroke-width="2":這個屬性定義了圓的邊框寬度。在這個例子中,圓的邊框寬度是2像素。
          • fill="blue":這個屬性定義了圓的填充顏色。在這個例子中,圓的填充顏色是藍色。

          綜上,這段代碼會在一個SVG圖像中繪制一個圓心坐標為(100, 50)、半徑為40像素、邊框顏色為紅色、邊框寬度為2像素、填充顏色為藍色的圓形。

          10.3 橢圓

          示例:

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="500">
            <ellipse cx="300" cy="80" rx="100" ry="50" style="fill:red;stroke:purple;stroke-width:2" />
          </svg>
          

          效果:

          代碼解析:

          • <ellipse>:這是一個橢圓元素,用于在SVG圖像中繪制橢圓。
          • cx="300" 和 cy="80":這兩個屬性定義了橢圓的中心點坐標(x, y)。在這個例子中,中心點坐標是(300, 80)。
          • rx="100" 和 ry="50":這兩個屬性定義了橢圓的長軸和短軸半徑。在這個例子中,長軸半徑是100像素,短軸半徑是50像素。
          • style="fill:red;stroke:purple;stroke-width:2":這設置了橢圓的樣式。 fill:red:設置填充顏色為紅色。 stroke:purple:設置線條顏色為紫色。 stroke-width:2:設置線條寬度為2像素。

          綜上,這段代碼會在一個500x500像素的SVG圖像中繪制一個中心點坐標為(300, 80)、長軸半徑為100像素、短軸半徑為50像素的紅色橢圓,線條顏色為紫色,線條寬度為2像素。

          10.4 線

          示例:

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
            <line x1="0" y1="0" x2="200" y2="200" style="stroke:black;stroke-width:5" />
          </svg>
          

          效果:

          代碼解析:

          • <line>:這是一個線段元素,用于在SVG圖像中繪制線段。
          • x1="0" 和 y1="0":這兩個屬性定義了線段的起始點坐標(x, y)。在這個例子中,起始點坐標是(0, 0)。
          • x2="200" 和 y2="200":這兩個屬性定義了線段的終點坐標(x, y)。在這個例子中,終點坐標是(200, 200)。
          • style="stroke:black;stroke-width:5":這設置了線段的樣式。 stroke:black:設置線條顏色為黑色。 stroke-width:5:設置線條寬度為5像素。

          綜上,這段代碼會在一個SVG圖像中繪制一條從(0, 0)到(200, 200)的黑色線段,線條寬度為5像素。

          11.5 折線

          示例一:

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
            <polyline points="20,20 40,25 60,40 80,10 120,140 200,180" style="fill:none;stroke:black;stroke-width:3" />
          </svg>
          

          效果:

          代碼解析:

          • <polyline>:這是一個多邊形線條元素,它使用points屬性定義多邊形的頂點。
          • points="20,20 40,25 60,40 80,10 120,140 200,180":這定義了多邊形的頂點。每個頂點由兩個坐標值(x和y)組成,它們之間用空格分隔,并且每個頂點之間用空格分隔。例如,20,20定義了一個頂點在(20,20)的位置。
          • style="fill:none;stroke:black;stroke-width:3":這設置了多邊形的樣式。 fill:none:設置填充顏色為透明(不填充)。 stroke:black:設置線條顏色為黑色。 stroke-width:3:設置線條寬度為3像素。

          綜上,這段代碼會在一個SVG圖像中繪制一個黑色的折線。這個折線有6個點,形狀大致為一個不規則的六邊折線。注意:因為設置了fill:none,所以該多邊形線段不會進行填充,只顯示其黑色邊框。

          示例二:

          畫一個五角星

          <svg style="height:300px;width:300px;" xmlns="http://www.w3.org/2000/svg" version="1.1">
              <polyline points="100 10,40 180,190 60,10 60,160 180" style="fill:blue;stroke:blue;stroke-width:1" />
          </svg>
          
          

          效果:

          代碼解析:

          • <polyline>:這是一個多邊形線條元素,它使用points屬性定義多邊形的頂點。
          • points="100 10,40 180,190 60,10 60,160 180":這定義了多邊形的頂點。每個頂點由兩個坐標值(x和y)組成,它們之間用空格分隔,并且每個頂點之間用逗號分隔。例如,100 10定義了一個頂點在(100,10)的位置。
          • style="fill:blue;stroke:blue;stroke-width:1":這設置了多邊形的樣式。 fill:blue:設置填充顏色為藍色。 stroke:blue:設置線條顏色為藍色。 stroke-width:1:設置線條寬度為1像素。

          綜上,這段代碼會在一個300x300像素的區域內繪制一個藍色的多邊形。這個多邊形有5個頂點,形狀大致為一個不規則的五邊形。

          10.6 多邊形

          示例一:

          <svg  height="210" width="500">
            <polygon points="200,10 250,190 160,210"
            style="fill:red;stroke:purple;stroke-width:1"/>
          </svg>
          

          效果:

          代碼解析:

          • <polygon>:這是一個多邊形元素,用于在SVG圖像中繪制多邊形。
          • points="200,10 250,190 160,210":這個屬性定義了多邊形的頂點坐標。在這個例子中,多邊形有三個頂點:(200,10), (250,190) 和 (160,210)。
          • style="fill:red;stroke:purple;stroke-width:1":這設置了多邊形的樣式。 fill:red:設置填充顏色為紅色。 stroke:purple:設置線條顏色為紫色。 stroke-width:1:設置線條寬度為1像素。

          綜上,這段代碼會在一個500x210像素的SVG圖像中繪制一個由三個頂點定義的多邊形,填充顏色為紅色,線條顏色為紫色,線條寬度為1像素。

          示例二:

          畫一個五角星

          <svg style="height:300px;width:300px;" xmlns="http://www.w3.org/2000/svg" version="1.1">
              <polygon points="100 10,40 180,190 60,10 60,160 180" style="fill:none;stroke:black;stroke-width:5"/>
          </svg>
          
          

          效果:

          代碼解析:

          • <polygon>:這是一個多邊形元素,用于在SVG圖像中繪制多邊形。
          • points="100 10,40 180,190 60,10 60,160 180":這個屬性定義了多邊形的頂點坐標。在這個例子中,多邊形有七個頂點:(100,10), (40,180), (190,60), (10,60), (160,180)。
          • style="fill:none;stroke:black;stroke-width:5":這設置了多邊形的樣式。 fill:none:設置填充顏色為無色。 stroke:black:設置線條顏色為黑色。 stroke-width:5:設置線條寬度為5像素。

          綜上,這段代碼會在一個300x300像素的SVG圖像中繪制一個由七個頂點定義的多邊形,沒有填充顏色,線條顏色為黑色,線條寬度為5像素。

          10.7 路徑

          路徑數據:

          1. M (moveto): 該命令開始一個新的路徑,并設置當前點。其后的命令將從這個點開始繪制線條或曲線。
          2. L (lineto): 該命令從當前點繪制一條直線到指定點。
          3. H (horizontal lineto): 該命令從當前點繪制一條水平線到指定x坐標。y坐標保持不變。
          4. V (vertical lineto): 該命令從當前點繪制一條垂直線到指定y坐標。x坐標保持不變。
          5. C (curveto): 該命令繪制一個貝塞爾曲線,需要提供三個點:控制點和結束點。
          6. S (smooth curveto): 該命令繪制一個平滑的貝塞爾曲線,它使用前一個點和當前點作為控制點,并連接到下一個點。
          7. Q (quadratic Bézier curve): 該命令繪制一個二次貝塞爾曲線,需要提供兩個點:控制點和結束點。
          8. T (smooth quadratic Bézier curveto): 該命令繪制一個平滑的二次貝塞爾曲線,它使用前一個點和當前點作為控制點,并連接到下一個點。
          9. A (elliptical Arc): 該命令繪制一個橢圓弧,需要提供起始角度、結束角度、半徑和旋轉角度等參數。
          10. Z (closepath): 該命令關閉路徑,將當前點連接到起始點,形成一個封閉圖形。

          示例:

          畫一個三角形

          <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
            <path d="M150 0 L75 200 L205 270 Z" />
          </svg>
          

          效果:

          代碼解析:

          • <path>:這是一個路徑元素,用于繪制線條和曲線。
          • d="M150 0 L75 200 L205 270 Z":這是路徑的指令。這些指令定義了圖形的形狀和位置。 M150 0:移動到(150, 0)點。 L75 200:從當前點繪制一條直線到(75, 200)點。 L205 270:從當前點繪制一條直線到(205, 270)點。 Z:關閉路徑,將當前點連接到起始點,形成一個封閉圖形。

          綜上,這段代碼將在SVG圖像中繪制一個由三個直線段組成的封閉圖形,其頂點坐標分別為(150, 0),(75, 200)和(205, 270)。

          11. 設置樣式

          11.1 屬性樣式

          直接在元素屬性上設置樣式,比如將矩形填充色改成粉紅

          <svg width="400" height="400" style="border: 1px solid red;">
            <rect
              x="100"
              y="100"
              width="200"
              height="100"
              fill="pink"
            />
          </svg>
          

          11.2 內聯樣式

          把所有樣式寫在 style 屬性里

          <svg width="400" height="400" style="border: 1px solid red;">
            <rect
              x="100"
              y="100"
              width="200"
              height="100"
              style="fill: pink;"
            />
          </svg>
          

          11.3 內部樣式

          將樣式寫在 <style> 標簽里

          <style>
            .rect {
              fill: pink;
            }
          </style>
          
          <svg width="400" height="400" style="border: 1px solid red;">
            <rect
              x="100"
              y="100"
              width="200"
              height="100"
              class="rect"
            />
          </svg>
          

          11.4 外部樣式

          將樣式寫在 .css 文件里,然后在頁面中引入該 CSS 文件。

          12. SVG動畫

          SVG動畫可以通過多種方式實現,包括使用SMIL、CSS和JavaScript。

          12.1 SMIL

          能讓SVG不靠JavaScript與CSS就能動起來是因為使用了SMIL(Synchronized Multimedia Integration Language),是W3C的標準之一,旨在以XML格式提供多媒體的交互表現(白話點其實就是動畫),是Web上動畫的開路先鋒,啟發了Web animation與CSS animation。SVG與SMIL的開發團隊合作,讓SVG能利用SMIL達到如下效果:

          1. 動畫化元素的數值屬性
          2. 動畫化元素的transform屬性(平移、旋轉)
          3. 動畫化元素顏色
          4. 軌跡路線移動動畫,類似于CSS中的offset-path

          光是這些特性就夠我們組合出很多種的動畫了, 使用方法也不難,只要在SVG元素內置入以下四種元素即可操作動畫:

          • <set>
          • <animate>
          • <animateTransform>
          • <animateMotion>

          例如:

          <circle cx=“56.7573”cy=“92.8179”r=“2”fill=“black”stroke=“black”stroke-width=“1”>
              <set attributeName=“cy”to=“105.7318”begin=“2s”/>
          </circle>
          

          代碼解析:

          這段代碼用于描述一個圓形,并在特定時間改變其中心點的y坐標。

          1. <circle cx="56.7573" cy="92.8179" r="2" fill="black" stroke="black" stroke-width="1" />
          2. <circle>: 這是一個SVG元素,用于繪制一個圓形。
          3. cx="56.7573" 和 cy="92.8179": 定義了圓心的x和y坐標。這里,圓心的初始位置是(56.7573, 92.8179)。
          4. r="2": 定義了圓的半徑為2單位。
          5. fill="black": 定義了圓的填充顏色為黑色。
          6. stroke="black": 定義了圓的邊框顏色為黑色。
          7. stroke-width="1": 定義了圓的邊框寬度為1單位。
          8. <set attributeName="cy" to="105.7318" begin="2s"/>
          9. <set>: 這是一個SVG動畫元素,用于改變元素的屬性。
          10. attributeName="cy": 指定要改變的屬性是cy,即中心點的y坐標。
          11. to="105.7318": 指定新的屬性值,即圓心的y坐標將變為105.7318。
          12. begin="2s": 指定動畫開始的時間,這里表示動畫將在2秒后開始。

          綜上,這段代碼繪制了一個半徑為2單位、填充和邊框顏色均為黑色的圓形,并設置了一個動畫,使圓心的y坐標在2秒后從92.8179變為105.7318。

          12.2 基于 CSS 的 SVG 動畫

          通過設置一組 CSS 樣式和關鍵幀,可以實現基于時間或基于事件的 SVG 動畫。這種方式實現的 SVG 動畫相對簡單,具有易于實現、可讀性好、易于維護、性能良好等優點。

          下面是一個基于 CSS 的 SVG 動畫示例,實現了一個圓形的旋轉動畫:

          <svg>
            <circle cx="50" cy="50" r="40" />
          </svg>
          
          <style>
            circle {
              fill: red;
              animation: rotate 2s linear infinite;
            }
            @keyframes rotate {
              to {
                transform: rotate(360deg);
              }
            }
          </style>
          

          12.3 基于 JavaScript 的 SVG 動畫

          通過 JavaScript,可以對 SVG 圖形進行更加自由和復雜的動畫操作。JavaScript 可以對 SVG 元素的各種屬性,如位置、大小、顏色、透明度、路徑等進行操作,配合定時器和事件監聽等方法,實現豐富多彩的 SVG動畫。

          下面是一個基于 JavaScript 的 SVG 動畫示例,實現了一個小球自由落體,碰撞彈跳的效果:

          <svg>
            <circle id="ball" cx="50" cy="50" r="20" />
          </svg>
          
          <script>
            let ball=document.querySelector("#ball");
            let startPos=50;
            let endPos=200;
            let speed=3; // 設置球下落速度
            let gravity=0.2; // 設置加速度
          
            function moveBall() {
              let pos=parseFloat(ball.getAttribute("cy"));
              let vel=parseFloat(ball.getAttribute("data-vel")) || 0;
          
              // 計算球的速度和位置
              vel +=gravity;
              pos +=vel * speed;
          
              // 碰撞檢測
              if (pos + 20 > endPos) {
                pos=endPos - 20;
                vel=-vel * 0.8;
              }
          
              // 更新球的位置和速度
              ball.setAttribute("cy", pos);
              ball.setAttribute("data-vel", vel);
          
              // 循環移動球
              if (pos < endPos - 20) {
                window.requestAnimationFrame(moveBall);
              }
            }
          
            moveBall();
          </script>
          

          13. API一覽表

          14. 總結

          總的來說,SVG是一種強大的圖形描述語言,具有可縮放性、交互性、可訪問性、靈活性和跨平臺兼容性等特點和優勢。它可以用于創建各種復雜的二維矢量圖形和富交互的Web應用,為Web設計和開發提供了更多的可能性。

          隨著Web技術的不斷發展,相信SVG的應用范圍還將不斷擴大。



          原文鏈接:https://juejin.cn/post/7322344486159106100

          端訓練營:1v1私教,終身輔導計劃,幫你拿到滿意的 offer 已幫助數百位同學拿到了中大廠 offer。歡迎來撩~~~~~~~~

          Hello,大家好,我是 Sunday。

          當各種框架以及復雜的 JS 知識開始充斥著我們的工作環境時。誰還能夠記得,以 CSS 來構建更加良好的用戶體驗,也是前端的一個重要組成部分。

          所以說,今天咱們就來看看 css 的優化方案-終極合集。一共一百條,有點多,適合收藏(點個贊和分享自然更好了)

          01. 啟動平滑滾動

          添加scroll-behavior:smooth到元素中<html>,使整個頁面能夠平滑滾動。

          html{  
              scroll-behavior: smooth;  
            }
          

          02. 鏈接的屬性選擇器

          此選擇器以href屬性以“https”開頭的鏈接為目標。

          a[href^="https"] {
              color: blue;
          }
          

          03. ~用于合并節點

          選擇作為<h2>同級元素的所有<p>元素。

          h2 ~ p {
              color: blue;
          }
          

          04. :not()偽類

          此選擇器將樣式應用于不具有類“Special”的 li。

          li:not(.special) {
              font-style: italic;
          }
          

          05. 響應式排版的視窗單位 vw

          使用視區單位(vw, vh, vmin, vmax)可以使字體大小與視區大小相對應。

          h1 {
              font-size: 5vw;
          }
          

          06. :empty 對于空元素

          此選擇器以空的<p>元素為目標并隱藏它們。

          p:empty {
              display: none;
          }
          

          07. 自定義特性(變量)

          可以定義和使用自定義特性,以便更輕松地創建主題和進行維護。

          :root {
              --main-color: #3498db;
          }
          
          h1 {
              color: var(--main-color);
          }
          

          08. Object-fit 圖像控件的適配性

          object-fit 控制替換元素(如<img>)的內容應該如何調整大小。

          img {
              width: 100px;
              height: 100px;
              object-fit: cover;
          }
          

          09. 簡化布局的網格

          Css網格提供了一種功能強大的方式來以更直接的方式創建布局。

          .container {
              display: grid;
              grid-template-columns: 1fr 2fr 1fr;
          }
          

          10. :focus-within 偽類

          如果一個元素包含任何帶有:focus的子元素,則:focus-Win會選擇該元素。

          form:focus-within {
              box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
          }
          

          11. 使用Flexbox垂直居中

          使用FlexBox可輕松地將內容在容器中水平和垂直居中。

          .container {
              display: flex;
              align-items: center;
              justify-content: center;
          }
          

          12. 自定義選定內容的突出顯示顏色

          自定義在網頁上選擇文本時的突出顯示顏色。

          ::selection {
              background-color: #ffcc00;
              color: #333;
          }
          

          13. 設置占位符文本的樣式

          設置輸入字段內占位符文本的樣式。

          ::placeholder {
              color: #999;
              font-style: italic;
          }
          

          14. 漸變邊界

          使用Backback-Clip屬性創建漸變邊框。

          .element {
              border: 2px solid transparent;
              background-clip: padding-box;
              background-image: linear-gradient(to right, red, blue);
          }
          

          15. 使用vw實現可變字體大小

          根據視口寬度調整字體大小,實現更加響應式的排版。

          body {
              font-size: calc(16px + 1vw);
          }
          

          16. 使用錐形漸變創建多彩元素

          利用錐形漸變創建豐富多彩且動態的背景。

          .element {
              background: conic-gradient(#ff5733, #33ff57, #5733ff);
          }
          

          17. 使用clamp()函數實現響應式文本

          使用clamp()函數設置字體大小的范圍,確保在不同屏幕尺寸下的可讀性。

          .text {
              font-size: clamp(16px, 4vw, 24px);
          }
          

          18. 使用font-display: swap;優化字體加載

          使用font-display: swap;屬性提高網頁字體性能,讓自定義字體加載時顯示備用字體。

          @font-face {
              font-family: 'YourFont';
              src: url('your-font.woff2') format('woff2');
              font-display: swap;
          }
          

          19. 自定義滾動吸附點

          為了實現更順暢的滾動體驗,特別是在圖庫或滑塊中,實現自定義滾動吸附點。

          .scroll-container {
              scroll-snap-type: y mandatory;
          }
          
          .scroll-item {
              scroll-snap-align: start;
          }
          

          20. 使用字體變體設置進行可變字體樣式

          利用可變字體和font-variation-settings屬性對字體的粗細、樣式等進行精細調節。

          .text {
              font-family: 'YourVariableFont', sans-serif;
              font-variation-settings: 'wght' 500, 'ital' 1;
          }
          

          21. 自定義下劃線樣式

          使用border-bottom和text-decoration的組合來自定義鏈接的下劃線樣式。

          a {
              text-decoration: none;
              border-bottom: 1px solid #3498db;
          }
          

          22. 隱藏無障礙文本

          使用class sr-only來在視覺上隱藏元素,但保持其對屏幕閱讀器的可訪問性。

          .sr-only {
              position: absolute;
              width: 1px;
              height: 1px;
              margin: -1px;
              padding: 0;
              overflow: hidden;
              clip: rect(0, 0, 0, 0);
              border: 0;
          }
          

          23. 保持元素縱橫比

          通過使用padding來保持元素(如圖片或視頻)的縱橫比。

          .aspect-ratio-box {
              position: relative;
              width: 100%;
              padding-bottom: 75%; /* 根據需要調整 */
          }
          
          .aspect-ratio-box > iframe {
              position: absolute;
              width: 100%;
              height: 100%;
          }
          

          24. 選擇偶數和奇數元素

          使用:nth-child偽類來為交替元素設置樣式。

          li:nth-child(even) {
              background-color: #f2f2f2;
          }
          
          li:nth-child(odd) {
              background-color: #e6e6e6;
          }
          

          25. CSS計數器

          使用counter-reset和counter-increment屬性在列表中創建自動編號。

          ol {
              counter-reset: item;
          }
          
          li {
              counter-increment: item;
          }
          
          li::before {
              content: counter(item) ". ";
          }
          

          26. 多重背景圖片

          使用不同屬性為元素應用多個背景圖片。

          .bg {
              background-image: url('image1.jpg'), url('image2.jpg');
              background-position: top left, bottom right;
              background-repeat: no-repeat, repeat-x;
          }
          

          27. 優化文本流暢性的連字符

          通過使用hyphens屬性允許自動連字符以提高文本的可讀性。

          p {
              hyphens: auto;
          }
          

          28. 使用CSS變量進行動態樣式

          利用CSS變量創建動態且可重用的樣式。

          :root {
              --main-color: #3498db;
          }
          
          .element {
              color: var(--main-color);
          }
          

          29. 鍵盤導航的焦點樣式

          改善焦點樣式以提高鍵盤導航和可訪問性。

          :focus {
              outline: 2px solid #27ae60;
          }
          

          30. 平滑漸變過渡

          為漸變背景應用平滑過渡效果,增強視覺效果。

          .gradient-box {
              background: linear-gradient(45deg, #3498db, #2ecc71);
              transition: background 0.5s ease;
          }
          
          .gradient-box:hover {
              background: linear-gradient(45deg, #e74c3c, #f39c12);
          }
          

          31. 文本描邊效果

          為文本添加描邊,產生獨特的視覺效果。

          h1 {
              color: #3498db;
              -webkit-text-stroke: 2px #2c3e50;
          }
          

          32. 純CSS漢堡菜單

          創建一個簡單的漢堡菜單,無需使用JavaScript。

          .menu-toggle {
              display: none;
          }
          
          .menu-toggle:checked + nav {
              display: block;
          }
          /* 在這里添加漢堡菜單圖標和菜單樣式 */
          

          33. CSS :is()選擇器

          使用:is()偽類簡化復雜的選擇器。

          :is(h1, h2, h3) {
              color: blue;
          }
          

          34. CSS變量中的計算

          在CSS變量中進行計算,實現動態樣式。

          :root {
              --base-size: 16px;
              --header-size: calc(var(--base-size) * 2);
          }
          
          h1 {
              font-size: var(--header-size);
          }
          

          35. attr()函數用于內容

          使用attr

          ()函數檢索和顯示屬性值。

          div::before {
              content: attr(data-custom-content);
          }
          

          36. CSS遮罩效果

          為圖像應用遮罩,創造出獨特的效果。

          .masked-image {
              mask: url(mask.svg);
              mask-size: cover;
          }
          

          37. 混合模式

          嘗試使用混合模式創建有趣的色彩效果。

          .blend-mode {
              background: url(image.jpg);
              mix-blend-mode: screen;
          }
          

          38. 縱橫比屬性

          使用縱橫比屬性簡化縱橫比盒子的創建。

          .aspect-ratio-box {
              aspect-ratio: 16/9;
          }
          

          39. shape-outside實現文本環繞

          使用shape-outside屬性使文本圍繞指定形狀,實現更動態的布局。

          .shape-wrap {
              float: left;
              width: 150px;
              height: 150px;
              shape-outside: circle(50%);
          }
          

          40. ch單位用于一致的尺寸

          ch單位表示所選字體中字符“0”的寬度,可用于創建一致且響應式的布局。

          h1 {
              font-size: 2ch;
          }
          

          41. ::marker偽元素

          使用::marker偽元素為列表項標記設置樣式。

          li::marker {
              color: blue;
          }
          

          42. element()函數用于背景

          使用element()函數動態引用元素作為背景。

          .background {
              background: element(#targetElement);
          }
          

          43. Flexbox實現粘性底部

          使用Flexbox創建粘性底部布局。

          body {
              display: flex;
              flex-direction: column;
              min-height: 100vh;
          }
          
          main {
              flex: 1;
          }
          

          44. scroll-padding實現平滑滾動

          通過調整scroll padding來改善滾動行為。

          html {
              scroll-padding: 20px;
          }
          

          45. 交互式高亮效果

          使用CSS變量創建交互式高亮效果。

          .highlight {
              --highlight-color: #e74c3c;
              background-image: linear-gradient(transparent 0%, var(--highlight-color) 0%);
              background-size: 100% 200%;
              transition: background-position 0.3s;
          }
          
          .highlight:hover {
              background-position: 0 100%;
          }
          

          46. 自定義單選框和復選框樣式

          無需圖像,樣式化單選框和復選框。

          input[type="radio"] {
              appearance: none;
              -webkit-appearance: none;
              border-radius: 50%;
              width: 16px;
              height: 16px;
              border: 2px solid #3498db;
          }
          
          input[type="checkbox"] {
              appearance: none;
              -webkit-appearance: none;
              width: 16px;
              height: 16px;
              border: 2px solid #e74c3c;
          }
          

          47. textarea的resize屬性

          使用resize屬性控制textarea的調整大小行為。

          textarea {
              resize: vertical;
          }
          

          48. 文本漸變效果

          使用background-clip和text-fill-color屬性為文本創建漸變效果。

          .gradient-text {
              background-image: linear-gradient(45deg, #3498db, #2ecc71);
              background-clip: text;
              color: transparent;
          }
          

          49. 對長單詞使用word-break屬性

          使用word-break屬性控制長單詞或沒有空格的字符串的斷行和換行。

          .long-words {
              word-break: break-all;
          }
          

          50. font-variation-settings用于可變字體

          使用font-variation-settings屬性微調可變字體樣式。

          .custom-font {
              font-family: 'MyVariableFont';
              font-variation-settings: 'wght' 600, 'ital' 1;
          }
          

          51. 混合模式用于創意疊加效果

          使用混合模式為元素應用疊加效果,創造出有趣的視覺效果。

          .overlay {
              mix-blend-mode: overlay;
          }
          

          52. 為損壞的圖像應用樣式

          使用:broken偽類為損壞的圖像應用樣式。

          img:broken {
              filter: grayscale(100%);
          }
          

          53. CSS形狀

          使用CSS形狀為設計創建有趣的效果。

          .shape {
              shape-outside: circle(50%);
          }
          

          54. 屬性選擇器用于子字符串匹配

          使用*=操作符的屬性選擇器進行子字符串匹配。

          [data-attribute*="value"] {
              /* 樣式 */
          }
          

          55. backdrop-filter用于模糊背景

          使用backdrop-filter為背景應用模糊效果,實現毛玻璃效果。

          .element {
              backdrop-filter: blur(10px);
          }
          

          56. CSS環境變量

          使用env()函數在CSS中訪問環境變量。

          .element {
              margin-top: env(safe-area-inset-top);
          }
          

          57. CSS屬性計數器

          使用:nth-child選擇器計算特定屬性值的出現次數。

          [data-category="example"]:nth-child(3) {
              /* 第三次出現的樣式 */
          }
          

          58. CSS形狀實現文本環繞

          使用shape-outside結合polygon()函數精確地控制文本圍繞不規則形狀的布局。

          .text-wrap {
              shape-outside: polygon(0 0, 100% 0, 100% 100%);
          }
          

          59. 自定義鼠標樣式

          使用cursor屬性更改鼠標樣式。

          .custom-cursor {
              cursor: pointer;
          }
          

          60. HSLA用于透明顏色

          使用HSLA值表示透

          明顏色,對alpha通道進行更精細的控制。

          .transparent-bg {
              background-color: hsla(120, 100%, 50%, 0.5);
          }
          

          61. text-orientation實現縱向文本

          使用text-orientation屬性將文本垂直旋轉。

          .vertical-text {
              text-orientation: upright;
          }
          

          62. font-variant用于小型大寫字母

          使用font-variant屬性應用小型大寫字母樣式。

          .small-caps {
              font-variant: small-caps;
          }
          

          63. box-decoration-break用于背景分割

          使用box-decoration-break屬性控制跨多行斷開的元素的背景,實現更靈活的文本環繞。

          .split-background {
              box-decoration-break: clone;
          }
          

          64. :focus-visible用于特定焦點樣式

          僅在元素處于焦點且焦點不是由鼠標單擊提供時應用樣式。

          input:focus-visible {
              outline: 2px solid blue;
          }
          

          65. text-rendering實現最佳字體呈現

          通過text-rendering屬性改善文本呈現效果。

          .optimized-text {
              text-rendering: optimizeLegibility;
          }
          

          66. initial-letter用于大寫字母

          使用initial-letter為塊級元素的第一個字母應用樣式。

          p::first-letter {
              font-size: 2em;
          }
          

          67. overscroll-behavior用于滾動過度

          控制用戶滾動超出滾動容器邊界時的行為。

          .scroll-container {
              overscroll-behavior: contain;
          }
          

          68. writing-mode實現縱向布局

          使用writing-mode屬性創建縱向布局。

          .vertical-layout {
              writing-mode: vertical-rl;
          }
          

          69. ::cue用于HTML5標題樣式

          使用::cue偽元素為HTML5字幕文本應用樣式。

          ::cue {
              color: blue;
          }
          

          70. line-clamp截斷多行文本

          使用line-clamp屬性限制元素中顯示的行數。

          .truncated-text {
              display: -webkit-box;
              -webkit-line-clamp: 3;
              -webkit-box-orient: vertical;
              overflow: hidden;
          }
          

          71. scroll-snap-align

          scroll-snap-align屬性控制滾動容器內滾動捕捉點的對齊方式,確保對滾動行為進行精確控制,提升用戶體驗。

          .container {
              scroll-snap-type: x mandatory;
          }
          
          .item {
              scroll-snap-align: center;
          }
          

          72. overscroll-behavior

          overscroll-behavior使您可以定義瀏覽器在滾動超出范圍時的處理方式,從而避免不必要的滾動效果,提升整體滾動體驗。

          .scrollable {
              overscroll-behavior: contain;
          }
          

          73. font-kerning

          font-kerning允許對字符間距進行微調,通過調整文本元素中字符之間的間距,確保最佳的可讀性。

          p {
              font-kerning: auto;
          }
          

          74. shape-margin

          與CSS形狀一起使用時,shape-margin指定浮動元素形狀周圍的邊距,可以更精確地控制文本環繞和布局。

          .shape {
              shape-margin: 20px;
          }
          

          75. scroll-margin

          scroll-margin設置滾動容器邊緣與滾動內容開始之間的邊距,提升用戶體驗,為滾動提供緩沖空間。

          .container {
              scroll-margin-top: 100px;
          }
          

          76. tab-size

          tab-size屬性控制文本區域中制表符的寬度,確保在不同用戶代理中一致的顯示。

          pre {
              tab-size: 4;
          }
          

          77. text-align-last

          text-align-last決定塊級元素中最后一行文本的對齊方式,為多行塊文本提供對齊控制。

          p {
              text-align-last: justify;
          }
          

          78. text-justify

          此屬性控制文本兩端對齊的行為,指定是使用單詞間還是字符間距進行文本對齊。

          p {
              text-align: justify;
              text-justify: inter-word;
          }
          

          79. column-fill

          column-fill決定如何在多列布局中分配內容,允許內容依次或平衡分布在列中。

          .container {
              column-count: 3;
              column-fill: auto;
          }
          

          80. outline-offset

          outline-offset調整輪廓與元素邊緣之間的空間,不影響布局,為輪廓的外觀提供更細致的控制。

          button {
              outline: 2px solid blue;
              outline-offset: 4px;
          }
          

          81. font-variant-numeric

          此屬性允許精細控制數字字體渲染,啟用特性如數字大小寫和分數、序數指示器等。

          p {
              font-variant-numeric: lining-nums;
          }
          

          82. font-optical-sizing

          啟用或禁用字體光學大小調整,以調整字符的間距和比例,實現在不同字體大小下更好的視覺和諧。

          p {
              font-optical-sizing: auto;
          }
          

          83. text-decoration-thickness

          精確控制文本裝飾(如下劃線、上劃線和刪除線)的粗細,實現精細化定制。

          p {
              text-decoration-thickness: 2px;
          }
          

          84. text-decoration-skip-ink

          text-decoration-skip-ink屬性控制文本裝飾(如下劃線)在被墨水遮擋的情況下是否繼續繪制,提升可讀性。

          a {
              text-decoration-skip-ink: auto;
          }
          

          85. word-spacing

          word-spacing屬性控制字詞間距,調整文本的緊湊度和可讀性。

          p {
              word-spacing: 2px;
          }
          

          86. hyphenation

          通過調整斷字點和斷字行為,提高文本在窄列中的美觀度和可讀性。

          p {
              hyphens: auto;
          }
          

          87. background-blend-mode

          background-blend-mode屬性允許背景圖像與其下方的背景顏色進行混合,產生出獨特的視覺效果。

          .element {
              background-image: url('image.jpg');
              background-color: #3498db;
              background-blend-mode: multiply;
          }
          

          88. text-decoration-color

          text-decoration-color屬性控制文本裝飾的顏色,為鏈接和裝飾文本提供更靈活的樣式。

          a {
              text-decoration: underline;
              text-decoration-color: red;
          }
          

          89. overflow-anchor

          overflow-anchor屬性指定了在容器的滾動范圍內滾動時哪些內容應保持可見,提升用戶體驗。

          .container {
              overflow-anchor: none;
          }
          

          90. contain-intrinsic-size

          contain-intrinsic-size屬性定義了內聯大小計算函數的大小,實現更精確的布局控制。

          img {
              contain-intrinsic-size: 200px 300px;
          }
          

          91. line-gap

          line-gap屬性定義了元素的行間距,可以為文字和其他行內元素提供更大的空間。

          p {
              line-gap: 1.5;
          }
          

          92. text-underline-offset

          text-underline-offset屬性控制文本下劃線相對于基線的垂直偏移量,實現更加精確的下劃線定位。

          a {
              text-decoration: underline;
              text-underline-offset: 3px;
          }
          

          93. text-decoration-line

          text-decoration-line屬性指定要繪制的裝飾線的類型,可用于單獨控制上劃線、下劃線、刪除線等。

          a {
              text-decoration-line: underline overline;
          }
          

          94. text-emphasis

          text-emphasis屬性為文本設置強調標志,用于提高關鍵字的可讀性。

          em {
              text-emphasis: filled circle;
          }
          

          95. text-orientation

          text-orientation屬性控制文本的方向,適用于縱向文本和日文排版等情況。

          .vertical-text {
              text-orientation: sideways-right;
          }
          

          96. background-origin

          background-origin屬性確定背景圖片的起始位置,影響背景圖片與邊框的相對位置。

          .element {
              background-image: url('image.jpg');
              background-origin: content-box;
          }
          

          97. counter-set

          counter-set屬性在使用counter-reset創建的計數器值基礎上,顯式設置一個新的值。

          ol {
              counter-set: section 1;
          }
          

          98. hanging-punctuation

          hanging-punctuation屬性控制標點符號是否在行框之外懸掛,以提高排版的美觀度和可讀性。

          p {
              hanging-punctuation: last allow-end;
          }
          

          99. line-break

          line-break屬性控制文本換行行為,確保在指定的斷點處進行斷行。

          p {
              line-break: anywhere;
          }
          

          100. text-justify

          text-justify屬性指定如何分配額外的空間,以便充分利用容器的寬度。

          019年3月1日,vivo發布了旗下全新子品牌iQOO,與以往旗下產品所不同的是,此次發布的全新旗艦手機,在產品性能、設計、價格等多個方面都打破了原有消費者對vivo的印象,以“高性價”的表現方式呈現在世人面前,而性能也達到了目前手機市場的頂尖之列,眾人對其可謂是期待滿滿。iQOO作為vivo旗下的一款全新子品牌旗艦,“生而強悍”的強勢宣傳語都彰顯著其強大之處,但是其表現是否真如傳言般強悍呢,除了強悍的性能還有何突出優勢?這是一個值得我們一起探討的問題!

          一改傳統機身外觀 酷炫感十足的變身

          iQOO作為一款全新的vivo旗艦品牌,產品包裝在延續了原有的長形設計,同時加入了與其相匹配的產品特色,比較有特點的長條形燈效與不規則開箱口的設計,彰顯著其與眾不同的特點。

          iQOO外觀設計借鑒了超跑的“Speed Art”的設計語言,將暗夜光軌紋理與3D炫彩玻璃后蓋之中,每一根光軌線條采用精湛的技術,通過國外精密的鉆石刀在銅柱上雕刻出10um的紋理,然后經過復雜的工藝在光學菲林上轉印紋路,再通過光學鍍膜機把700納米厚的二氧化硅等材料蒸發到菲林上,從不同的角度有著不同的工藝之美,透露著其特有的速度與力量的效果,呈現出低調中的個性,觀賞感與辨識度極強。

          科技視訊入手的這款是12GB+256GB“猛獸版”騎士黑版本,在機身表面還加入了碳纖維紋理,握持時會感受到不錯的阻尼感,觸摸時既有金屬的質感,又有玻璃的細膩,上手非常舒適。

          另外機身背面的中間還增加了一個隱藏式1680萬色的LED燈帶,并且上方印著斜體的“MONSTER INSIDE”字符標識,與背部的紋理融為一體,呈現出更加酷炫與速度疾馳的感覺,而且LED燈效的加入也帶來了非常炫酷的燈光體驗,此LED燈在來電、通話、通知、充電、音樂、Jovi等場景都可迸發出不一樣的閃亮燈效,激發一顆電競之心。

          iQOO的后置三攝與“iQOO”的品牌字樣標識分別排列在背面的左側上下位置,處于同一豎列線條,保持了機身的協調之美。另外iQOO還增加了NFC功能,將其識別區域設置在背面的上半部分,有效提升日常“刷手機”時的NFC識別準確率,在日常生活中可以提供更為靈敏、便利的NFC識別體驗。

          機身左右邊框還增加了超跑腰線設計,通過將側邊框挖出兩條橫槽,類似于跑道的設計,使得機身從側邊觀感更為纖薄,常見的電源鍵、音量鍵等按鍵也集成在邊框的跑道之中,同時按鍵上方也增加了車輪紋理,按壓感極為舒適。

          另外騎士黑版本的iQOO機身電源鍵采用了鮮艷的亮橘色設計,與機身整體的黑色呈現出強烈的對比,點睛之筆的設計,讓手機顯得更為高端一些。

          最令人驚喜的是,iQOO在機身右側中框兩端配備了電競手機才配備的隱藏游戲壓感按鍵,可實現類如手柄的RB、LB鍵的操作功能,在“吃雞”類游戲中能夠實現“四指操作”,宛如自帶“物理外掛”的存在。


          iQOO并沒有增加紅外傳感器設計,無法滿足手機變身遙控器的需求,雖然日常此功能使用頻率并不高,但是依舊感覺有些許遺憾,機身的頂端僅有常見的3.5mm耳機孔與降噪麥克風孔。

          機身的底端則是常見的揚聲器、麥克風以及Type-C插口,無論正反都可以很好與電源適配器相匹配,設計的風格較為簡潔,保持了其根本穩中帶酷的基調。


          6.41英寸水滴FHD+顯示屏 第六代屏幕指紋解鎖加持

          iQOO的手機正面搭載了一塊6.41英寸水滴屏,正面造型設計較為簡潔,并盡可能減少機身正面元器件對屏幕的占有,采用19.5:9屏幕比例設計,機身觀感極為修長,除了帶來高達91.7%的屏占比,同時也呈現出更為寬廣的畫面效果。

          屏幕采用了AMOLED的升級版的Super AMOLED材質,AMOLED屏幕分為三層:顯示屏幕、觸摸感應面板和最外面的那層玻璃,Super AMOELD則是取消了中間的觸摸感應面板,將AMOLED感應層做在了屏幕之上,以此帶來的好處就是操控更靈敏,再加上三星自研的mDNIe引擎,使得Super AMOLED屏幕看起來非常絢麗,另外屏幕分辨率為2340x1080,屏幕對比度60000:1,并且可支持數碼電影院的100%DCI-P3,可提供更為鮮艷、亮麗、色彩豐富的畫面效果,屏幕觀感通透且舒適。

          為了帶來更大的屏占比,iQOO將前置雙核1200萬像素的攝像頭集成在“水滴”之中,并同時將聽筒與上邊框相結合,形成隱藏式聽筒,進一步減少器件對屏幕的占有,提高屏幕可視視野。

          除了機身額頭的優化之外,iQOO機身邊框下巴同樣進行了縮減,采用COF封裝工藝將下邊框縮減至極窄范圍內,在保證不會產生誤觸的同時,帶來更窄的邊框設計,讓屏幕視覺觀感更為震撼。

          另外iQOO依托vivo近幾年不斷進步的科研力量,搭載了時下前沿的屏幕指紋解鎖技術,在超光感屏幕下方加入了屏幕指紋識別模塊。此次iQOO全新搭載的屏幕指紋解鎖技術不僅融合了vivo前五代技術,還加入了超過千萬臺的屏幕指紋解鎖數據,同時結合了高通驍龍855的新一代DSP硬件加速算法,實際解鎖體驗得到了進一步提升,360°指紋解鎖無壓力。

          在使用指紋識別功能時,大家僅需進入手機設置中錄入指紋,通過不斷重復移動、放置手指位置,從而提高手指的識別區域,進而體驗更靈敏的指紋解鎖方式。

          除了可通過屏下指紋進行解鎖之外,iQOO還可通過人臉識別,可在雙手不便時帶來更便利的解鎖體驗,人臉解鎖的靈敏度并沒有因為受到前置攝像頭區域的縮小而改變,實際解鎖與往常無異。人臉信息錄入的方法與其它手機相同,只需進入解鎖界面,選擇錄入面部信息并隨后開啟面部解鎖功能即可。


          殘暴的高通驍龍855芯片 眾多物理外掛加持

          生而強悍的iQOO在性能上不可謂是非常強悍,作為此品牌的第一款機型,處理器采用新一代7nm制程工藝的高通驍龍855處理器,CPU搭載定制設計Kryo485架構內核,最高主頻可達2.84Ghz,CPU單核性能提升45%。GPU采用全新的Adreno640,圖形渲染速度提升20%,性能再戰巔峰之巔。

          同時iQOO還配備了12GB+256GB大內存,其中運行內存采用的是LPDDR4X規格,可保證長時間提供流暢用機體驗,配以驍龍855處理器等強悍的硬件性能支撐,足以可用“完虐”二字來應對日常的游戲、觀影以及多任務運行等多個方面體驗。

          在安兔兔性能跑分中獲得369130分,其中CPU120302分,GPU156018分,在性能排行榜中排名第二,位于同樣搭載驍龍855芯片的小米9與聯想Z5 Pro GT版之間。

          在geekbench4跑分評測中單核3471分,多核11062分,在RenderScript性能評測中獲得7223分,與搭載驍龍855芯片的其它手機大致相同。

          在魯大師性能評測中故意的360581分,整體性能超越99%的對手,其中CPU為118681分,GPU為1544375分,在性能排行中位于第一位。在體驗評測中獲得139.58分,在反應瀏覽器性能的HTML5評測中獲得45856分。

          在魯大師AI性能評測中獲得48590分,在所有的機型中排名第1,超越99%的其它手機,高通驍龍855芯片的AI性能此次也得以提升,是上一代的3倍之多,可為日常的AI智能體驗提供強勁的硬件基礎。

          除了強大的硬件支撐之外,iQOO系統還添加了全新的vivo Multi-Turbo軟件方面的優化,除了可支持原有的Game Turbo游戲專屬加速之外,此次還新增了Net Turbo網絡加速,在游戲延時大或者Wi-Fi質量差時,會自動將網絡切換到4G網絡,以保證游戲的最佳網速供應。另外游戲體驗時,Center Turbo處理器加速會優化后臺運行程序資源,從而保證游戲的CPU與內存資源都保持在最大情況下,從而體驗更為暢快的游戲體驗。

          另外iQOO系統還增加了游戲魔盒,可通過屏蔽游戲干擾、降低功耗、提升游戲性能等多個方面,營造出更適合游戲體驗的環境。另外在游戲空間也可觀察手機CPU、溫度、網絡負載等各種情況,做到心有所屬。

          機身的溫度一直是影響游戲體驗的重要因素之一,過熱很容易引發處理器性能下降,從而導致游戲體驗卡頓、不流暢等現象的發生。針對此類問題,iQOO加入了“超級液冷散熱”技術,將機身背面內部增加了由萬級導熱系數熱管、可固化導熱凝膠、高導熱鋁合金框架、多層復合石墨熱膜共同組成的多層散熱結構,通過高溫蒸發吸熱、低溫液化放熱的原理達到快速降溫效果,在長時間游戲、邊充邊玩等容易發熱場景下,可有效控制機身溫度情況,保證手機性能屬于最佳狀態。

          在《王者榮耀》游戲體驗時,得益于高通驍龍855帶來的驍龍Elite Gaming、Vulkan1.1圖形庫以及Super AMOLED超感顯示屏的加持,在游戲體驗時畫面以及角色的質感更為細膩、豐富,19.5:9的視野更為寬廣,游戲可以達到高響應率與更精確、速度的操作體驗。

          另外當達到三殺、五殺等激情時刻時,背面的Monster Halo燈效會迸發光芒,營造更激情的游戲快感。

          在開啟高幀率游戲模式下,游戲的FPS保持在59的極高水準,而且幀率的波動幅度非常之小,僅有1.30幀,并且FPS幀數維持在穩定的規律狀態,整體的體驗極為順暢,把玩之后機身的溫度并沒有發生明顯變化,機身溫度一直保持在正常狀態。

          在吃雞類游戲中,橫屏體驗絕地求生之《刺激戰場》游戲時,iQOO右側邊配備的Monster Touch壓感按鍵可實現“射擊”、“開槍”等操作,邊走邊壓槍的高強度“四指操作”也可輕松實現。

          游戲界面時可先從屏幕左側劃出游戲電競快捷操作界面,選擇新增的壓感按鍵功能,通過調整“A”“B”按鍵的位置以及壓感靈敏度,即可感受物理“外掛”般的“吃雞”游戲體驗。

          另外iQOO機身還配備了專業線性馬達,可將游戲槍聲轉換為震動效果,無論是視覺、聽覺還是觸覺都沉浸式感受,游戲體驗更逼真。

          《刺激戰場》的游戲畫面品質與幀數設置可達到最高的HDR高清、超高標準,體驗更逼真的游戲環境。

          整體的游戲FPS保持在39數值(最高40),平均波動在0.97幀,游戲的體驗較為順暢,無論是開車、跑毒、拾取都極為順暢。尤其在壓槍過程中,得益于Monster Touch壓感按鍵的存在,壓槍極為穩定,可以快速擊殺敵人,輕松吃雞。

          4000mAh大電池+44W超級閃充 續航能力強悍無敵

          除了強悍的性能之外,手機續航能力也是大家最關心的問題,智能手機的續航能力一直是短板。iQOO在設計時充分考慮續航問題,搭載一個4000mAh的大容量電池,即便搭載6.41英寸大顯示屏,可獲得平均13.5小時的長時間續航體驗,滿足一天正常使用需求完全沒問題。

          在充電方面,iQOO做了重大的創新與進化,iQOO充電方式采用vivo Super FlashCharge電荷泵充電技術,同時還引入了Flash Fast Charge充電算法優化技術,可支持44W超快閃充技術,在提升速度的同時降低了充電時的發熱,特別采用了3C電芯,峰值充電電流高達近8A,息屏狀態內可以在5分鐘內實現最高680mAh的電池增長,在iQOO的4000mAh大電池下,極速充至17%,肉眼可見的充電速度,只需45分鐘即可將電量充滿至100%。

          iQOO在數據線設計方面也同樣煞費苦心,充電線采用創新L型+膠囊設計,設計風格更為圓潤光滑,另外創新的L型設計在橫屏握持手機時,不會造成以往的不順手現象,再搭配其44W超級閃充,邊充邊玩更暢快。

          后置超廣角AI三攝 延續vivo美顏拍攝基因

          iQOO后置搭載了索尼旗艦級的雙核1200萬IMX363主攝、1300萬像素超廣角鏡頭與一個200萬像素的景深攝像頭,并且擁有120°超大視野的拍照能力,對焦速度極快。同時搭載的AI智能場景識別功能,可根據不同拍攝的景物自動識別拍照模式,通過系統自我優化,利用AI Turbo 具備的長期學習能力,AI場景識別不僅能對夜景、運動、抖動和逆光這些場景識別并分別調整,更能夠識別照片中的內容,人像、美食、鮮花等,并且有針對性的進行智能調整,從而拍攝出更符合當前場景的意境照片。

          實際拍攝樣張如下:

          另外iQOO的超廣角拍攝可在有限拍攝位置,拍攝出更為寬廣的畫面效果,更能凸顯拍攝景物的全景面貌以及震撼的拍攝效果,畫面兩側的畸變形狀也可以得到很好的控制。

          ▲正常拍攝模式

          ▲廣角拍攝模式

          在拍攝暗光環境景物時,iQOO具備高達 12.3EV的動態范圍,傳感器單個像素面積更提升至1.4μm,搭配f/1.79超大光圈,都為夜景、暗光等拍攝環境下的穩定清晰成像提供強大的硬件支持。配合其連續拍攝12-16幀的多幀降噪合成高品質技術,在逆光、弱光情況下可拍攝出明亮通透的照片效果,極大還原了照片細節,保證暗部曝光正確的同時,明部的細節也得到保留,實際表現較為不錯。

          在人像美顏拍攝方面,一直是vivo強項!此次iQOO在拍照功能上還配置了AI美顏,這一功能可以輕松調整面部容貌,包括削臉、瘦臉、瘦鼻、長鼻、大眼、眼距、嘴型、下巴、額頭等,讓愛美人士解鎖更多拍攝模式,照片效果更理想。

          iQOO前置搭載的雙核1200萬像素攝像頭,同樣具備了強大的拍攝能力,在人像拍攝以及效果處理方面,都有著獨到之處,拍攝出的自拍效果極易捕獲愛美人士的芳心,算是保留了vivo的美顏招牌。

          全新Funtouch OS9 熟悉的簡潔操作系統

          iQOO搭載的是全新基于Android9開發的Funtouch OS9操作系統,相比上一代Funtouch OS系統有了很大的改變,最直接的感受系統界面變的更為簡潔,界面的滑動及操作變得更為暢快,而且具備一種科技感和速度感。再配以高通驍龍855旗艦芯片的強大性能,為日常流暢系統體驗提供了強勁的性能支撐。

          在系統導航方面,iQOO可支持適配全面屏操作的導航手勢,減少導航鍵對屏幕的占有,從界面底部三個區域向上滑動,可分別調出控制中心、返回待機、返回上一級界面,整體的操作體驗較為順暢,而且導航手勢的設計也較為人性化,可極為快速的熟練上手操作。

          另外在智能體驗方面iQOO同樣帶來了不少細節的貼心設計,比如隔空解鎖與智能提醒功能。進入手機智能體感設置界面,開啟隔空解鎖功能,即可無鎖屏密碼且點亮屏幕時,手掌從手機頂部上方(3cm-5cm)處拂過即可解鎖,有種特殊的魔術感。另外開啟智能提醒功能之后,拿起手機即可獲得未接來電和未讀信息的提醒,更為貼心。

          最貼心的還是要屬Jovi語音助手功能,iQOO搭載從硬件到軟件全面升級的Jovi語音助手,可智能的識別語音指令,達到快速的命令執行。除此之外,最歡喜的還是其“我的教學命令”功能,可通過教會Jovi非出廠應用或命令的新操作,做到真正懂你所需的智能語音體驗。

          iQOO全系配備了NFC-eSE芯片功能,可滿足NFC刷公交等便利的手機支付體驗,在使用時可通過vivo 錢包開通vivo公交服務,然后在使用時只需把手機貼近公交刷卡機或者地鐵閘機,即可享受手機刷卡乘車的便捷體驗。

          總的來說,iQOO作為第一款全新vivo子品牌旗艦機,搭載的硬核855高通驍龍旗艦芯、LPDDR4X內存規格、超級液冷技術、第六代屏幕指紋技術、Monster Touch壓感按鍵、4000mAh大電池以及44W超級閃充等眾多黑科技加持,可謂是亮點多多,而后置廣角三攝、前置雙核1200萬像素,NFC功能的加入又為其增分不少,最重要僅2998元的售價無疑讓它在手機市場變得更有競爭力。


          主站蜘蛛池模板: 精品人妻少妇一区二区三区| 国产精品被窝福利一区| 精品国产一区二区三区AV| 久久影院亚洲一区| 国产在线不卡一区二区三区| 久久精品免费一区二区三区| 日本精品一区二区三区在线观看| 日本在线一区二区| 精品国产一区二区三区麻豆| 国产精品99精品一区二区三区| 色多多免费视频观看区一区| 亚洲日本中文字幕一区二区三区| 国产AV一区二区三区传媒| 亚洲影视一区二区| 91午夜精品亚洲一区二区三区| 激情久久av一区av二区av三区| 久久无码人妻精品一区二区三区| 色狠狠AV一区二区三区| 日韩成人一区ftp在线播放| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久久人妻一区二区三区| 国产精品福利一区二区| 美日韩一区二区三区| 国产在线一区二区三区| 韩国理伦片一区二区三区在线播放 | 国产一区二区三区高清视频 | 国产SUV精品一区二区四| 亚洲一区二区三区在线播放| 极品人妻少妇一区二区三区| 一区二区不卡久久精品| 精品爆乳一区二区三区无码av| 国产精品视频一区二区三区不卡| 亚洲国产精品一区二区第一页 | 中文字幕av日韩精品一区二区| 一区二区三区在线观看免费| 久久综合亚洲色一区二区三区| 好吊视频一区二区三区| 精品乱码一区二区三区四区| 国产乱码伦精品一区二区三区麻豆| 精品国产AV一区二区三区| 精品视频在线观看你懂的一区|