自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CSS 這些你冷落的性能,其實(shí)很好用能極大提升效率!

開(kāi)發(fā) 前端
一個(gè)成功的Web App必須有良好的用戶體驗(yàn)。當(dāng)我們談及改善用戶體驗(yàn)時(shí),你會(huì)想到什么?

一個(gè)成功的Web App必須有良好的用戶體驗(yàn)。當(dāng)我們談及改善用戶體驗(yàn)時(shí),你會(huì)想到什么?

其實(shí),有一點(diǎn)是很容易被開(kāi)發(fā)者忽視的,那就是CSS。我們可以使用一些CSS技巧來(lái)改善網(wǎng)頁(yè)的表現(xiàn)形式、交互細(xì)節(jié)和可訪問(wèn)性。

而且這些技巧不需要花費(fèi)太多時(shí)間,也不需要消耗服務(wù)器資源。你只需要花兩個(gè)小時(shí)學(xué)習(xí),然后就可以把它應(yīng)用到你所有的項(xiàng)目中,并永遠(yuǎn)改善用戶體驗(yàn)。

可點(diǎn)擊區(qū)域有時(shí)你的按鈕很小,這可能導(dǎo)致用戶無(wú)法準(zhǔn)確點(diǎn)擊按鈕。這種現(xiàn)象經(jīng)常發(fā)生在移動(dòng)端上。如果用戶點(diǎn)擊次數(shù)太多,沒(méi)有點(diǎn)擊他們想要的按鈕,或者點(diǎn)擊錯(cuò)誤的按鈕,會(huì)讓他們感到非常沮喪。

那么,如何解決這個(gè)問(wèn)題呢?有些開(kāi)發(fā)者可能會(huì)說(shuō):把按鈕做大點(diǎn)。

但網(wǎng)頁(yè)中元素的大小往往是固定的,我們不能輕易調(diào)整一個(gè)元素的大小。而且如果按鈕太大,感覺(jué)很奇怪。

一個(gè)更好的解決方案是在不改變按鈕原始尺寸的情況下增加其可點(diǎn)擊區(qū)域。具體來(lái)說(shuō):我們可以使用偽元素來(lái)增加一個(gè)元素的可點(diǎn)擊區(qū)域。

例如,這里有一個(gè)按鈕。

<button id="btn">btn</button>

然后我們可以為它添加一個(gè)偽類。

#btn::before {
content: "";
position: absolute;
top: -20px;
right: -20px;
bottom: -20px;
left: -20px;
}

這時(shí),如果我們點(diǎn)擊按鈕周圍的區(qū)域,我們?nèi)匀豢梢杂|發(fā)按鈕的點(diǎn)擊事件。

事例地址:

??https://codepen.io/bytefishmedium/pen/rNYNoRX??

平滑滾動(dòng)

當(dāng)頁(yè)面被#鏈接滾動(dòng)時(shí),默認(rèn)效果是這樣的。

這種突然的跳躍會(huì)讓人感到不舒服。為了解決這個(gè)問(wèn)題,我們可以使用這個(gè)CSS樣式:sroll-behavior: smooth。

事例地址:https://codepen.io/bytefishmedium/pen/NWwWoKL

選擇所有文本

我們的網(wǎng)頁(yè)經(jīng)常需要提供一些內(nèi)容供用戶選擇,如電話號(hào)碼、地址、標(biāo)題等。而這些文字應(yīng)該是一個(gè)整體,我們希望當(dāng)用戶點(diǎn)擊部分文字時(shí),剩余的文字會(huì)被自動(dòng)選擇。

要實(shí)現(xiàn)這種效果非常簡(jiǎn)單,只需使用這個(gè)CSS樣式:user-select: all 。用戶選擇的CSS屬性控制用戶是否可以選擇文本。如果它的值是 all,意味著一個(gè)元素的所有內(nèi)容都將被原子化地選擇。

事例地址:https://codepen.io/bytefishmedium/pen/xxPxMZO

如果你想在文本被選中后添加一些額外的樣式,你可以使用::selection 。::selection CSS偽元素將樣式應(yīng)用于文檔中被用戶突出顯示的部分(比如在文本上點(diǎn)擊和拖動(dòng)鼠標(biāo))。

但要記住。只有某些CSS屬性可以和::selection一起使用。

  • color
  • background-color
  • text-decoration 及其相關(guān)屬性
  • text-shadow
  • stroke-color, fill-color 和 stroke-width

事例地址:https://codepen.io/bytefishmedium/pen/gOXOqMz

Cursor

在不同的場(chǎng)景下使用不同的鼠標(biāo)樣式可以幫助讀者感知頁(yè)面的當(dāng)前狀態(tài),從而改善用戶的互動(dòng)體驗(yàn)。

cursor CSS屬性設(shè)置鼠標(biāo)指針在一個(gè)元素上時(shí)要顯示的鼠標(biāo)指針(如果有的話)。

