CSS3 实现侧边栏展开收起动画

下面来介绍一下“CSS3 实现侧边栏展开收起动画”的完整攻略:

一、HTML 结构

在实现侧边栏展开收起的过程中,需要先构建 HTML 结构。通常情况下,我们可以在网页的左侧或右侧设置一个固定宽度的侧边栏,而在其余部分放置主要内容。以下是一个简单的 HTML 结构示例:

<div class="wrapper">
  <div class="sidebar"></div>
  <div class="main-content"></div>
</div>

其中,.wrapper 是整个页面的容器,.sidebar 是侧边栏的容器,.main-content 是主要内容的容器。

二、CSS 样式

为了让侧边栏展开收起具有动画效果,需要设置一些 CSS 属性。下面是实现这个效果所需的核心 CSS 样式:

.wrapper {
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
}

.sidebar {
  width: 250px;
  height: 100vh;
  background-color: #f3f3f3;
  transition: all 0.3s ease;
}

.main-content {
  flex: 1;
  height: 100vh;
  background-color: #fff;
  transition: all 0.3s ease;
}

.wrapper.show-sidebar .sidebar {
  width: 0;
}

.wrapper.show-sidebar .main-content {
  flex: 0;
}

其中,.wrapper 使用 display: flex 属性将子元素排列在一行,并且设置 justify-content: flex-startalign-items: stretch 属性让初始状态下,侧边栏显示,并填充整个高度。

.sidebar 设置 width 属性来控制其宽度,并设置 transition: all 0.3s ease 属性为元素添加动画效果。.main-content 使用 flex: 1 属性填充剩余的宽度,同样设置 transition 属性添加动画效果。

最后,.wrapper.show-sidebar .sidebar.wrapper.show-sidebar .main-content 分别设置了不同的样式,用于在侧边栏展开或收起时修改侧边栏和主要内容的样式。

三、JavaScript 控制

为了实现侧边栏的展开和收起,需要使用 JavaScript 动态控制样式。以下是具体的 JavaScript 控制实现:

let wrapper = document.querySelector('.wrapper');
let btnToggle = document.querySelector('.btn-toggle');

function toggleSidebar() {
  wrapper.classList.toggle('show-sidebar');
}

btnToggle.addEventListener('click', toggleSidebar);

代码中,我们首先获取 .wrapper.btn-toggle 元素。接着定义 toggleSidebar 函数,通过 classList.toggle 方法在 .wrapper 中添加 show-sidebar 类名,从而控制侧边栏的展开和收起。最后使用 addEventListener 方法为 .btn-toggle 元素添加点击事件,使其能够触发 toggleSidebar 函数。

四、示例说明

以下是两个示例,用来进一步演示如何实现侧边栏展开和收起的动画效果:

示例一

在此示例中,我们将侧边栏放在页面左侧,点击“Toggle Sidebar”按钮时,侧边栏会从左侧展开或收起。

HTML 结构:

<div class="wrapper">
  <div class="sidebar"></div>
  <div class="main-content"></div>
</div>
<button class="btn-toggle">Toggle Sidebar</button>

CSS 样式:

.wrapper {
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
}

.sidebar {
  width: 250px;
  height: 100vh;
  background-color: #f3f3f3;
  transition: all 0.3s ease;
}

.main-content {
  flex: 1;
  height: 100vh;
  background-color: #fff;
  transition: all 0.3s ease;
}

.wrapper.show-sidebar .sidebar {
  width: 0;
}

.wrapper.show-sidebar .main-content {
  flex: 0;
}

.btn-toggle {
  position: fixed;
  top: 20px;
  left: 20px;
  z-index: 9999;
  padding: 10px;
  background-color: #333;
  color: #fff;
  border: none;
  cursor: pointer;
}

JavaScript 控制:

let wrapper = document.querySelector('.wrapper');
let btnToggle = document.querySelector('.btn-toggle');

function toggleSidebar() {
  wrapper.classList.toggle('show-sidebar');
}

btnToggle.addEventListener('click', toggleSidebar);

示例二

在此示例中,我们将侧边栏放在页面右侧,并将其默认隐藏。鼠标悬停在页面右侧时,侧边栏会从右侧滑入。移开鼠标时,侧边栏会滑出,隐藏起来。

HTML 结构:

<div class="wrapper">
  <div class="main-content"></div>
  <div class="sidebar"></div>
</div>

