>我不斷尋找改善和完善Web應(yīng)用程序可用性的方法。特別是,我總是嘗試找到使自己的表格更好的方法,因為讓我們面對現(xiàn)實:如果您要構(gòu)建Web應(yīng)用程序,則將構(gòu)建表格。最有可能的是,您將建立很多形式。
任何觀察到普通用戶試圖完成表格或一系列表格的人都知道體驗常常令人沮喪。採取額外的措施來提高您的形式的可用性 - 即使以較小的方式 - - 您可以真正提高應(yīng)用程序的用戶友好性。
>
>您可以用來提高表格的可用性的一種技術(shù)是保留後背包後的頁面滾動。您可能想在搜索頁面中使用此功能,例如,用戶可以按列對結(jié)果進行排序。如果您的頁面上的頂部A中的A中可以接受搜索參數(shù),並且顯示下面的結(jié)果,那麼用戶必須每次想通過給定的列對結(jié)果進行分類時,必須將頁面向下滾動到結(jié)果時,可能會非常煩人。幸運的是,我們可以為此做些事情。
>
解決方案
>在本教程中,我將向您展示如何在表單頁面張貼回到本身時可以輕鬆保持頁面的滾動位置。儘管我在ColdFusion上對此進行了編碼,但該技術(shù)可以輕鬆移植到其他語言中。
>為了使這項技術(shù)起作用,實際上您只需要做兩件事。 您必須編寫一些JavaScript,以獲取頁面的當前X和Y捲軸坐標,並將其放置在表格中,以便將它們發(fā)布回當前頁面時提交。然後,您必須採用那些X和Y滾動坐標,並結(jié)合使用服務(wù)器和客戶端腳本腳本,將頁面的滾動坐標設(shè)置為一旦重新加載。一塊蛋糕!
表單代碼
>我在這裡使用了一個裸露的表格,因此您可以真正地專注於該過程的工作原理,而是創(chuàng)建上面提到的更複雜的搜索頁面。一旦知道如何使事情正常工作,您就可以輕鬆地適應(yīng)自己的需求,並儘可能聰明。
此表單目前沒有任何特別的事情。它只需將其張貼回本書,傳遞名稱參數(shù)。我已經(jīng)對段落和數(shù)字進行了編碼,以便我們在頁面上具有可滾動的內(nèi)容,因此我們有一個視覺指南來幫助判斷頁面垂直滾動的範圍(請注意,該腳本可以保留垂直和水平滾動)。
>跟蹤滾動
>第一步是添加一些JavaScript以獲取X和Y滾動值並將其放入表單中。為此,我們需要在我們的表單中添加兩個隱藏的輸入,以及幾行JavaScript,當提交表單並將其傳遞到隱藏的輸入時,它們將抓住當前的滾動值。 SavesCrollCoordinates()函數(shù)將查看對文檔的瀏覽器支持。所有內(nèi)容並使用正確的引用來獲取滾動值並相應(yīng)地更新表單輸入。我們將在此示例中使用onsubmit()event處理程序來稱呼它。
>
>我已經(jīng)編碼了將滾動值存儲為本示例中文本字段的隱藏字段,因此,如果您有快速的眼睛,可以在提交表單之前觀看值如何更改。
<cfparam name="FORM.name" default="Testing"> <br>
<br>
<html> <br>
<head> <br>
? <title>Test</title> <br>
</head> <br>
<body> <br>
<br>
<form name="Form1" ?<br>
? method="POST" ?<br>
? action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>"> <br>
<br>
? <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> ?<br>
? <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <br>
<br>
? <hr width="2000"> <br>
<br>
? <nobr> <br>
? Name: <input type="text" name="name" value="<cfoutput>#FORM.name#</cfoutput>"> <br>
? <input type="submit" value="Submit"></nobr> <br>
<br>
? <hr width="2000"> <br>
? ?<br>
? <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> ?<br>
? <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <br>
<br>
</form> <br>
<br>
</body> <br>
</html>
第二步是採用與表單傳遞的值並與它們做某事。為此,我們需要添加幾行JavaScript,只需稍微coldfusion即可。首先,我們將在頁面頂部插入兩個額外的CFPARAM標籤,因此我們有一些默認的滾動值可以在每個頁面加載上使用。然後,我們將定義scrollTocoorDinates()函數(shù)以設(shè)置頁面滾動,並在使用 tag中的onload()事件處理程序加載頁面時調(diào)用它。
>這是逐場播放崩潰,描述了用戶單擊按鈕提交表單時發(fā)生的情況:
>
<cfparam name="FORM.name" default="Testing"> <br>
<br>
<html> <br>
<head> <br>
? <title>Test</title> <br>
<script language=javascript> <br>
function saveScrollCoordinates() { <br>
? document.Form1.scrollx.value = (document.all)?document.body.scrollLeft:window.pageXOffset; <br>
? document.Form1.scrolly.value = (document.all)?document.body.scrollTop:window.pageYOffset; <br>
} <br>
</script> <br>
</head> <br>
<body> <br>
<br>
<form name="Form1" ?<br>
? method="POST" ?<br>
? onSubmit="saveScrollCoordinates()" ?<br>
? action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>"> <br>
<br>
? <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> ?<br>
? <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <br>
<br>
? <hr width="2000"> <br>
<br>
? <nobr> <br>
? Name: <input type="text" name="name" value="<cfoutput>#FORM.name#</cfoutput>"> <br>
<input type="text" name="scrollx" value="0"> <br>
? <input type="text" name="scrolly" value="0"> <br>
? <input type="submit" value="Submit"></nobr> <br>
<br>
? <hr width="2000"> <br>
? ?<br>
? <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> ?<br>
? <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <br>
<br>
</form> <br>
<br>
</body> <br>
</html>
> savesCrollCoordinates()函數(shù)由表單的onSubmit()事件處理程序執(zhí)行。
> savesCrollCoordinates()更新具有適當值的scrollx和sclolly隱藏的輸入。
表單帖子回到同一頁面。 - >
coldfusion表單參數(shù)scrollx和sclolly在scrolltocoordinates()函數(shù)中設(shè)置滾動坐標。
標籤中的onload()事件處理程序調(diào)用scrolltocoorDinates()函數(shù)。
- 窗口的滾動屬性是根據(jù)傳遞的坐標調(diào)整的。
>
-
測試表格,您會注意到,無論滾動何處,提交頁面時,您最終都位於垂直和水平啟動的同一位置。 要更好地測試水平滾動,請調(diào)整瀏覽器大小,以使其非常窄,然後提交表格。您的X和Y捲軸是自動保留使用HREF錨的另一種方法,但是這樣做幾乎準確或光滑。 - >
總結(jié)
>我上面給出的示例呢,其中有一個搜索頁面,其中包含一個輸入表格和可以按列進行排序的結(jié)果?在這種情況下,您可能會在用戶選擇單擊列標題進行排序時提交表單並執(zhí)行一些略有不同值的SQL。如果您要使用新排序列更新一些隱藏的輸入,則將此功能添加到頁面上應(yīng)該是一件容易的任務(wù)。您只需要將其他隱藏的輸入插入您的表單中,並將此處介紹的JavaScript合併到您自己的JavaScript中。您的排序鏈接可以使用OnClick()事件處理程序更新隱藏的滾動值並重新提交您的表單。
我向您展示的只是此技術(shù)的簡單示例。此處的代碼已使用Internet Explorer 6和Mozilla Firefox進行測試,以及Mac上的Safari。將此技術(shù)背後的想法作為起點。運用您自己的創(chuàng)造力和技能,為您在應(yīng)用程序中使用的表格添加更加精緻,直觀的感覺。
>
>保存頁面滾動位置的常見問題
>如何使用CSS?
>使用CSS的滾動位置保留頁面的滾動位置,可以使用“捲軸行為”屬性來實現(xiàn)CSS的滾動位置。此屬性指定滾動應(yīng)平滑還是跳躍。為了使?jié)L動位置平滑,您可以使用“滾動行為:光滑”。這將使從頁面的一個部分過渡到另一個更光滑,從而保留了滾動位置。
> javascript在保留滾動位置中的作用是什麼?
javascript在保留頁面捲軸位置方面起著至關(guān)重要的作用。它允許您將滾動位置保存在變量中,然後以後使用它來還原位置。當您想在頁面刷新之後保持滾動位置或?qū)Ш交仨撁鏁r,這一點特別有用。
如何使用CSS?
如何使用css的位置更改滾動條的位置?此屬性確定文本方向以及應(yīng)放置滾動條的位置。例如,如果您希望滾動欄在左側(cè),則可以使用“方向:rtl”,並且可以使用“方向:ltr”。當您要控制滾動扣對準時,此屬性特別有用。
>>如何通過使用“位置”屬性來指示使用CSS的頁面上的滾動位置?此屬性使您可以將元素定位在與視口有關(guān)的元素,該元素可用於指示滾動位置。例如,您可以使用“位置:粘性”來使元素堅持到視口上,從而表明滾動位置。
如何使用CSS?
設(shè)置默認的滾動位置?這些屬性使您可以控制滾動位置並使其折斷到某些點。 >
>“滾動 - 行為:光滑”和“滾動 - 行為:自動:自動”之間有什麼區(qū)別? 地點。當您想將“自動”屬性從頁面的一個部分轉(zhuǎn)換為另一部分時,“平滑”屬性是有用的,而當您想跳到特定位置時,“自動”屬性很有用。 >
我如何使用JavaScript保存和還原滾動位置?然後,您可以使用“ window.scrollto”方法來恢復滾動位置。當您想在頁面刷新後保持滾動位置或返回頁面時,這一點特別有用。 >
>如何使用CSS? 來控制滾動snap對準>使用'scsoll-snap-align屬性來控制滾動snap arnap對準。此屬性指定滾動快照時應(yīng)對齊的元素應(yīng)對齊。例如,您可以使用“ scroll-snap-align:start”在容器開始時對齊元素。 >
>我如何使用CSS? >
使元素堅持使用e元素,可以通過使用“位置:粘性”屬性來實現(xiàn)視圖。該屬性根據(jù)用戶的滾動位置定位元素。例如,您可以使用'位置:粘性;頂部:0’使元素堅持到視口的頂部。
以上是更可用的表格 - 控制滾動位置的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!