光標(biāo)設(shè)置應(yīng)該告知用戶在當(dāng)前位置可以進(jìn)行的鼠標(biāo)操作,包括文本選擇、激活幫助或上下文菜單、復(fù)制內(nèi)容、調(diào)整表格大小,等等。你可以用一個(gè)關(guān)鍵詞來(lái)指定光標(biāo)的類型,或者加載一個(gè)特定的圖標(biāo)來(lái)使用(有可選的回退圖像和強(qiáng)制性的關(guān)鍵詞作為最后的回退)。

例如:

事例地址:https://codepen.io/bytefishmedium/pen/bGYGzRz

有很多光標(biāo)樣式,你可以在MDN文檔中找到它們。

Text Overflow

現(xiàn)在我們來(lái)看看 text-overflow 的問(wèn)題。如果一個(gè)文本容器的內(nèi)容是從服務(wù)器返回的,或者是由用戶輸入的,那么就很難預(yù)測(cè)這個(gè)文本會(huì)有多長(zhǎng)。

如果沒(méi)有任何預(yù)防措施,你可能會(huì)寫(xiě)出這樣的代碼。

<head>
<style>
.container{
border: 2px solid red;
width: 200px;
height: 60px;
}
</style>
</head>
<body>
<div class="container">
<div class="username">bytefish</div>
<p class="profile">FE, UX Designer</p>
</div>
</body>

這個(gè)容器有一個(gè)固定的寬度和高度,包裹著名字和介紹。

但如果有些用戶的簡(jiǎn)介太長(zhǎng),就會(huì)導(dǎo)致文本溢出容器,使頁(yè)面看起來(lái)很糟糕。

在這一點(diǎn)上,我們可以將溢出的文本折疊起來(lái)。做到這一點(diǎn)就像添加三行CSS樣式一樣簡(jiǎn)單。

white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

white-space: nowrap; 可以使文本不被包起來(lái)。然后我們使用overflow: hidden來(lái)隱藏溢出的文本。最后,我們使用 text-overflow: ellipsis在文本的末尾添加一個(gè)圓點(diǎn),向用戶表明有一些隱藏的文本。

事例地址:https://codepen.io/bytefishmedium/pen/VwrwgdQ

Image

現(xiàn)在我們來(lái)討論一下圖片的風(fēng)格。網(wǎng)絡(luò)應(yīng)用中使用的圖片一般由后端提供。你可能已經(jīng)與后端開(kāi)發(fā)者達(dá)成協(xié)議,將圖片保持在一個(gè)固定的尺寸。然后你寫(xiě)下這樣的代碼。

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.img-list {
display: flex;
flex-direction: row;
list-style: none;
}
</style>
</head>

<body>
<ul class="img-list">
<li>
<img src="https://miro.medium.com/fit/c/128/128/1*TyRLQdZO7NdPATwSeut8gg.png">
</li>
<li>
<img src="https://miro.medium.com/fit/c/128/128/1*pKOfOAOvx-fWzfITATgGRg.jpeg">
</li>
<li>
<img src="https://miro.medium.com/fit/c/128/128/1*mXOVdfMwS0IEcjPXiikJkg.png">
</li>
</ul>

</body>

</html>

而網(wǎng)頁(yè)看起來(lái)是這樣的。

圖片的排列與我們所期望的一樣。

通常情況下是沒(méi)有問(wèn)題的。但是當(dāng)我們寫(xiě)代碼時(shí),我們不能假設(shè)一切都會(huì)按照我們的預(yù)期發(fā)展。我們需要做好充分的準(zhǔn)備。如果后端返回的圖片不正常,不符合預(yù)期的尺寸,可能大也可能小,那么布局就會(huì)被打亂。

你可以用這個(gè)替換其中一張圖片的鏈接。

https://miro.medium.com/max/1400/0*zQaS0awtSTOO-JYa.jpg

你會(huì)發(fā)現(xiàn),頁(yè)面突然變得雜亂無(wú)章。

為了防止這個(gè)問(wèn)題,使我們的頁(yè)面更加健壯,我們可以設(shè)置圖片的寬度和高度。這樣,我們就不必?fù)?dān)心后端返回的圖片的大小。

img {
width: 128px;
height: 128px;
}

但上述寫(xiě)法有一個(gè)缺點(diǎn):如果圖像本身的長(zhǎng)寬比與我們?cè)O(shè)定的長(zhǎng)寬比不一致,圖像將被壓縮或拉伸。

為了保持圖像的原始長(zhǎng)寬比,我們可以使用 object-fit: cover 。

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

object-fit 的CSS屬性設(shè)置一個(gè)被替換的元素的內(nèi)容,如或,應(yīng)該如何調(diào)整大小以適合其容器。

如果該值是 cover,那么被替換的內(nèi)容的大小將保持其長(zhǎng)寬比,同時(shí)填充元素的整個(gè)內(nèi)容框。如果對(duì)象的長(zhǎng)寬比與它的盒子的長(zhǎng)寬比不一致,那么該對(duì)象將被剪掉以適配。

無(wú)圖片

