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

相关文章

  • Flask Cookie 使用方法详解

    Flask 是一个 Python Web 框架,Cookie 是一个小型文本文件,由服务器发送给 Web 浏览器并保存在本地计算机上,用于跟踪用户。本文将详细介绍 Flask 中的 Cookie 处理,并提供代码示例。 Flask 的 Cookie 模块 Flask 的 Cookie 模块是 Flask 对 Python 标准库中 Cookie 模块的封装。…

    Flask 2023年3月13日
    00
  • 如何设计制作自适应网页

    设计制作自适应网页是一项非常重要的技能,因为不同设备有不同的屏幕尺寸和分辨率,我们的网页需要适配它们,以便在不同设备上展示良好,提供更好的用户体验。下面是一些关于如何设计制作自适应网页的攻略: 1. 使用响应式布局 使用响应式布局是制作自适应网页的一种常见方法。这种方法可以根据用户的设备来调整网页的布局,使其适合不同的屏幕大小和设备类型。 在实现响应式布局时…

    css 2023年6月10日
    00
  • CSS3 background-image颜色渐变的实现代码

    CSS3 background-image颜色渐变的实现代码可以通过CSS3的background属性中的gradient函数来实现。 线性渐变 线性渐变可以通过以下代码实现: background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet); 其中…

    css 2023年6月9日
    00
  • 常用css属性查询表

    这里给你详细讲解一下常用 CSS 属性查询表的完整攻略。 什么是常用 CSS 属性查询表? 常用 CSS 属性查询表是一个非常好用的查询工具,它收录了大多数常用的 CSS 属性,并且提供了对应的示例代码,让我们可以更加直观地了解每个属性的用法及效果。 该查询表通常包括了 CSS 布局、盒模型、文本样式、背景样式、边框样式等众多属性。使用者只需要输入所需属性名…

    css 2023年6月9日
    00
  • Vue 使用超图SuperMap的实践

    下面我将为您提供一份“Vue 使用超图SuperMap的实践”的完整攻略: Vue 使用超图SuperMap的实践 背景 超图SuperMap是一款常用的GIS地理信息系统,而Vue是一个流行的前端框架,本攻略旨在介绍如何在Vue项目中使用超图SuperMap。 前置条件 了解Vue框架的基础知识,包括Vue组件、数据绑定、生命周期等。 能够基础的HTML、…

    css 2023年6月10日
    00
  • css 超出用省略号当标题字符溢出用省略号表示

    下面是关于”CSS超出用省略号当标题字符溢出用省略号表示”的完整攻略。 什么是CSS超出用省略号当标题字符溢出用省略号表示? 当一个块元素容器中的文本内容超出了其容器的宽度或高度时,我们可以通过CSS的一些实现方式来处理这种情况。其中比较常见的方式是使用”省略号”来表示溢出的文本。 例如,在博客的文章列表页中,一篇文章摘要超过了一定长度,我们就希望它在显示时…

    css 2023年6月10日
    00
  • HTML注释的写法(附带示例)

    HTML注释是一种特殊的语法,它通常被用于在HTML文档中注释一些内容。在网页开发中,注释是一种非常有用的方式,可以让其他的开发者和自己更好地理解文档结构,也方便我们在调试代码时做一些标注。 以下是HTML注释的写法和示例: 注释单行内容 注释单行内容的方法是在要注释的内容前加上“”符号。注意,注释符号中间不要加空格。 <p>这是一个段落<…

    Web开发基础 2023年3月15日
    00
  • CSS2实现的隔行换色

    “隔行换色”是一种非常常见的网页美化效果,它可以让页面元素以交替不同颜色的方式展现。在CSS语言中,我们可以使用伪类选择器实现这一效果。在CSS2中,可以使用:nth-child()或者:nth-of-type()伪类来完成隔行换色的功能。 实现CSS2隔行换色,需要以下步骤: 1.选择需要实现隔行换色的HTML元素 首先,需要选定你要实现隔行换色的 HTM…

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