是否曾經試著點擊或點擊一個元素(例如:按鈕、鏈接),并且注意到只有單擊該元素的特定區域,它才會響應?
必生這種情況是因為可點擊區域未應用于整個元素。為了更加清楚,請參見下圖,左圖可點擊區別(圈紅部分)明顯比右圖的小很多,所以右圖的實現用戶體驗會更好。
對于本文,會介紹一些事例,并通過事例演示如何增加可點擊區別,提高用戶體驗。
WCAG全稱Web Content Accessibility Guidelines 網頁內容無障礙瀏覽準則,簡單的說就是為了方便殘障人士(包括低視患者,盲人,聾人,學習障礙,行動不便,認知障礙....)訪問Web內容而制定的相關標準,可以使網站更加人性化。
舉個例子,在WCAG準則2.3.2中規定:網頁不包含任何閃光超過3次/秒的內容。
用戶應該能夠使用臺式機/筆記本電腦上的鍵盤以及移動設備或平板電腦上的觸摸屏來操作輸入。不要在移動設備屏幕上將按鈕設置得太小,以免按下正確的按鈕。觸摸目標的最小尺寸最好至少為44 x 44像素。
**費茲法則(Fitts law)**是一個人機互動以及人體工程學中人類活動的模型;它預測了快速移動到目標區域所需的時間是目標區域的距離和目標區域大小的函數。
在下面的圖中,我模擬了兩個按鈕的不同情況。在左側,按鈕更小,更遠,用戶需要更多的時間與它互動。在右側,按鈕大小更大,更接近于它的同級輸入元素,這將使交互更容易、更快。
接著,我們再來看看一些更加真實例子。注意:記住WCAG準則 和費茲法則 的概念。
在需要時使用實際真實<button>(包含可點擊區域)非常重要。下面的示例來自我使用的在線銀行系統:
<div class="navig next" onclick="validateLogin()">Next</div>
這是上面按鈕的HTML的GIF圖像。我把鼠標懸停在按鈕上,光標仍然是一個指針,這很好。不過,我也可以選擇文本和懸停時,有一個文本光標!如果使用了正確的元素,就不會發生這種情況。
當使用HTML<button>元素時,會獲得下面效果:
有些元素,我們需要添加 padding,原因有二:
之前在做導航的時候,犯了一個錯誤,應該是給 a 標簽添加 padding 而不是 li:
<nav>
<ul>
<li class="nav-item"><a href="#">Home</a></li>
<li class="nav-item"><nav href="#">Products</nav></li>
<li class="nav-item"><a href="#">Store</a></li>
<li class="nav-item"><a href="#">Team</a></li>
</ul>
</nav>
// css
.nav-item {
padding: 12px 16px;
}
基于上面的HTML和CSS,可點擊的區域將只是文本,如下圖所示:
正確的方法是在a 標簽本身上添加padding。請注意,默認情況下,padding 需要塊元素才有效,而 a 標簽是行內元素,所以可以給 a 標簽設置block,inline-element或 flex。
.nav-item a {
display: block;
padding: 12px 16px;
}
添加了上面的樣式后,可點擊的效果如下:
假設可點擊區域如下所示:
這種體驗不是很好,鼠標或手指指向屏幕上如此小的目標會比較難。在下圖中,它的可點擊區域更大并且更易于交互。
事例源碼:https://codepen.io/shadeed/pen/PMygee
當存在復選框或單選按鈕元素時,我希望可以單擊它或關聯的標簽來激活/禁用它。
從用戶體驗的角度來看,這是難以訪問和糟糕的。在 HTML 中,可以使用for屬性將標簽與輸入框綁定在一起。
<input type="checkbox" id="option1">
<label for="option1">Option 1</label>
或者可以將輸入框放置在標簽內:
<label for="option1">
Option 1
<input type="checkbox" id="option1">
</label>
然后,在<label>元素上添加padding,以使可點擊區域變大。這樣,問題得以解決,整個復選框或單選按鈕都是可單擊的,如下圖所
對于帶有類別的頁面,有時我會注意到列表鏈接沒有擴展到其父頁面的整個寬度。也就是說,可點擊區域僅在文本上,如下圖所示:
解決方法:
.nav-item a {
/*Other styles*/
padding: 12px 16px;
display: block;
}
添加后,如下所示:
在最近的Twitter更新中,導航設計在可點擊區域大小方面存在問題。最初,它僅與文本相關,如下面的屏幕截圖所示,但他們在收到反饋后將其修復。
在某些情況下,需要在章節標題的遠端添加“查看更多”按鈕或箭頭。在下面的示例中,我將箭頭放置在假圓中,以便可以正確地使箭頭居中。
通常情況下,箭頭周圍的間距可以使用padding或width和height。
僅通過改變元素的寬度和高度或使用padding,并不總是能夠使可點擊區域變大,這時候就需要偽元素救場了。
這個想法是,偽元素屬于其父元素,因此當我們創建具有特定寬度和高度的偽元素時,它將充當其父元素的單擊/觸摸/懸停區域。
在下圖中,我在菜單按鈕中添加了:after偽元素:
.menu-2:after {
content: "";
position: absolute;
left: 55px;
top: 0;
width: 50px;
height: 50px;
background: #e83474;
/*Other styles*/
}
事例源碼:https://codepen.io/shadeed/pen/BXXjEg?editors=0100
作者:Ahmad Shadded 譯者:前端小智 來源:css-tricks
原文:https://css-tricks.com/enhancing-the-clickable-area-size/
者:Tam Hanna
轉發鏈接:https://www.creativebloq.com/how-to/21-ways-to-optimise-your-css-and-speed-up-your-site
片的位置搞的差不多了之后再來完善一下。你看這個Demo里面把鼠標挪到圖片這里之后有沒有發現什么變化?鼠標挪到圖片這里,鼠標從箭頭變成了一個手指,這是第一個。鼠標懸浮到圖片上的時候圖片是會放大的,所以接下來在圖片上加上這兩個效果。
·第一個效果也就是鼠標挪過來之后從箭頭變成手指。這個怎么搞?其實很簡單,有個CSS的屬性也叫pointer,這個是光標的意思。如果要讓它變成手指就是設置成pointer,然后保存,把鼠標挪過來,挪到圖片范圍里面去就變成手指了,出來就變成箭頭了。
如果想換成別的也可以,比如crosshair,變成十字架了,換成pointer,第一個效果已經實現了。
·第二個效果就是挪到圖片上之后會放大。這個怎么搞?其實也簡單,可以再加一個CSS選擇器。首先針對的是這些image元素,所以image要處理的是當鼠標懸浮到圖片上的時候是什么效果,所以后面加個冒號,再加上一個hover大括號。
hover是什么意思?就是懸停的意思,也就是這里面的一些設置只會在什么時候起效?就是當鼠標懸停到圖片上的時候可以實驗一下看起不起效果。比如當鼠標懸停到圖片的時候讓圖片的邊框顯示出來,那就是border,width,3Pixel,border style,solid,實實線。它的顏色border,color,比如白色。
把鼠標挪過來,這里的設置是不是只有在我這個鼠標,懸停到了某張圖片上的時候才會起效果。但是需要的效果不是把邊框顯示出來,是希望坤坤能夠變大,所以可以搞一個transform,這個是幾何變換的意思。
想讓坤坤變大肯定是縮放,這里有個scale是縮放,點一下,這里就可以設置坤坤到底要縮放成多大。這里可以填一個系數,比如填個1.1就相當于是會比原來大1.1倍,填個0.9就會比之前縮小10%。
這里來試一下,比如1.4,保存好移過來,是不是變大了?但是變大不像這邊這么絲滑,像是有一個過渡圖動畫一樣。這個怎么搞?也簡單,再加一個設置transition,這個就是變化的意思。
后面可以加上一個時間,也就是當鼠標挪過來之后不是會變大嗎?從原始大小變成這么大,這個過程需要多長時間?這個時間就可以在這里設置,比如搞個一秒鐘,就1S好保存,挪過來是不是一秒鐘的樣子?如果覺得時間太長了,可以再縮短,比如0.3,快一點了。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。