下面是详细的攻略。
下面是详细的攻略。
问题描述
该效果是可以让一个元素悬浮在页面的右下角,当鼠标移入时,元素会展开一部分,当鼠标移出时,元素会自动收起,整个效果使用 CSS 和 DIV 元素来实现。
解决方案
要实现这个效果,我们可以分三步来实现:
- 定义 HTML 结构
- 用纯 CSS 控制元素的位置、大小、动画等
- 使用 JavaScript 监听元素的鼠标事件,实现展开和收起效果。
HTML 结构
我们可以使用一个 <div>
元素来作为悬浮元素,然后在其中添加一些其他的 HTML 元素,实现悬浮元素的内容。示例代码如下:
<div class="floating-button">
<div class="icon">ICON</div>
<div class="label">Label</div>
</div>
其中,floating-button
类是用来定义悬浮元素的整体样式,icon
类是用来定义图标样式,label
类是用来定义标签样式。
CSS 样式
我们可以使用一些 CSS 属性来控制悬浮元素的位置、大小、动画等。下面是一个示例的 CSS 样式代码:
.floating-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 60px;
height: 60px;
border-radius: 50%;
background-color: #4285f4;
color: #fff;
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
.floating-button:hover {
width: 200px;
height: 60px;
}
.floating-button:hover .icon {
margin-left: 10px;
opacity: 1;
}
.floating-button:hover .label {
display: inline-block;
margin-left: 8px;
}
其中,我们使用了 position
属性将元素定位为固定定位,使用 bottom
和 right
属性控制元素距离浏览器窗口底部和右侧的距离,使用 width
和 height
属性控制元素的大小,使用 border-radius
属性定义元素的圆角,使用 background-color
属性定义元素的背景颜色,使用 color
属性定义元素的文字颜色,使用 font-size
属性控制元素的文字大小,使用 cursor
属性定义元素的鼠标指针样式,并使用 transition
属性定义元素的过渡效果。
同时,我们使用 :hover
选择器来定义当鼠标移入元素时的样式。当鼠标移入元素时,我们通过改变元素的宽度和高度,实现展开效果;通过改变图标元素的 margin-left
属性和不透明度,实现图标的从元素内部淡出的效果;通过改变标签元素的 display
属性和 margin-left
属性,实现标签的从元素内部淡出的效果。
JavaScript 交互
最后,我们可以使用一些 JavaScript 代码来实现鼠标事件的处理。下面是一个示例的 JavaScript 代码:
var floatingButton = document.querySelector('.floating-button');
floatingButton.addEventListener('mouseenter', function() {
floatingButton.classList.add('is-expanded');
});
floatingButton.addEventListener('mouseleave', function() {
floatingButton.classList.remove('is-expanded');
});
其中,我们使用 querySelector
方法来获取 floating-button
元素,使用 addEventListener
方法来监听元素的鼠标进入和离开事件。当鼠标进入元素时,我们通过添加 is-expanded
类来展开元素;当鼠标离开元素时,我们通过移除 is-expanded
类来收起元素。
示例说明
示例一
下面是一个示例页面,实现了一个简单的右侧底部悬浮按钮,在鼠标移入时展开,鼠标移出时收起。代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Example 1</title>
<style>
.floating-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 60px;
height: 60px;
border-radius: 50%;
background-color: #4285f4;
color: #fff;
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
.floating-button:hover {
width: 200px;
height: 60px;
}
.floating-button:hover .icon {
margin-left: 10px;
opacity: 1;
}
.floating-button:hover .label {
display: inline-block;
margin-left: 8px;
}
.floating-button .icon {
opacity: 0;
margin-left: -30px;
transition: all 0.3s ease-in-out;
}
.floating-button .label {
display: none;
margin-left: -60px;
transition: all 0.3s ease-in-out;
}
.floating-button.is-expanded {
width: 200px;
height: 120px;
}
.floating-button.is-expanded .icon {
margin-left: 10px;
opacity: 1;
}
.floating-button.is-expanded .label {
display: inline-block;
margin-left: 8px;
}
</style>
</head>
<body>
<div class="floating-button">
<div class="icon">ICON</div>
<div class="label">Label</div>
</div>
<script>
var floatingButton = document.querySelector('.floating-button');
floatingButton.addEventListener('mouseenter', function() {
floatingButton.classList.add('is-expanded');
});
floatingButton.addEventListener('mouseleave', function() {
floatingButton.classList.remove('is-expanded');
});
</script>
</body>
</html>
示例二
下面是另一个示例页面,实现了一个带有图片的右侧底部悬浮按钮,在鼠标移入时展开,鼠标移出时收起。代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Example 2</title>
<style>
.floating-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 60px;
height: 60px;
border-radius: 50%;
background-color: #4285f4;
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
.floating-button:hover {
width: 200px;
height: 80px;
}
.floating-button:hover img {
margin-left: 10px;
opacity: 1;
}
.floating-button:hover .label {
display: inline-block;
margin-left: 8px;
}
.floating-button img {
width: 40px;
height: 40px;
margin: 10px;
opacity: 0;
margin-left: -30px;
transition: all 0.3s ease-in-out;
float: left;
}
.floating-button .label {
display: none;
margin-left: -30px;
transition: all 0.3s ease-in-out;
font-size: 14px;
line-height: 20px;
color: #fff;
text-align: center;
}
.floating-button.is-expanded {
width: 200px;
height: 120px;
}
.floating-button.is-expanded img {
margin-left: 10px;
opacity: 1;
}
.floating-button.is-expanded .label {
display: inline-block;
margin-left: 8px;
}
</style>
</head>
<body>
<div class="floating-button">
<img src="https://picsum.photos/40/40" />
<div class="label">Description of the image</div>
</div>
<script>
var floatingButton = document.querySelector('.floating-button');
floatingButton.addEventListener('mouseenter', function() {
floatingButton.classList.add('is-expanded');
});
floatingButton.addEventListener('mouseleave', function() {
floatingButton.classList.remove('is-expanded');
});
</script>
</body>
</html>
总结
通过上面的攻略和示例,我们学会了如何使用 CSS 和 DIV 元素实现一个简单的右侧底部悬浮按钮,同时也讲解了 JavaScript 代码的交互过程。在实际开发中,我们可以根据需要修改 HTML 和 CSS 样式,并添加其他的交互效果,来实现更加丰富的悬浮元素。
本文标题为:纯CSS结合DIV实现的右侧底部简洁悬浮效果
基础教程推荐
- 简单实现ajax三级联动效果 2023-02-14
- Layui在table中使用select下拉框 2022-10-20
- 一文详解如何根据后端返回的url下载json文件 2024-01-04
- Vue项目问题——vue-router重写push方法,解决相同路径跳转报错 2023-10-08
- vue文章下载功能实现 2023-10-08
- jquery实现网页定位导航 2023-12-22
- 在页面上点击任一链接时触发一个事件的代码 2024-01-07
- ajax动态加载json数据并详细解析 2023-02-23
- Vue 转 React 指南,看这篇文章就够了 2023-10-08
- Vue入门笔记Day4 2023-10-08