2024年10月25日 星期五

[研究]Bootstrap 4 升級 Bootstrap 5 後本來沒出現的字出現了

[研究]Bootstrap 4 升級 Bootstrap 5 後本來沒出現的字出現了

2024-10-24

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

ASP.NET, WebForm, bootstrap 4 .6.2升級到 5.3.3 後,網頁上左上角出現 "跳到主要內容",本來沒出現的,搜尋發現 MasterPage.master 有一行 ,請問該如何修改 ?

<a href="#center-menu" id="gotocenter" title="跳到主要內容" tabindex="1" class="sr-only sr-only-focusable">跳到主要內容</a> 

ChatGPT 說:

在升級 Bootstrap 版本後,Bootstrap 5 中移除了部分和可見性相關的工具類別,例如 sr-only 和 sr-only-focusable。這些類別在 Bootstrap 4 中可以隱藏元素並在聚焦時顯示,但在 Bootstrap 5 中已被替代。

要處理這個問題,可以用以下方式來調整這段 HTML 以確保在 Bootstrap 5.3.3 中維持原本的效果:

1. 以新的 Bootstrap 5 類別取代 sr-only 和 sr-only-focusable: 在 Bootstrap 5 中,可以改用 visually-hidden 類別來達到隱藏的效果。若希望在聚焦時顯示,可以在 CSS 中自訂樣式。

2. 修改 HTML 和 CSS: 更新這段程式碼如下:

<a href="#center-menu" id="gotocenter" title="跳到主要內容" tabindex="1" class="visually-hidden-focusable">跳到主要內容</a>

3.新增自訂 CSS: 在 MasterPage 或 CSS 檔案中加入以下自訂樣式,確保在聚焦時可以顯示此連結:

.visually-hidden-focusable {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.visually-hidden-focusable:focus {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    clip: auto;
    white-space: normal;
}



這樣,這個「跳到主要內容」的連結會在頁面上隱藏,但在使用鍵盤導航時聚焦時會顯示,達到 Bootstrap 5 中的兼容效果。

********************************************************************************

visually-hidden-focusable 是 BootStrap 5 預設提供的 CSS ?

ChatGPT 說:

visually-hidden-focusable 並不是 Bootstrap 5 預設提供的 CSS 類別。在 Bootstrap 5 中,官方僅提供了 visually-hidden 類別來替代原本的 sr-only。這個類別可以將元素隱藏,但沒有包含在聚焦時顯示的功能。

要實現「聚焦顯示」的效果,需要手動新增 CSS,如我上面所示的 .visually-hidden-focusable。你可以將這段自訂 CSS 加入至專案中,以在聚焦時顯示隱藏的連結。

********************************************************************************

實際測試成功。

(完)

相關

沒有留言:

張貼留言