一个侧边栏导航组件实现思路

开发 前端
在这篇文章中,我想和大家分享我是如何为 web 原型化一个 Sidenav 组件的,这个组件是响应式的,有状态的,支持键盘导航,可以使用和不使用 Javascript,并且可以跨浏览器工作。

 [[378862]]

在这篇文章中,我想和大家分享我是如何为 web 原型化一个 Sidenav 组件的,这个组件是响应式的,有状态的,支持键盘导航,可以使用和不使用 Javascript,并且可以跨浏览器工作。

构建一个响应式导航系统是很困难的。有些用户使用键盘,有些用户使用强大的台式机,还有一些用户使用小型移动设备访问。每个访问者都应该能够打开和关闭菜单。

图片

桌面到移动设备响应式布局演示

用了哪些技术

在这次组件探索中,我很高兴地结合了一些关键的网络平台特性:

  • 伪类
  • CSS Grid
  • transforms
  • 媒体查询和用户偏好 CSS
  • 用户增强体验

我的解决方案只有一个侧边栏,只有在“移动”视口为540px 或更小时才能切换。540px 将是我们在移动交互式布局和静态桌面布局之间切换的断点。

伪类

一个<a> 链接将 url 散列设置为 #sidenav-open,另一个设置为 empty('')。最后,一个元素具有匹配散列的 id:

  1. <a href="#sidenav-open" id="sidenav-button" title="Open Menu" aria-label="Open Menu"
  2. <a href="#" id="sidenav-close" title="Close Menu" aria-label="Close Menu"></a> 
  3. <aside id="sidenav-open"></aside> 

  图片

点击这些链接会改变我们网页 URL 的散列状态,然后用一个伪类来显示和隐藏 Sidenav:

  1. @media (max-width: 540px) { 
  2.     #sidenav-open { 
  3.         visibility: hidden; 
  4.     } 
  5.      
  6.     #sidenav-open:target { 
  7.         visibility: visible; 
  8.     } 

CSS Grid

在过去,我只使用绝对或固定位置 Sidenav 布局和组件。不过,使用网格区域语法,可以为同一行或列分配多个元素。

Stacks

主要的布局元素 #sidenav-container 是一个网格,它创建了 1 行和 2 列,其中 1 列被命名为 stack。当空间受到限制时,CSS 会将所有

 

<main>元素的子元素赋给同一个网格名称,将所有元素放在同一个空间中,创建一个堆栈。
  1. #sidenav-container { 
  2.     display: grid; 
  3.     grid: [stack] 1fr / min-content [stack] 1fr; 
  4.     min-height: 100vh; 
  5.  
  6. @media (max-width: 540px) { 
  7.     #sidenav-container > * { 
  8.         grid-area: stack; 
  9.     } 

菜单背景

 

责任编辑:姜华 来源: 大海我来了
相关推荐

2023-06-06 15:38:28

HTMLCSS开发

2016-12-07 10:18:44

移动应用开发底部导航android

2021-08-19 09:05:36

顶部导航左侧导航浏览

2020-12-09 11:32:10

CSS前端代码

2022-07-15 16:39:46

ETS导航栏组件

2023-10-23 08:48:04

CSS宽度标题

2012-01-12 10:09:55

Elementary 思路

2016-12-07 10:27:16

移动应用开发底部导航android

2022-11-15 18:31:37

React

2016-12-07 10:02:54

移动应用开发底部导航android

2022-08-29 07:48:27

文件数据参数类型

2021-11-03 14:49:20

开发摸鱼侧边栏

2021-06-21 15:49:39

React动效组件

2009-06-24 09:36:52

XML实现breadcMVC

2015-07-30 14:43:04

导航栏iOS开发

2022-01-17 11:41:50

前端Vite组件

2015-10-10 14:22:46

jQueryCSS3栏菜单

2016-12-07 10:58:35

移动应用开发底部导航android

2016-12-07 10:32:14

移动应用开发底部导航android

2024-04-09 07:36:03

AI产品AI技术人工智能
点赞
收藏

51CTO技术栈公众号