搜尋
首頁web前端css教學菜單揭示頁面旋轉動畫

Menu Reveal By Page Rotate Animation

網站菜單設計方法多樣,有些菜單始終可見,直接顯示所有選項;另一些則隱藏起來,需要點擊才能展開。隱藏菜單的展開方式也各有不同:有的滑出並覆蓋內容,有的推開內容,有的則採用全屏顯示。

每種方法都有優缺點,最佳選擇取決於具體應用場景。我個人通常更喜歡滑出式菜單,當然並非所有情況都適用。但如果需要節省空間且易於訪問的菜單,滑出式菜單很難被超越。

然而,滑出式菜單經常與頁面內容衝突。它至少會遮擋內容,最壞則會完全從UI中移除內容。

我嘗試了一種不同的方法,它兼具固定位置菜單的持久性和可用性,以及節省空間的隱藏式滑出菜單的特性,且不會將用戶從當前內容中移除。

下面是我的實現方法。

切換開關

我們正在構建一個具有兩種狀態(打開和關閉)的菜單,並在兩者之間切換。這就是複選框技巧發揮作用的地方。它非常完美,因為複選框具有兩種常見的交互狀態——選中和未選中(還有不確定狀態)——可用於觸發這些狀態。

複選框隱藏在菜單圖標下方,並使用CSS進行定位,因此即使用戶與之交互,也看不到它。選中復選框(或者,咳咳,菜單圖標)會顯示菜單。取消選中則隱藏它。就這麼簡單。我們甚至不需要JavaScript來完成這項工作!

當然,複選框技巧並不是唯一的方法,如果您想使用JavaScript切換類來打開和關閉菜單,那也完全沒問題。

重要的是,複選框在源代碼中應位於主要內容之前,因為我們將最終編寫的:checked選擇器需要使用同級選擇器。如果這會引起佈局問題,請使用Grid或Flexbox進行佈局,因為它們與源代碼順序無關,就像我如何利用其優勢進行CSS計數一樣。

使用appearance CSS屬性去除複選框的默認樣式(由瀏覽器添加),然後添加帶有菜單圖標的偽元素,這樣用戶就看不到復選框的方塊。

首先,基本的標記:

<input type="checkbox" id="menu-toggle">
<div id="page">
  <!-- 頁面內容-->
</div>
<div id="menu">
  <!-- 菜單內容-->
</div>

以及復選框技巧和菜單圖標的基本CSS:

 /* 隱藏複選框並重置樣式*/
input[type="checkbox"] {
  appearance: initial; /* 刪除方框*/
  border: 0; margin: 0; outline: none; /* 刪除默認邊距、邊框和輪廓*/
  width: 30px; height: 30px; /* 設置菜單圖標尺寸*/
  z-index: 1; /* 確保它位於頂部*/
}

/* 菜單圖標*/
input::after {
  content: "\2255";
  display: block;
  font: 25pt/30px "georgia";
  text-indent: 10px;
  width: 100%; height: 100%;
}

/* 頁面內容容器*/
#page {
  background: url("earbuds.jpg") #ebebeb center/cover;
  width: 100%; height: 100%;
}

我還添加了#page內容的樣式,它將是一個全尺寸背景圖像。

過渡效果

點擊菜單控件時會發生兩件事。首先,菜單圖標更改為“×”標記,表示可以點擊它來關閉菜單。因此,當輸入處於:checked狀態時,我們選擇複選框輸入的::after偽元素:

 input:checked::after {
  content: "\00d7"; /* 更改為“×”標記*/
  color: #ebebeb;
}

其次,主要內容(我們的“耳機”圖像)進行轉換,顯示下方的菜單。它向右移動、旋轉並縮小,其左側角變為角形。這是為了使內容看起來像被推回,就像一個打開的門。

 input:checked ~ #page {
  clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 92%);
  transform: translateX(40%) rotateY(10deg) scale(0.8);
  transform-origin: right center;
  transition: all .3s linear;
}

我使用clip-path來更改圖像的角。

由於我們正在對轉換應用過渡,因此#page需要一個初始clip-path值,以便有東西可以進行過渡。我們還將在#page上添加一個過渡,因為它將允許它像打開一樣平滑地關閉。

 #page {
  background: url("earbuds.jpeg") #ebebeb center/cover;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: all .3s linear;
  width: 100%; height: 100%;
}

我們基本上完成了核心設計和代碼。當複選框取消選中(通過點擊“×”標記)時,耳機圖像上的轉換將自動撤消,它將被帶回中心位置。

一點JavaScript

即使我們已經得到了想要的東西,還有一件事可以提升用戶體驗:點擊(或點擊) #page元素時關閉菜單。這樣,用戶無需查找甚至使用“×”標記即可返回內容。

由於這僅僅是隱藏菜單的另一種方法,我們可以使用JavaScript。如果由於某種原因禁用了JavaScript?沒關係。它只是一個增強功能,不會阻止菜單在沒有它的情況下工作。

 document.querySelector("#page").addEventListener('click', (e, checkbox = document.querySelector('input')) => {
  if (checkbox.checked) { checkbox.checked = false; e.stopPropagation(); }
});

這三行代碼的作用是在#page元素上添加一個點擊事件處理程序,如果復選框處於:checked狀態,則取消選中復選框,從而關閉菜單。

我們一直在查看為垂直/縱向設計製作的演示,但根據我們正在使用的內容,它在大屏幕尺寸下也能同樣有效。

這只是對典型滑出式菜單的一種方法或嘗試。動畫打開了大量的可能性,您可能還會想到其他幾十個想法。事實上,我很想听聽(或者更好的是,看到)它們,所以請分享!

以上是菜單揭示頁面旋轉動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
'訂閱播客”鏈接應在哪裡?'訂閱播客”鏈接應在哪裡?Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

瀏覽器引擎多樣性瀏覽器引擎多樣性Apr 16, 2025 pm 12:02 PM

當他們在2013年去Chrome時,我們失去了歌劇。與Edge今年早些時候也進行了同樣的交易。邁克·泰勒(Mike Taylor)稱這些變化為“減少

網絡共享的UX注意事項網絡共享的UX注意事項Apr 16, 2025 am 11:59 AM

從垃圾點擊誘餌網站到大多數出版物的最多,共享按鈕長期以來一直無處不在。然而,這些

每周平台新聞:Apple部署網絡組件,漸進的HTML渲染,自託管關鍵資源每周平台新聞:Apple部署網絡組件,漸進的HTML渲染,自託管關鍵資源Apr 16, 2025 am 11:55 AM

在本週的綜述中,Apple進入Web組件,Instagram如何插入腳本以及一些思考的食物,以進行自託管關鍵資源。

git Pathspecs以及如何使用它們git Pathspecs以及如何使用它們Apr 16, 2025 am 11:53 AM

當我查看GIT命令的文檔時,我注意到其中許多人都有選擇。我最初以為這只是一個

產品圖像的彩色拾取器產品圖像的彩色拾取器Apr 16, 2025 am 11:49 AM

聽起來有點像一個困難的問題,不是嗎?我們經常沒有成千上萬種顏色的產品鏡頭,以便我們可以隨身攜帶。我們也不是

黑暗模式與React和Themeprovider切換黑暗模式與React和Themeprovider切換Apr 16, 2025 am 11:46 AM

我喜歡網站具有“暗模式”選項時。黑暗模式使我更容易閱讀網頁,並幫助我的眼睛更放鬆。許多網站,包括

帶有HTML對話框元素的一些動手帶有HTML對話框元素的一些動手Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境