用纯CSS3打造立体提示模块的效果实现(图) 附源码

我来详细讲解一下“用纯CSS3打造立体提示模块的效果实现(图) 附源码”的完整攻略。

1. 网页布局

首先,我们需要创建网页的基本布局。在这个例子中,我们需要用到一个按钮和一个含有提示信息的盒子。

<div class="container">
  <button class="btn">触发提示</button>
  <div class="tooltip">这里是提示信息</div>
</div>

2. CSS3样式

接下来,我们需要添加CSS3样式来创建立体效果。

2.1. 渐变背景

首先,我们来给提示盒子一个渐变的背景色。我们可以使用linear-gradient属性来做到这一点,具体的实现方法如下:

.tooltip {
  background: linear-gradient(rgb(230, 230, 230), rgb(204, 204, 204));
}

2.2. 阴影效果

接下来,我们需要添加阴影效果来模拟立体效果。我们可以使用box-shadow属性来实现,具体的代码如下:

.tooltip {
  box-shadow: -3px -3px 3px rgba(255,255,255,0.7), 3px 3px 3px rgba(0,0,0,0.3);
}

2.3. 旋转

我们还需要将提示盒子进行适当的旋转,这样才能更好地模拟立体效果。我们需要对提示盒子使用transform属性进行旋转,具体的实现如下:

.tooltip {
  transform: rotateY(45deg) rotateX(-45deg);
}

3. JS代码

最后,我们需要一些JavaScript代码来控制提示框的显示和隐藏。我们可以使用mouseovermouseout事件来实现这一点,具体的代码如下:

const container = document.querySelector('.container');
const btn = document.querySelector('.btn');
const tooltip = document.querySelector('.tooltip');

btn.addEventListener('mouseover', () => {
  container.classList.add('show');
});

btn.addEventListener('mouseout', () => {
  container.classList.remove('show');
});

在这段代码中,我们将鼠标在按钮上移动和移开时的事件都绑定到了btn元素上。当鼠标移入按钮时,我们会添加一个名为show的CSS类到container元素上,并显示出提示框。当鼠标移开按钮时,我们会移除show类并隐藏提示框。

示例说明

为了更好地理解这个效果是如何实现的,这里为大家提供两个示例。

示例1:基本效果

这个示例会展示最基本的效果,就是当鼠标移入按钮时,提示框会以立体效果出现,并当鼠标移开时重新隐藏。

<!-- 示例1:基本效果 -->
<div class="container">
  <button class="btn">触发提示</button>
  <div class="tooltip">这里是提示信息</div>
</div>

<style>
  .container {
    position: relative;
    display: inline-block;
  }

  .btn {
    padding: 10px 20px;
    background: #43a047;
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }

  .tooltip {
    position: absolute;
    top: 110%;
    left: 50%;
    transform-origin: bottom center;
    padding: 10px;
    border-radius: 4px;
    color: #333;
    font-size: 14px;
    text-align: center;
    opacity: 0;
    transition: all 0.3s ease-out;
  }

  .show .tooltip {
    opacity: 1;
    transform: rotateY(0) rotateX(0);
  }

  .tooltip {
    background: linear-gradient(rgb(230, 230, 230), rgb(204, 204, 204));
    box-shadow: -3px -3px 3px rgba(255,255,255,0.7), 3px 3px 3px rgba(0,0,0,0.3);
    transform: rotateY(45deg) rotateX(-45deg);
    width: 100px;
    height: 80px;
    margin-left: -50px;
  }
</style>

<script>
  const container = document.querySelector('.container');
  const btn = document.querySelector('.btn');
  const tooltip = document.querySelector('.tooltip');

  btn.addEventListener('mouseover', () => {
    container.classList.add('show');
  });

  btn.addEventListener('mouseout', () => {
    container.classList.remove('show');
  });
</script>

示例2:嵌套效果

这个示例会展示如何将提示框嵌套到其他元素中,并且保留立体效果。

<!-- 示例2:嵌套效果 -->
<div class="container">
  <div class="wrapper">
    <div class="border"></div>
    <div class="content">
      <button class="btn">触发提示</button>
      <div class="tooltip">这里是提示信息</div>
    </div>
  </div>
</div>

<style>
  .container {
    position: relative;
    display: inline-block;
    margin: 50px;
  }

  .wrapper {
    position: relative;
    display: inline-block;
  }

  .btn {
    padding: 10px 20px;
    background: #43a047;
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }

  .tooltip {
    position: absolute;
    top: 110%;
    left: 50%;
    transform-origin: bottom center;
    padding: 10px;
    border-radius: 4px;
    color: #333;
    font-size: 14px;
    text-align: center;
    opacity: 0;
    transition: all 0.3s ease-out;
  }

  .show .tooltip {
    opacity: 1;
    transform: rotateY(0) rotateX(0);
  }

  .tooltip {
    background: linear-gradient(rgb(230, 230, 230), rgb(204, 204, 204));
    box-shadow: -3px -3px 3px rgba(255,255,255,0.7), 3px 3px 3px rgba(0,0,0,0.3);
    transform: rotateY(45deg) rotateX(-45deg);
    width: 100px;
    height: 80px;
    margin-left: -50px;
  }

  .border {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    border: 4px solid #43a047;
    border-radius: 4px;
  }

  .content {
    position: relative;
    display: inline-block;
    z-index: 1;
  }
