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,閱讀了這篇文章是否可以給我們帶來幫助。
1. 如果你想要一張 css或者JavaScript可以控制的圖片,那么你可以考慮SVG。
2. 如果你期望圖片的質量不會因為放大或縮小而降低,那么你可以考慮SVG。
3. 如果你期望網頁對殘障人士和視力受損的用戶有更好的體驗,那么你可以考慮SVG。
4. 如果你期望圖片在高清設備還是低分辨率設備上,都能保持清晰和細膩的圖像質量,那么你可以考慮SVG。
我們在學習SVG之前,需要先了解一下位圖和矢量圖。
簡單來說:
詳細來說:
SVG究竟什么?
是Scalable Vector Graphics的縮寫,意思是可縮放矢量圖形。
這是一種基于XML的二維矢量圖形標準,由W3C開發的。
對于初學者來說,可以將SVG理解為一套新的HTML標簽。
所以我們可以使用css和JavaScript來對標簽進行操作。
很多小伙伴可能已經忘記了XML,我們回顧一下:
XML(可擴展標記語言)是一種用于描述數據的標記語言,它使用一系列簡單的標記來描述數據,這些標記可以用來表示不同類型的數據元素,如標題,作者,價格等。
SVG的優勢:
SVG的劣勢:
設計復雜性:SVG需要具備一定的設計和制作技巧,與位圖相比,SVG的設計難度較大,需要更高的技術水平。
瀏覽器兼容性:在一些舊版瀏覽器中,可能存在對SVG的兼容性問題。
渲染速度:SVG復雜度過高會降低頁面渲染速度。
對于前端開發的我們,要如何去使用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圖片作為背景圖像。
總的來說,任何需要保持清晰度,動態交互和無損縮放的圖形場景,都可以考慮使用SVG。
Canvas和SVG都是用于在網頁上繪制圖形的工具,但它們在許多方面都存在顯著的差異。以下是對Canvas和SVG的對比:
總結:Canvas和SVG各有其優勢和適用場景。Canvas更適合圖像密集型的游戲和需要高效渲染的應用,而SVG更適合處理矢量圖形和大型渲染區域。
說了這么多,我們來開始實戰,我們要在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>
運行后:
代碼解讀:
我們還可以在線設計SVG圖片,我們可以直接使用該圖片或者拷貝其代碼復制到我們的代碼中。
SVG在線編輯: c.runoob.com/more/svgedi…
示例一:
正常的矩形
<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>
效果:
代碼解析:
綜上,這段代碼會在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>
效果:
代碼解析:
綜上,這段代碼會在一個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>
效果:
代碼解析:
綜上,這段代碼會在一個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>
效果:
代碼解析:
綜上,這段代碼會在一個500x500像素的SVG圖像中繪制一個左上角坐標為(50, 20)、寬度為150像素、高度為160像素、填充顏色為紅色、線條顏色為黑色、線條寬度為1像素、透明度為0.5的圓角矩形。
示例:
<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>
效果:
代碼解析:
綜上,這段代碼會在一個SVG圖像中繪制一個圓心坐標為(100, 50)、半徑為40像素、邊框顏色為紅色、邊框寬度為2像素、填充顏色為藍色的圓形。
示例:
<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>
效果:
代碼解析:
綜上,這段代碼會在一個500x500像素的SVG圖像中繪制一個中心點坐標為(300, 80)、長軸半徑為100像素、短軸半徑為50像素的紅色橢圓,線條顏色為紫色,線條寬度為2像素。
示例:
<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>
效果:
代碼解析:
綜上,這段代碼會在一個SVG圖像中繪制一條從(0, 0)到(200, 200)的黑色線段,線條寬度為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>
效果:
代碼解析:
綜上,這段代碼會在一個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>
效果:
代碼解析:
綜上,這段代碼會在一個300x300像素的區域內繪制一個藍色的多邊形。這個多邊形有5個頂點,形狀大致為一個不規則的五邊形。
示例一:
<svg height="210" width="500">
<polygon points="200,10 250,190 160,210"
style="fill:red;stroke:purple;stroke-width:1"/>
</svg>
效果:
代碼解析:
綜上,這段代碼會在一個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>
效果:
代碼解析:
綜上,這段代碼會在一個300x300像素的SVG圖像中繪制一個由七個頂點定義的多邊形,沒有填充顏色,線條顏色為黑色,線條寬度為5像素。
路徑數據:
示例:
畫一個三角形
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<path d="M150 0 L75 200 L205 270 Z" />
</svg>
效果:
代碼解析:
綜上,這段代碼將在SVG圖像中繪制一個由三個直線段組成的封閉圖形,其頂點坐標分別為(150, 0),(75, 200)和(205, 270)。
直接在元素屬性上設置樣式,比如將矩形填充色改成粉紅
<svg width="400" height="400" style="border: 1px solid red;">
<rect
x="100"
y="100"
width="200"
height="100"
fill="pink"
/>
</svg>
把所有樣式寫在 style 屬性里
<svg width="400" height="400" style="border: 1px solid red;">
<rect
x="100"
y="100"
width="200"
height="100"
style="fill: pink;"
/>
</svg>
將樣式寫在 <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>
將樣式寫在 .css 文件里,然后在頁面中引入該 CSS 文件。
SVG動畫可以通過多種方式實現,包括使用SMIL、CSS和JavaScript。
能讓SVG不靠JavaScript與CSS就能動起來是因為使用了SMIL(Synchronized Multimedia Integration Language),是W3C的標準之一,旨在以XML格式提供多媒體的交互表現(白話點其實就是動畫),是Web上動畫的開路先鋒,啟發了Web animation與CSS animation。SVG與SMIL的開發團隊合作,讓SVG能利用SMIL達到如下效果:
光是這些特性就夠我們組合出很多種的動畫了, 使用方法也不難,只要在SVG元素內置入以下四種元素即可操作動畫:
例如:
<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坐標。
綜上,這段代碼繪制了一個半徑為2單位、填充和邊框顏色均為黑色的圓形,并設置了一個動畫,使圓心的y坐標在2秒后從92.8179變為105.7318。
通過設置一組 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>
通過 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>
總的來說,SVG是一種強大的圖形描述語言,具有可縮放性、交互性、可訪問性、靈活性和跨平臺兼容性等特點和優勢。它可以用于創建各種復雜的二維矢量圖形和富交互的Web應用,為Web設計和開發提供了更多的可能性。
隨著Web技術的不斷發展,相信SVG的應用范圍還將不斷擴大。
原文鏈接:https://juejin.cn/post/7322344486159106100
端訓練營:1v1私教,終身輔導計劃,幫你拿到滿意的 offer。 已幫助數百位同學拿到了中大廠 offer。歡迎來撩~~~~~~~~
Hello,大家好,我是 Sunday。
當各種框架以及復雜的 JS 知識開始充斥著我們的工作環境時。誰還能夠記得,以 CSS 來構建更加良好的用戶體驗,也是前端的一個重要組成部分。
所以說,今天咱們就來看看 css 的優化方案-終極合集。一共一百條,有點多,適合收藏(點個贊和分享自然更好了)
添加scroll-behavior:smooth到元素中<html>,使整個頁面能夠平滑滾動。
html{
scroll-behavior: smooth;
}
此選擇器以href屬性以“https”開頭的鏈接為目標。
a[href^="https"] {
color: blue;
}
選擇作為<h2>同級元素的所有<p>元素。
h2 ~ p {
color: blue;
}
此選擇器將樣式應用于不具有類“Special”的 li。
li:not(.special) {
font-style: italic;
}
使用視區單位(vw, vh, vmin, vmax)可以使字體大小與視區大小相對應。
h1 {
font-size: 5vw;
}
此選擇器以空的<p>元素為目標并隱藏它們。
p:empty {
display: none;
}
可以定義和使用自定義特性,以便更輕松地創建主題和進行維護。
:root {
--main-color: #3498db;
}
h1 {
color: var(--main-color);
}
object-fit 控制替換元素(如<img>)的內容應該如何調整大小。
img {
width: 100px;
height: 100px;
object-fit: cover;
}
Css網格提供了一種功能強大的方式來以更直接的方式創建布局。
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
如果一個元素包含任何帶有:focus的子元素,則:focus-Win會選擇該元素。
form:focus-within {
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
}
使用FlexBox可輕松地將內容在容器中水平和垂直居中。
.container {
display: flex;
align-items: center;
justify-content: center;
}
自定義在網頁上選擇文本時的突出顯示顏色。
::selection {
background-color: #ffcc00;
color: #333;
}
設置輸入字段內占位符文本的樣式。
::placeholder {
color: #999;
font-style: italic;
}
使用Backback-Clip屬性創建漸變邊框。
.element {
border: 2px solid transparent;
background-clip: padding-box;
background-image: linear-gradient(to right, red, blue);
}
根據視口寬度調整字體大小,實現更加響應式的排版。
body {
font-size: calc(16px + 1vw);
}
利用錐形漸變創建豐富多彩且動態的背景。
.element {
background: conic-gradient(#ff5733, #33ff57, #5733ff);
}
使用clamp()函數設置字體大小的范圍,確保在不同屏幕尺寸下的可讀性。
.text {
font-size: clamp(16px, 4vw, 24px);
}
使用font-display: swap;屬性提高網頁字體性能,讓自定義字體加載時顯示備用字體。
@font-face {
font-family: 'YourFont';
src: url('your-font.woff2') format('woff2');
font-display: swap;
}
為了實現更順暢的滾動體驗,特別是在圖庫或滑塊中,實現自定義滾動吸附點。
.scroll-container {
scroll-snap-type: y mandatory;
}
.scroll-item {
scroll-snap-align: start;
}
利用可變字體和font-variation-settings屬性對字體的粗細、樣式等進行精細調節。
.text {
font-family: 'YourVariableFont', sans-serif;
font-variation-settings: 'wght' 500, 'ital' 1;
}
使用border-bottom和text-decoration的組合來自定義鏈接的下劃線樣式。
a {
text-decoration: none;
border-bottom: 1px solid #3498db;
}
使用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;
}
通過使用padding來保持元素(如圖片或視頻)的縱橫比。
.aspect-ratio-box {
position: relative;
width: 100%;
padding-bottom: 75%; /* 根據需要調整 */
}
.aspect-ratio-box > iframe {
position: absolute;
width: 100%;
height: 100%;
}
使用:nth-child偽類來為交替元素設置樣式。
li:nth-child(even) {
background-color: #f2f2f2;
}
li:nth-child(odd) {
background-color: #e6e6e6;
}
使用counter-reset和counter-increment屬性在列表中創建自動編號。
ol {
counter-reset: item;
}
li {
counter-increment: item;
}
li::before {
content: counter(item) ". ";
}
使用不同屬性為元素應用多個背景圖片。
.bg {
background-image: url('image1.jpg'), url('image2.jpg');
background-position: top left, bottom right;
background-repeat: no-repeat, repeat-x;
}
通過使用hyphens屬性允許自動連字符以提高文本的可讀性。
p {
hyphens: auto;
}
利用CSS變量創建動態且可重用的樣式。
:root {
--main-color: #3498db;
}
.element {
color: var(--main-color);
}
改善焦點樣式以提高鍵盤導航和可訪問性。
:focus {
outline: 2px solid #27ae60;
}
為漸變背景應用平滑過渡效果,增強視覺效果。
.gradient-box {
background: linear-gradient(45deg, #3498db, #2ecc71);
transition: background 0.5s ease;
}
.gradient-box:hover {
background: linear-gradient(45deg, #e74c3c, #f39c12);
}
為文本添加描邊,產生獨特的視覺效果。
h1 {
color: #3498db;
-webkit-text-stroke: 2px #2c3e50;
}
創建一個簡單的漢堡菜單,無需使用JavaScript。
.menu-toggle {
display: none;
}
.menu-toggle:checked + nav {
display: block;
}
/* 在這里添加漢堡菜單圖標和菜單樣式 */
使用:is()偽類簡化復雜的選擇器。
:is(h1, h2, h3) {
color: blue;
}
在CSS變量中進行計算,實現動態樣式。
:root {
--base-size: 16px;
--header-size: calc(var(--base-size) * 2);
}
h1 {
font-size: var(--header-size);
}
使用attr
()函數檢索和顯示屬性值。
div::before {
content: attr(data-custom-content);
}
為圖像應用遮罩,創造出獨特的效果。
.masked-image {
mask: url(mask.svg);
mask-size: cover;
}
嘗試使用混合模式創建有趣的色彩效果。
.blend-mode {
background: url(image.jpg);
mix-blend-mode: screen;
}
使用縱橫比屬性簡化縱橫比盒子的創建。
.aspect-ratio-box {
aspect-ratio: 16/9;
}
使用shape-outside屬性使文本圍繞指定形狀,實現更動態的布局。
.shape-wrap {
float: left;
width: 150px;
height: 150px;
shape-outside: circle(50%);
}
ch單位表示所選字體中字符“0”的寬度,可用于創建一致且響應式的布局。
h1 {
font-size: 2ch;
}
使用::marker偽元素為列表項標記設置樣式。
li::marker {
color: blue;
}
使用element()函數動態引用元素作為背景。
.background {
background: element(#targetElement);
}
使用Flexbox創建粘性底部布局。
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
}
通過調整scroll padding來改善滾動行為。
html {
scroll-padding: 20px;
}
使用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%;
}
無需圖像,樣式化單選框和復選框。
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;
}
使用resize屬性控制textarea的調整大小行為。
textarea {
resize: vertical;
}
使用background-clip和text-fill-color屬性為文本創建漸變效果。
.gradient-text {
background-image: linear-gradient(45deg, #3498db, #2ecc71);
background-clip: text;
color: transparent;
}
使用word-break屬性控制長單詞或沒有空格的字符串的斷行和換行。
.long-words {
word-break: break-all;
}
使用font-variation-settings屬性微調可變字體樣式。
.custom-font {
font-family: 'MyVariableFont';
font-variation-settings: 'wght' 600, 'ital' 1;
}
使用混合模式為元素應用疊加效果,創造出有趣的視覺效果。
.overlay {
mix-blend-mode: overlay;
}
使用:broken偽類為損壞的圖像應用樣式。
img:broken {
filter: grayscale(100%);
}
使用CSS形狀為設計創建有趣的效果。
.shape {
shape-outside: circle(50%);
}
使用*=操作符的屬性選擇器進行子字符串匹配。
[data-attribute*="value"] {
/* 樣式 */
}
使用backdrop-filter為背景應用模糊效果,實現毛玻璃效果。
.element {
backdrop-filter: blur(10px);
}
使用env()函數在CSS中訪問環境變量。
.element {
margin-top: env(safe-area-inset-top);
}
使用:nth-child選擇器計算特定屬性值的出現次數。
[data-category="example"]:nth-child(3) {
/* 第三次出現的樣式 */
}
使用shape-outside結合polygon()函數精確地控制文本圍繞不規則形狀的布局。
.text-wrap {
shape-outside: polygon(0 0, 100% 0, 100% 100%);
}
使用cursor屬性更改鼠標樣式。
.custom-cursor {
cursor: pointer;
}
使用HSLA值表示透
明顏色,對alpha通道進行更精細的控制。
.transparent-bg {
background-color: hsla(120, 100%, 50%, 0.5);
}
使用text-orientation屬性將文本垂直旋轉。
.vertical-text {
text-orientation: upright;
}
使用font-variant屬性應用小型大寫字母樣式。
.small-caps {
font-variant: small-caps;
}
使用box-decoration-break屬性控制跨多行斷開的元素的背景,實現更靈活的文本環繞。
.split-background {
box-decoration-break: clone;
}
僅在元素處于焦點且焦點不是由鼠標單擊提供時應用樣式。
input:focus-visible {
outline: 2px solid blue;
}
通過text-rendering屬性改善文本呈現效果。
.optimized-text {
text-rendering: optimizeLegibility;
}
使用initial-letter為塊級元素的第一個字母應用樣式。
p::first-letter {
font-size: 2em;
}
控制用戶滾動超出滾動容器邊界時的行為。
.scroll-container {
overscroll-behavior: contain;
}
使用writing-mode屬性創建縱向布局。
.vertical-layout {
writing-mode: vertical-rl;
}
使用::cue偽元素為HTML5字幕文本應用樣式。
::cue {
color: blue;
}
使用line-clamp屬性限制元素中顯示的行數。
.truncated-text {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
scroll-snap-align屬性控制滾動容器內滾動捕捉點的對齊方式,確保對滾動行為進行精確控制,提升用戶體驗。
.container {
scroll-snap-type: x mandatory;
}
.item {
scroll-snap-align: center;
}
overscroll-behavior使您可以定義瀏覽器在滾動超出范圍時的處理方式,從而避免不必要的滾動效果,提升整體滾動體驗。
.scrollable {
overscroll-behavior: contain;
}
font-kerning允許對字符間距進行微調,通過調整文本元素中字符之間的間距,確保最佳的可讀性。
p {
font-kerning: auto;
}
與CSS形狀一起使用時,shape-margin指定浮動元素形狀周圍的邊距,可以更精確地控制文本環繞和布局。
.shape {
shape-margin: 20px;
}
scroll-margin設置滾動容器邊緣與滾動內容開始之間的邊距,提升用戶體驗,為滾動提供緩沖空間。
.container {
scroll-margin-top: 100px;
}
tab-size屬性控制文本區域中制表符的寬度,確保在不同用戶代理中一致的顯示。
pre {
tab-size: 4;
}
text-align-last決定塊級元素中最后一行文本的對齊方式,為多行塊文本提供對齊控制。
p {
text-align-last: justify;
}
此屬性控制文本兩端對齊的行為,指定是使用單詞間還是字符間距進行文本對齊。
p {
text-align: justify;
text-justify: inter-word;
}
column-fill決定如何在多列布局中分配內容,允許內容依次或平衡分布在列中。
.container {
column-count: 3;
column-fill: auto;
}
outline-offset調整輪廓與元素邊緣之間的空間,不影響布局,為輪廓的外觀提供更細致的控制。
button {
outline: 2px solid blue;
outline-offset: 4px;
}
此屬性允許精細控制數字字體渲染,啟用特性如數字大小寫和分數、序數指示器等。
p {
font-variant-numeric: lining-nums;
}
啟用或禁用字體光學大小調整,以調整字符的間距和比例,實現在不同字體大小下更好的視覺和諧。
p {
font-optical-sizing: auto;
}
精確控制文本裝飾(如下劃線、上劃線和刪除線)的粗細,實現精細化定制。
p {
text-decoration-thickness: 2px;
}
text-decoration-skip-ink屬性控制文本裝飾(如下劃線)在被墨水遮擋的情況下是否繼續繪制,提升可讀性。
a {
text-decoration-skip-ink: auto;
}
word-spacing屬性控制字詞間距,調整文本的緊湊度和可讀性。
p {
word-spacing: 2px;
}
通過調整斷字點和斷字行為,提高文本在窄列中的美觀度和可讀性。
p {
hyphens: auto;
}
background-blend-mode屬性允許背景圖像與其下方的背景顏色進行混合,產生出獨特的視覺效果。
.element {
background-image: url('image.jpg');
background-color: #3498db;
background-blend-mode: multiply;
}
text-decoration-color屬性控制文本裝飾的顏色,為鏈接和裝飾文本提供更靈活的樣式。
a {
text-decoration: underline;
text-decoration-color: red;
}
overflow-anchor屬性指定了在容器的滾動范圍內滾動時哪些內容應保持可見,提升用戶體驗。
.container {
overflow-anchor: none;
}
contain-intrinsic-size屬性定義了內聯大小計算函數的大小,實現更精確的布局控制。
img {
contain-intrinsic-size: 200px 300px;
}
line-gap屬性定義了元素的行間距,可以為文字和其他行內元素提供更大的空間。
p {
line-gap: 1.5;
}
text-underline-offset屬性控制文本下劃線相對于基線的垂直偏移量,實現更加精確的下劃線定位。
a {
text-decoration: underline;
text-underline-offset: 3px;
}
text-decoration-line屬性指定要繪制的裝飾線的類型,可用于單獨控制上劃線、下劃線、刪除線等。
a {
text-decoration-line: underline overline;
}
text-emphasis屬性為文本設置強調標志,用于提高關鍵字的可讀性。
em {
text-emphasis: filled circle;
}
text-orientation屬性控制文本的方向,適用于縱向文本和日文排版等情況。
.vertical-text {
text-orientation: sideways-right;
}
background-origin屬性確定背景圖片的起始位置,影響背景圖片與邊框的相對位置。
.element {
background-image: url('image.jpg');
background-origin: content-box;
}
counter-set屬性在使用counter-reset創建的計數器值基礎上,顯式設置一個新的值。
ol {
counter-set: section 1;
}
hanging-punctuation屬性控制標點符號是否在行框之外懸掛,以提高排版的美觀度和可讀性。
p {
hanging-punctuation: last allow-end;
}
line-break屬性控制文本換行行為,確保在指定的斷點處進行斷行。
p {
line-break: anywhere;
}
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元的售價無疑讓它在手機市場變得更有競爭力。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。