是否曾經(jīng)試著點擊或點擊一個元素(例如:按鈕、鏈接),并且注意到只有單擊該元素的特定區(qū)域,它才會響應(yīng)?
必生這種情況是因為可點擊區(qū)域未應(yīng)用于整個元素。為了更加清楚,請參見下圖,左圖可點擊區(qū)別(圈紅部分)明顯比右圖的小很多,所以右圖的實現(xiàn)用戶體驗會更好。
對于本文,會介紹一些事例,并通過事例演示如何增加可點擊區(qū)別,提高用戶體驗。
WCAG全稱Web Content Accessibility Guidelines 網(wǎng)頁內(nèi)容無障礙瀏覽準則,簡單的說就是為了方便殘障人士(包括低視患者,盲人,聾人,學習障礙,行動不便,認知障礙....)訪問Web內(nèi)容而制定的相關(guān)標準,可以使網(wǎng)站更加人性化。
舉個例子,在WCAG準則2.3.2中規(guī)定:網(wǎng)頁不包含任何閃光超過3次/秒的內(nèi)容。
用戶應(yīng)該能夠使用臺式機/筆記本電腦上的鍵盤以及移動設(shè)備或平板電腦上的觸摸屏來操作輸入。不要在移動設(shè)備屏幕上將按鈕設(shè)置得太小,以免按下正確的按鈕。觸摸目標的最小尺寸最好至少為44 x 44像素。
**費茲法則(Fitts law)**是一個人機互動以及人體工程學中人類活動的模型;它預測了快速移動到目標區(qū)域所需的時間是目標區(qū)域的距離和目標區(qū)域大小的函數(shù)。
在下面的圖中,我模擬了兩個按鈕的不同情況。在左側(cè),按鈕更小,更遠,用戶需要更多的時間與它互動。在右側(cè),按鈕大小更大,更接近于它的同級輸入元素,這將使交互更容易、更快。
接著,我們再來看看一些更加真實例子。注意:記住WCAG準則 和費茲法則 的概念。
在需要時使用實際真實<button>(包含可點擊區(qū)域)非常重要。下面的示例來自我使用的在線銀行系統(tǒng):
<div class="navig next" onclick="validateLogin()">Next</div>
這是上面按鈕的HTML的GIF圖像。我把鼠標懸停在按鈕上,光標仍然是一個指針,這很好。不過,我也可以選擇文本和懸停時,有一個文本光標!如果使用了正確的元素,就不會發(fā)生這種情況。
當使用HTML<button>元素時,會獲得下面效果:
有些元素,我們需要添加 padding,原因有二:
之前在做導航的時候,犯了一個錯誤,應(yīng)該是給 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,可點擊的區(qū)域?qū)⒅皇俏谋?,如下圖所示:
正確的方法是在a 標簽本身上添加padding。請注意,默認情況下,padding 需要塊元素才有效,而 a 標簽是行內(nèi)元素,所以可以給 a 標簽設(shè)置block,inline-element或 flex。
.nav-item a {
display: block;
padding: 12px 16px;
}
添加了上面的樣式后,可點擊的效果如下:
假設(shè)可點擊區(qū)域如下所示:
這種體驗不是很好,鼠標或手指指向屏幕上如此小的目標會比較難。在下圖中,它的可點擊區(qū)域更大并且更易于交互。
事例源碼:https://codepen.io/shadeed/pen/PMygee
當存在復選框或單選按鈕元素時,我希望可以單擊它或關(guān)聯(lián)的標簽來激活/禁用它。
從用戶體驗的角度來看,這是難以訪問和糟糕的。在 HTML 中,可以使用for屬性將標簽與輸入框綁定在一起。
<input type="checkbox" id="option1">
<label for="option1">Option 1</label>
或者可以將輸入框放置在標簽內(nèi):
<label for="option1">
Option 1
<input type="checkbox" id="option1">
</label>
然后,在<label>元素上添加padding,以使可點擊區(qū)域變大。這樣,問題得以解決,整個復選框或單選按鈕都是可單擊的,如下圖所
對于帶有類別的頁面,有時我會注意到列表鏈接沒有擴展到其父頁面的整個寬度。也就是說,可點擊區(qū)域僅在文本上,如下圖所示:
解決方法:
.nav-item a {
/*Other styles*/
padding: 12px 16px;
display: block;
}
添加后,如下所示:
在最近的Twitter更新中,導航設(shè)計在可點擊區(qū)域大小方面存在問題。最初,它僅與文本相關(guān),如下面的屏幕截圖所示,但他們在收到反饋后將其修復。
在某些情況下,需要在章節(jié)標題的遠端添加“查看更多”按鈕或箭頭。在下面的示例中,我將箭頭放置在假圓中,以便可以正確地使箭頭居中。
通常情況下,箭頭周圍的間距可以使用padding或width和height。
僅通過改變元素的寬度和高度或使用padding,并不總是能夠使可點擊區(qū)域變大,這時候就需要偽元素救場了。
這個想法是,偽元素屬于其父元素,因此當我們創(chuàng)建具有特定寬度和高度的偽元素時,它將充當其父元素的單擊/觸摸/懸停區(qū)域。
在下圖中,我在菜單按鈕中添加了: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/
SS偽元素主要是指HTML中沒有定義、存在的元素,偽元素本身不是真正的頁面元素,但是偽元素在使用過程中,其用法與效果與其他真正頁面元素是一樣的。偽元素只能在定義基礎(chǔ)上動態(tài)顯示其運行效果,在HTML源文件中并沒有該元素的真正代碼。CSS3中所定義的所有偽元素與偽類描述如下圖所示:
CSS偽元素與偽類
ripple波紋
按鈕的波紋效果主要是指按鈕在點擊時展示出的動態(tài)效果。在實現(xiàn)效果過程中可行的方法方式較多,例如可以使用JavaScript、CSS動畫、JQuery等。網(wǎng)上目前按鈕波紋實現(xiàn)效果較多,部分樣式效果展示如下:
波紋效果展示
CSS偽類波紋效果主要借助于before、after偽類與hover懸停選擇器等實現(xiàn)類似波紋效果,本文主要借助after及hover等實現(xiàn)按鈕的波紋效果,本例設(shè)計兩種類似波紋效果,最終實現(xiàn)效果展示如下圖所示:
設(shè)計樣式1
設(shè)計樣式2
本文設(shè)計實現(xiàn)的兩類波紋效果樣式描述如上圖gif所示,其實現(xiàn)過程描述如下:
1、按鈕基本樣式設(shè)計
本例按鈕基本樣式主要包括寬度、高度、背景顏色等。使用元素選擇器與類選擇器定義了按鈕元素的基本樣式,其樣式實現(xiàn)代碼描述如下:
button,.button2,.button{width: 200px; height: 50px; background-color: green;border: 0; cursor: pointer;color: #FFF; font-size: 16px; position: relative;}
.button類主要用以實現(xiàn)設(shè)計樣式1,.button2類主要用于實現(xiàn)設(shè)計效果2,兩類按鈕定義描述如下:
<button type="button" class="button">Ripple1</button> <button type="button" class="button2">Ripple2</button>
2、after偽元素使用
after偽元素主要用于實現(xiàn)在指定元素的后面添加新的內(nèi)容。本例提供的兩種設(shè)計方式都是在button元素的后面添加新的類似div的新元素,其中樣式1,新添加的元素與button本身重合,尺寸也一致。設(shè)計樣式2中after元素位于button的底部位置,寬度與button相同,高度為指定尺寸5px。兩個設(shè)計中after元素樣式為實現(xiàn)動態(tài)展開效果都涉及寬度width為0。after元素的樣式定義如下:
.button::after{content: " "; width: 0; height: 50px; position: absolute; left:50%;top: 0%;background-color: red;opacity: 0; transition: all .4s; } .button2::after{content: " "; width: 0; height: 5px; position: absolute; left:50%;top: 100%;background-color: red;transition: all .4s; }
after元素CSS樣式定義中使用了transition屬性實現(xiàn)動畫效果,即在0.4s內(nèi)實現(xiàn)寬度從0改變?yōu)?00%。
3、hover選擇器的使用
hover選擇器為懸停選擇器,主要對鼠標在HTML元素懸停時樣式進行設(shè)置。本例兩個涉及效果都是借助hover懸停選擇器對after樣式進行設(shè)置,在初始化設(shè)置寬度為0的基礎(chǔ)上寬度改變?yōu)?00%,最終實現(xiàn)兩端伸展的效果。hover選擇器定義after元素樣式描述如下所示:
.button:hover::after{left:0%; width: 100%; opacity: 0.6;} .button2:hover::after{left:0%; width: 100%;}
以上給出了CSS偽元素實現(xiàn)波紋效果,主要借助了after、before偽元素與hover懸停選擇器等。設(shè)計實現(xiàn)效果完整源文件截圖如下:
案例完整代碼
以上給出了JavaScript中的事件基本概念及案例分析,如有問題可在評論區(qū)討論。本頭條號長期關(guān)注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可以聯(lián)系作者,共同探討。期待大家關(guān)注!相關(guān)文章鏈接如下:
前端開發(fā)-JavaScript中的事件(Event)及事件處理總結(jié)
前端開發(fā)-CSS3動畫實現(xiàn)焦點(圖文輪播)圖效果
前端開發(fā)-JavaScript DOM動態(tài)生成文本框
前端設(shè)計-教你如何快速繪制HTML5動畫
前端設(shè)計-響應(yīng)式頁面開發(fā)基礎(chǔ)
前端設(shè)計-Ajax技術(shù)及實例展示
文介紹了網(wǎng)頁編程中的按鈕使用方法。按鈕是網(wǎng)頁中最常用的控件之一,點擊后會觸發(fā)某些程序。即使沒有學習過編程,大家也應(yīng)該知道按鈕的概念。按鈕的最大功能是點擊后觸發(fā)程序。這篇文章主要介紹了如何在網(wǎng)頁中插入按鈕,并講解了按鈕的屬性和使用方法。
先來看看今天的實例效果。頁面被分為三部分:按鈕、按鈕和按鈕的共有屬性。
首先是普通按鈕,點擊后文本框的內(nèi)容發(fā)生了變化,但頁面并沒有刷新。接著是重置按鈕,點擊后文本框的內(nèi)容恢復到初始狀態(tài),但頁面仍然沒有刷新。提交按鈕點擊后,頁面重新加載,提交了表單中的內(nèi)容。
接著是按鈕,點擊后文本框的內(nèi)容發(fā)生了變化,但頁面沒有刷新。按鈕包含一個圖片且為灰色狀態(tài),無法點擊。
現(xiàn)在來看看實現(xiàn)的代碼。
輸入和按鈕的寫法非常相似,這里只展示了最基本的寫法。對于初學者來說,看一眼就明白了。
按鈕有三個類型:普通、重置和提交。按鈕的名稱和值會提交到服務(wù)器端。
提交時提交的是按鈕的值。ID和name是控制按鈕的命名。
點擊按鈕時會觸發(fā)onclick事件。autofocus屬性會在頁面加載完成后自動獲取焦點。
disabled屬性可以設(shè)置按鈕是否可用,不設(shè)置時默認可用。
form屬性用于設(shè)置提交到哪個URL、是否繞過驗證、以及表單的相關(guān)設(shè)置。
相關(guān)屬性的優(yōu)先級高于在表單中設(shè)置的屬性。
以上就是今天的分享內(nèi)容,希望對大家有所幫助。import和button在網(wǎng)頁中插入按鈕的功能是相同的,兩者的外觀也沒有明顯的區(qū)別,但是它們的屬性設(shè)置卻存在一定的重疊。
為什么需要這兩個標簽呢?而阿里巴巴標簽是HTML 5中新增加的標簽,它的必要性體現(xiàn)在哪里呢?同學們要注意,阿里巴巴標簽不是input,它不是一個封閉的標簽,而是一個唯一的標簽,可以包含文字或其他標簽。
例如,可以使用阿里巴巴標簽來插入圖片。注意,由于用戶使用的瀏覽器不同,底層的type值是必須填寫的,絕對不能使用默認值。
今天的分享就到這里,希望各位同學能夠認真練習,做到不看視頻也能夠正確地寫出代碼。所有的案例和相關(guān)文檔都可以向我索取,下期再見,想學編程就關(guān)注我吧。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。