我們之前討論的情況都是建立在我們能夠得到圖片的前提下。但是,在實(shí)際應(yīng)用中,可能由于后端服務(wù)的不穩(wěn)定,或者用戶自身的網(wǎng)絡(luò)信號(hào)不好,我們的網(wǎng)頁(yè)可能無(wú)法正確加載圖片。

當(dāng)圖片缺失時(shí),瀏覽器的默認(rèn)樣式是不優(yōu)雅的,這里我們可以優(yōu)化它。

我們可以給 img元素添加一個(gè) onerror 事件。如果在加載圖片時(shí)出現(xiàn)了錯(cuò)誤,那么我們可以通過(guò)onerror事件給該元素添加一個(gè)樣式,并使用404圖片。

img 元素:

<img src="https://miro.medium.com/xxx.jpg" alt='fireworks picture' onerror="this.classList.add('error');">

假設(shè)這就是我們的404圖像:

https://cdn-images-1.medium.com/max/1600/1*we8wfyztsdo12e2Cww6oVA.jpeg

下面是 css 代碼

img.error {
display: inline-block;
transform: scale(1);
content: '';
color: transparent;
}
img.error::before {
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: #f5f5f5 url('https://cdn-images-1.medium.com/max/1600/1*we8wfyztsdo12e2Cww6oVA.jpeg') no-repeat center / 100% 100%;
}

這樣,當(dāng) img 元素中的圖片鏈接無(wú)法加載圖片時(shí),我們的404圖片將被使用。

這里還有一點(diǎn)需要優(yōu)化。在這種情況下,如果原始圖片沒(méi)有被正確加載,用戶就不知道這個(gè)圖片應(yīng)該是什么。為了方便用戶理解,我們可以將 img 元素的 alt 屬性顯示在頁(yè)面上。

img.error::after {
content: attr(alt);
position: absolute;
left: 0;
bottom: 0;
width: 100%;
line-height: 2;
background-color: rgba(0, 0, 0, .5);
color: white;
font-size: 12px;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

假設(shè)img的 alt 屬性是這樣的。

事例地址:https://codepen.io/bytefishmedium/pen/vYWYMxG

色彩對(duì)比度

當(dāng)你在設(shè)計(jì)顏色組合時(shí),你是否考慮過(guò)頁(yè)面的顏色對(duì)比?

你需要知道,世界上有很多色盲和色弱用戶。如果你的頁(yè)面的對(duì)比度低,可能會(huì)導(dǎo)致他們無(wú)法正常使用你的產(chǎn)品。無(wú)論是出于人文關(guān)懷,還是出于留住客戶的考慮,你都應(yīng)該設(shè)計(jì)出合適的對(duì)比度。

WCAG AA規(guī)范指出,所有重要的內(nèi)容需要有4.5:1以上的色彩對(duì)比度。

這里有一個(gè)對(duì)比度檢查器的工具。

??https://webaim.org/resources/contrastchecker/??

事例:

我們也可以使用Chrome DevTool來(lái)檢查一個(gè)元素的顏色對(duì)比。然后我們可以發(fā)現(xiàn),Medium的網(wǎng)頁(yè)也在實(shí)踐這一原則。

總結(jié)俗話說(shuō)得好,細(xì)節(jié)決定成敗。如果你的項(xiàng)目有很多可以改善用戶體驗(yàn)的細(xì)節(jié),你就可以讓用戶感到舒服,你就有更高的成功概率。

~完,我是刷碗智,新的一年我們一起刷刷刷!

作者:Shadeed 譯者:前端小智 來(lái)源:medium

原文:https://betterprogramming.pub/10-css-tricks-that-greatly-improve-user-experience-5ee52886ca4b

本文轉(zhuǎn)載自微信公眾號(hào)「大遷世界」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系大遷世界公眾號(hào)。

責(zé)任編輯:武曉燕 來(lái)源: 大遷世界
相關(guān)推薦

2021-06-03 09:11:57

UIFigma插件

2021-05-11 16:44:42

Windows工具軟件

2019-12-02 09:04:12

PythonGitHub機(jī)器學(xué)習(xí)

2023-05-26 00:06:05

2021-08-13 17:26:55

數(shù)字化

2022-09-07 10:30:34

JSON工具

2023-09-07 10:21:03

VS Code 技巧提高開(kāi)發(fā)效率

2012-01-09 10:13:38

培訓(xùn)

2024-02-21 17:08:35

2023-03-02 08:53:57

排查問(wèn)題效率經(jīng)驗(yàn)

2022-01-13 22:37:26

VSCode代碼 編輯器

2023-07-14 10:54:00

Linux命令

2021-04-25 09:30:52

開(kāi)發(fā)CSS 瀏覽器

2020-08-09 18:06:57

Linux系統(tǒng)工具

2023-11-27 18:01:17

MySQL技巧

2010-04-07 16:54:55

Oracle性能

2013-04-22 10:14:24

PCPC將死

2023-06-13 13:52:00

Java 7線程池

2021-03-08 08:02:40

IDEA插件JSON
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)