CSS 样式:

.wrapper {
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
}

.sidebar {
  width: 250px;
  height: 100vh;
  background-color: #f3f3f3;
  transition: all 0.3s ease;
  transform: translateX(100%);
}

.main-content {
  flex: 1;
  height: 100vh;
  background-color: #fff;
  transition: all 0.3s ease;
}

.wrapper.show-sidebar .sidebar {
  transform: translateX(0%);
}

.wrapper.show-sidebar .main-content {
  transform: translateX(-250px);
}

JavaScript 控制:

let wrapper = document.querySelector('.wrapper');

wrapper.addEventListener('mouseenter', function() {
  wrapper.classList.add('show-sidebar');
});

wrapper.addEventListener('mouseleave', function() {
  wrapper.classList.remove('show-sidebar');
});

这两个示例代表了常见的侧边栏展开收起动画实现方式。当然,具体的实现方式还有很多变化和技巧,需要根据具体场景进行调整。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS3 实现侧边栏展开收起动画 - Python技术站

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

相关文章

  • 手机端页面rem宽度自适应脚本

    下面是关于“手机端页面rem宽度自适应脚本”的完整攻略。 什么是rem? rem是一种可以相对于根元素大小进行调整的单位,它可以用于替代像素作为页面布局的单位。使用rem单位的一个好处是,整个页面的宽度可以根据页面宽度大小进行自动调整,达到适配不同的设备的屏幕。 rem宽度自适应脚本的实现 我们可以通过javascript编写自适应rem脚本,根据设备宽度动…

    css 2023年6月10日
    00
  • CSS中的各种选择器与样式优先级小结

    CSS中的各种选择器与样式优先级是CSS选择器的核心概念。在编写CSS样式代码时,了解选择器和样式优先级的特性,可以让我们更好地实现页面布局和样式效果的设计。本文将详细讲解CSS中的选择器和样式优先级,带你深入了解。 CSS中的选择器 CSS选择器指的是一种匹配HTML文档中某些元素的方式,通过选择器,我们可以直接作用于文档中的特定部分,来实现特定的样式设计…

    css 2023年6月9日
    00
  • CSS3 真的会替代 SCSS 吗

    题目所涉及的“CSS3”实际上是指CSS3的扩展功能,包括但不限于flexbox、grid、transform等模块。而“SCSS”则是一种CSS预处理器,它在CSS的语法基础之上添加了一些高级功能。 要回答该问题,首先需要澄清一个误区:CSS3并不能替代SCSS,它们是两个不同的概念。CSS3只是CSS的新版本,它新增了很多特性和功能,但它依然需要在CSS…

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

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

    css 2023年6月9日
    00
  • bootstrap响应式工具使用详解

    Bootstrap响应式工具使用详解 Bootstrap是一种常用的HTML、CSS、JavaScript框架,提供了多种工具和组件,其中响应式工具能够使你的页面自适应不同设备的屏幕尺寸。 响应式网格系统 响应式网格系统提供了一种将页面分为12列的布局方式,可以方便地控制页面布局在不同设备上的表现。以下是一个例子: <div class="c…

    css 2023年6月11日
    00
  • HTML5+CSS3 诱人的实例:3D立方体旋转动画实例

    HTML5+CSS3 诱人的实例:3D立方体旋转动画实例,是一种基于HTML和CSS技术的动画效果展示。相比传统的2D动画效果,3D立方体旋转动画通过透视和深度感的增强,让视觉效果更加炫酷。下面是完整攻略: 原理 实现3D立方体旋转动画的原理,是通过CSS3的transform和transition属性的组合,在3个方向(X,Y,Z)上同时实现旋转变换,从而…

    css 2023年6月10日
    00
  • JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)

    下面是详细的攻略: JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠) 1. 引入 jQuery 库 在 HTML 页面中引入 jQuery 库,可以通过以下代码实现: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js">&…

    css 2023年6月10日
    00
  • CSS使用BEM命名规范实践

    下面是“CSS使用BEM命名规范实践”的完整攻略: 什么是BEM命名规范 BEM是块(Block)、元素(Element)、修饰符(Modifier)的缩写。它是一种命名约定,用于在CSS中为代码块、元素和修饰符创建独特的名称。这种命名方式有助于清晰和一致地组织CSS代码。 块(Block):一般独立的功能模块,对应HTML中的一个DOM节点,如.nav、.…

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