搜尋
首頁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
Flexbox vs Grid:我應該學習兩者嗎?Flexbox vs Grid:我應該學習兩者嗎?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSS計數器:自動編號的綜合指南CSS計數器:自動編號的綜合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

使用捲軸驅動動畫的現代滾動陰影使用捲軸驅動動畫的現代滾動陰影May 07, 2025 am 10:34 AM

使用滾動陰影,尤其是對於移動設備,是克里斯以前涵蓋的一個微妙的UX。傑夫(Geoff)涵蓋了一種使用動畫限制屬性的新方法。這是另一種方式。

重新訪問圖像圖重新訪問圖像圖May 07, 2025 am 09:40 AM

讓我們快速進修。圖像地圖一直返回到HTML 3.2,首先是服務器端地圖,然後使用映射和區域元素通過圖像上的單擊區域定義了可單擊區域。

DEV狀態:每個開發人員的調查DEV狀態:每個開發人員的調查May 07, 2025 am 09:30 AM

開發委員會調查現已開始參與,並且與以前的調查不同,它涵蓋了除法:職業,工作場所,以及健康,愛好等。 

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器