</style>

<script>
  const container = document.querySelector('.container');
  const btn = document.querySelector('.btn');
  const tooltip = document.querySelector('.tooltip');

  btn.addEventListener('mouseover', () => {
    container.classList.add('show');
  });

  btn.addEventListener('mouseout', () => {
    container.classList.remove('show');
  });
</script>

这两个示例都可以在浏览器中运行并查看效果。如果您需要更详细的解释,请随时联系我。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用纯CSS3打造立体提示模块的效果实现(图) 附源码 - Python技术站

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

相关文章

  • 移动Web—CSS为Retina屏幕替换更高质量的图片

    在移动 Web 开发中,为 Retina 屏幕替换更高质量的图片是一项非常重要的技能。下面是一个完整的攻略,包含了如何为 Retina 屏幕替换更高质量的图片的过程和两个示例说明。 为 Retina 屏幕替换更高质量的图片的过程 1. 准备高清图片 首先,我们需要准备高清图片。我们可以使用 Photoshop 等工具将图片的分辨率提高到 2 倍,以适应 Re…

    css 2023年5月18日
    00
  • 如何在 Illustrator 中存储图稿?AI图稿存储五大基本格式

    在 Illustrator 中,我们可以使用不同的格式来存储图稿,并根据不同的需求选择合适的格式。下面是五种基本的存储格式: AI 格式 AI 格式是 Adobe Illustrator 的原生格式。当我们需要在 Illustrator 中对图稿进行修改或编辑时,应该使用 AI 格式进行存储。AI 格式不仅可以保存所有的图层信息、样式、效果和笔刷,还可以保存…

    css 2023年6月10日
    00
  • wap图片滚动特效无css3元素纯js脚本编写

    让我为你讲解”wap图片滚动特效无css3元素纯js脚本编写”的完整攻略。 1.技术原理 该图片滚动特效的技术原理是通过JavaScript的定时器实现图片的滚动。具体实现过程中,需要获取DOM元素,并通过JS代码实现图片滚动效果。 2.实现步骤 2.1 HTML结构 我们需要先在HTML中定义好图片滚动的DOM结构。一个基本的结构可以包含一个容器元素、一个…

    css 2023年6月10日
    00
  • 客户端js判断文件类型和文件大小即限制上传大小

    客户端JS判断文件类型和文件大小即限制上传大小是常见的一个需求。以下是操作的完整攻略: 1.判断文件类型 第一种方法:使用HTML5的file API 使用HTML5的file API可以获取文件的信息,包括文件类型,如下: const fileInput = document.getElementById(‘file’); const file = fil…

    css 2023年6月10日
    00
  • 通过定位来实现不定宽度居中显示

    实现不定宽度居中显示可以使用定位来实现。下面是具体步骤: 确定外层容器的宽度和高度,设置相对定位。例如: <div class="container"> <div class="content"> <p>这是一段文本内容</p> </div> </div…

    css 2023年6月9日
    00
  • CSS3轻松实现圆角效果

    CSS3轻松实现圆角效果攻略 圆角效果是网页设计中常用的一种装饰方式。在CSS3中,实现圆角效果变得非常容易。本文将为大家介绍如何轻松实现CSS3圆角效果。 border-radius CSS3中实现圆角效果的主要属性是 border-radius。通过设置 border-radius 的值,我们可以轻松地实现各种圆角效果。 border-radius 的属…

    css 2023年6月10日
    00
  • 常用的 css 命名规则(推荐)

    下面我为你详细讲解“常用的 CSS 命名规则(推荐)”的完整攻略。 简介 CSS 命名规则是前端开发中非常重要的一环,一个好的命名规则可以提高代码的可读性和可维护性。在实际开发中,我们经常使用以下两种命名规则: BEM SMACSS 以下将详细介绍这两种命名规则。 BEM BEM 是 Block(块)、Element(元素)和Modifier(修饰符)的缩写…

    css 2023年6月10日
    00
  • jQuery实现的记住帐号密码功能完整示例

    下面我将详细讲解如何使用jQuery实现记住帐号密码功能的完整攻略,主要包括以下几个步骤: 1. 创建HTML文件和CSS样式 首先,在项目目录下创建一个HTML文件。这个HTML文件主要用于展示登录页面以及记住账号密码的功能。同时,我们也要使用CSS文件来美化页面样式。 示例代码: <!DOCTYPE html> <html> &l…

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