用纯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日

相关文章

  • js实现图片旋转的三种方法

    下面是“js实现图片旋转的三种方法”的完整攻略。 方法一:transform属性 实现过程 使用 transform 属性对图片进行旋转。其中 transform 属性可以通过 rotate 值进行旋转,例如 transform: rotate(90deg) 可以将图片顺时针旋转 90 度。 示例说明 以下代码实现了点击按钮时图片顺时针旋转 90 度: &l…

    css 2023年6月10日
    00
  • Bootstrap开发实战之第一次接触Bootstrap

    Bootstrap开发实战之第一次接触Bootstrap Bootstrap是一个流行的前端框架,它可以帮助我们快速开发一个美观、响应式的网页。在这篇文章中,我们将介绍如何第一次接触Bootstrap并使用它构建一个简单的网页。 步骤1:下载Bootstrap 首先,我们需要从Bootstrap官网上下载最新版本的Bootstrap。下载之后,我们可以解压缩…

    css 2023年6月11日
    00
  • jquery弹窗时禁止body滚动条滚动的例子

    请参考以下攻略,包含两个示例说明。 攻略 当使用jQuery弹出框或模态框时,为了确保用户集中精力处理弹出框中的信息,我们通常要禁止页面的滚动。 一种简单的解决方法是通过禁止body元素的滚动来实现。我们可以使用CSS和JavaScript来实现这一目的。 示例如下: 1. CSS方式: /* 禁止body元素滚动 */ body.modal-open { …

    css 2023年6月10日
    00
  • 浏览器实现移动端高性能css3动画(开启gpu加速)

    我们来详细讲解一下浏览器实现移动端高性能CSS3动画的完整攻略。 开启GPU加速的原因 众所周知,移动端设备的CPU性能相对于桌面端还是有很大差距的,而且移动设备的屏幕分辨率也普遍比较高,为了保证在移动设备上实现高质量的动画效果,我们就需要利用GPU的加速能力,从而实现流畅的CSS3动画。 如何开启GPU加速 在CSS样式中添加 translate3d 或 …

    css 2023年6月9日
    00
  • HTML速写之Emmet语法规则的实现

    针对“HTML速写之Emmet语法规则的实现”的完整攻略,可以参考以下步骤: 1. 简介 Emmet 是一种能够加快编写代码速度的语法规则,旨在用更少的字符输入更多的代码。Emmet 最初是作为基于文本编辑器的插件,但是目前已经成为主流编辑器和 IDE 的一部分,如 VS Code、Sublime Text 等。 2. 常用语法规则 Emmet 语法规则可以…

    css 2023年6月9日
    00
  • 通过js修改input、select默认字体颜色

    修改input、select默认字体颜色是前端开发中经常遇到的需求。通过js修改默认字体颜色的方法有多种,在这里我们介绍两种常用的方法。 方法一:使用CSS样式修改 首先,为表单元素定义需要的CSS样式,例如: input, select { font-size: 16px; color: #333; } 在页面的head标签中,定义一个ID为“myStyl…

    css 2023年6月9日
    00
  • HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览

    HTML5离线缓存是一种可以在浏览器离线的情况下访问网站的技术,通过在应用程序的manifest文件中指定需要缓存的资源,可以实现特定网页的离线可访问。在Tomcat服务器下,也可以轻松地实现HTML5离线缓存的部署。 以下是HTML5离线缓存在tomcat下部署的完整攻略: 1. 创建Manifest文件 HTML5离线缓存需要使用manifest文件来指…

    css 2023年6月9日
    00
  • css中的三种基本定位机制

    CSS中的三种基本定位机制是指普通流(normal flow)、浮动(float)和绝对定位(absolute positioning)。这些机制允许我们自由地控制网页中的内容。 普通流(Normal Flow) 普通流是CSS的默认定位机制,也是最常用的定位机制。通过普通流布局,HTML元素按照它们在HTML文档中出现的顺序依次排列。默认情况下,块级元素会…

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