JS+CSS实现另类带提示效果的竖向导航菜单

下面我将详细讲解“JS+CSS实现另类带提示效果的竖向导航菜单”的完整攻略。

简介

竖向导航菜单一般以垂直方式呈现导航菜单,常用于侧边栏菜单或右侧固定导航栏。本攻略将结合JS和CSS,实现一个带提示效果的竖向导航菜单,以提高用户体验。

实现原理

本攻略实现的竖向导航菜单的提示效果是,菜单高亮时,显示一个竖条,正好在菜单项边缘。具体实现需要借助一些JS和CSS技巧,具体步骤如下:

  1. 将竖条元素创建在HTML结构中,将其设置为隐藏状态。
  2. 使用JS动态计算当前菜单项相对窗口顶部距离,并将竖条元素移动到该位置。
  3. 通过CSS样式调整竖条元素的长度、颜色和边框等属性。

代码示例

下面我们将结合两个示例,对上述步骤进行具体演示。

示例1

HTML结构:

<div class="menu">
  <ul>
    <li><a href="#">菜单一</a></li>
    <li><a href="#">菜单二</a></li>
    <li><a href="#">菜单三</a></li>
    <li><a href="#">菜单四</a></li>
  </ul>
  <div class="menu-tip"></div>
</div>

CSS样式:

.menu {
  position: relative;
}
.menu-tip {
  position: absolute;
  top: 0;
  right: 0;
  width: 2px;
  height: 100%;
  background-color: red;
  border-radius: 2px;
  display: none;
}
.menu li.active .menu-tip {
  display: block;
}

JS代码:

var menu = document.querySelector('.menu');
var menuTip = document.querySelector('.menu-tip');

menu.addEventListener('mouseenter', function (e) {
  var activeItem = e.target.closest('li');
  if (!activeItem) return;
  menuTip.style.display = 'block';
  menuTip.style.top = activeItem.offsetTop + 'px';
});

menu.addEventListener('mouseleave', function () {
  menuTip.style.display = 'none';
});

示例2

HTML结构:

<div class="menu">
  <ul>
    <li><a href="#">菜单一</a></li>
    <li><a href="#">菜单二</a></li>
    <li><a href="#">菜单三</a></li>
    <li><a href="#">菜单四</a></li>
  </ul>
  <div class="menu-tip"></div>
</div>

CSS样式:

.menu {
  position: relative;
}
.menu-tip {
  position: absolute;
  top: 0;
  right: 0;
  width: 2px;
  background-color: red;
  border-radius: 2px;
  transform: scaleY(0);
  transform-origin: top;
  transition: transform .2s ease-out;
}
.menu li.active .menu-tip {
  transform: scaleY(1);
}

JS代码:

var menu = document.querySelector('.menu');
var menuTip = document.querySelector('.menu-tip');

menu.addEventListener('mouseenter', function (e) {
  var activeItem = e.target.closest('li');
  if (!activeItem) return;
  var itemRect = activeItem.getBoundingClientRect();
  menuTip.style.transform = 'scaleY(' + itemRect.height + 'px)';
  menuTip.style.top = itemRect.top + 'px';
});

menu.addEventListener('mouseleave', function () {
  menuTip.style.transform = 'scaleY(0)';
});

总结

通过本攻略的演示,我们可以学到一个基于JS和CSS的竖向导航菜单带提示效果的实现方法。需要注意的是,在实际项目中,可能需要根据不同情况进行一些微调或改进。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现另类带提示效果的竖向导航菜单 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • vue3中vue.config.js配置及注释详解

    下面是“Vue3中vue.config.js配置及注释详解”的完整攻略。 1. vue.config.js是什么 vue.config.js 是 Vue 项目的配置文件,位于项目根目录下,用于配置项目的一些基本信息。例如,可以在这里配置项目的端口号、代理、打包输出路径、公共路径等等,详细信息可以查看 Vue CLI 官方文档。 2. 创建vue.config…

    css 2023年6月9日
    00
  • div水平垂直居中的完美解决方案

    首先我们要了解什么是“div水平垂直居中的完美解决方案”。 通常情况下,我们经常需要把一个容器(例如一个 标签)居中显示,而这个容器的宽度和高度都是不确定的。此时,需要用到一种方法,能够适应各种情况,实现“水平垂直居中”的效果。这种方法,就是“flex布局”。 flex布局 在父元素上使用display: flex,然后给子元素添加margin: auto即…

    css 2023年6月10日
    00
  • html+css布局的三种方式(自然布局/流动布局/定位布局)

    当我们在网站中添加内容时,需要对内容进行布局以展示出清晰、美观的界面。HTML和CSS是实现网页布局的基础技术,下面我们将详细介绍HTML+CSS布局的三种方式:自然布局、流动布局和定位布局。 自然布局 自然布局是最基础也是最简单的一种布局方式,它根据HTML元素的特点进行布局,在不添加CSS样式的情况下,HTML元素会按照其默认的布局方式摆放。HTML中的…

    css 2023年6月9日
    00
  • vue实现一个获取按键展示快捷键效果的Input组件

    下面我将详细讲解如何使用Vue实现一个获取按键展示快捷键效果的Input组件。 需求分析 首先我们需要明确这个Input组件的需求: 用户在Input框中按下键盘上的某个键后,Input框中应显示用户按下的键; 用户可以定义自己想要的快捷键组合,比如“Ctrl+S”、“Alt+N”等; 若用户输入的不是合法的快捷键组合,则给出警告提示。 满足以上需求后,我们…

    css 2023年6月10日
    00
  • CSS cursor 属性 — 鼠标指针样式效果

    让我给你讲一下 CSS cursor 属性的完整攻略: 什么是 CSS cursor 属性? CSS cursor 属性用于设置鼠标在特定元素上的图标形状。通过改变鼠标指针的样式,可以增强用户和网页交互的体验,提高网站的可用性。 CSS cursor 属性语法 CSS cursor 属性的基本语法如下: selector { cursor: value; }…

    css 2023年6月10日
    00
  • JS组件福利大放送 推荐12款好用的Bootstrap组件

    下面是详细讲解“JS组件福利大放送 推荐12款好用的Bootstrap组件”的完整攻略: 1. 什么是JS组件? JS组件指的是使用JavaScript编写的可复用的代码模块,常用于构建Web应用程序的用户界面和交互功能。在Bootstrap中,包含了许多常用的JS组件,例如下拉菜单、模态框、轮播图等。 2. 为什么使用Bootstrap组件? Bootst…

    css 2023年6月9日
    00
  • JavaScript+Canvas实现文字粒子流特效

    下面是“JavaScript+Canvas实现文字粒子流特效”的完整攻略。 1.了解Canvas 在使用Canvas前,要先了解一下Canvas的基本知识。Canvas是HTML5新提出的一项二维图形技术,在网页中实现动画效果、游戏绘画、数据图形绘制等功能,通常使用JavaScript与之配合。 2.准备文本素材 首先需要准备一张用于生成粒子效果的文本素材,…

    css 2023年6月10日
    00
  • 详解vue-cli与webpack结合如何处理静态资源

    Vue CLI 是官方提供的 Vue.js 开发脚手架工具,它可以帮助我们一键构建 Vue.js 开发环境,同时也能对项目进行打包、调试和部署。其中,Webpack 是 Vue CLI 在底层使用的模块化打包工具,它可以处理各种类型的静态资源。 引入静态资源 在 Vue CLI 中,我们可以用 import 或 require 引入各种类型的静态资源,例如样…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部