JS+CSS实现炫酷光感效果

下面我将详细讲解“JS+CSS实现炫酷光感效果”的完整攻略。

准备工作

在开始实现炫酷光感效果之前,我们需要先准备好以下内容:

  1. 一个包含至少一个元素的 HTML 页面
  2. 具有光感特性的图片或其他媒体资源
  3. 一些基本的 CSS 和 JavaScript 知识

实现方法

接下来,我们将通过以下步骤实现炫酷光感效果:

步骤一:在 HTML 文件中添加所需元素

首先,在 HTML 文件中添加一个元素作为光感效果的容器。例如:

<div id="my-container">
  <img src="my-image.jpg" alt="My Image" />
</div>

这个容器中包含了一个图片,可以根据实际需要进行修改。

步骤二:使用 CSS 设置基本样式

接下来,为容器设置一些基本样式,以便光感效果能够被正确地应用:

#my-container {
  position: relative;
}

#my-container::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

以上 CSS 代码中,我们为光感容器设置了相对定位,并使用伪类元素 ::before 创建一个与容器大小和位置相同的空元素,为后面的光感效果提供了一个可操作的基础。

步骤三:使用 JavaScript 实现光感效果

最后,使用 JavaScript 实现光感效果。下面是一个示例代码:

var container = document.getElementById("my-container");
container.addEventListener("mousemove", function (e) {
  var x = e.clientX / window.innerWidth;
  var y = e.clientY / window.innerHeight;
  container.style.setProperty("--mouse-x", x);
  container.style.setProperty("--mouse-y", y);
});

这段代码首先获取了光感容器的 HTML 元素,然后监听鼠标移动事件,并将当前鼠标的位置的横纵坐标除以窗口的宽高,得到一个 0 到 1 之间的值,并将其分别存储为 xy。最后,通过 setProperty 方法将 xy 存储为 CSS 变量。

步骤四:使用 CSS 设置光感效果

最后,在 CSS 文件中设置光感效果:

#my-container::before {
  background: radial-gradient(
    circle at var(--mouse-x, 0) var(--mouse-y, 0),
    transparent 10%,
    rgba(255, 255, 255, 0.4) 20%,
    rgba(255, 255, 255, 0.1) 40%,
    transparent 60%
  );
}

以上 CSS 代码中,我们使用 radial-gradient 创建了一个径向渐变的背景效果。其中,渐变的圆心位置的横纵坐标分别使用了 var(--mouse-x, 0)var(--mouse-y, 0),这些变量的值在 JavaScript 代码中进行了设置。

示例

下面是使用代码环境 CodePen 所编写的两个示例(请将以下代码复制到 CodePen 中):

示例一:光感效果图片

<div id="my-container">
  <img src="https://picsum.photos/id/100/500/300" alt="My Image" />
</div>

<style>
  #my-container {
    position: relative;
  }

  #my-container::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(
      circle at var(--mouse-x, 0) var(--mouse-y, 0),
      transparent 10%,
      rgba(255, 255, 255, 0.4) 20%,
      rgba(255, 255, 255, 0.1) 40%,
      transparent 60%
    );
  }

  #my-container img {
    display: block;
    width: 100%;
    height: auto;
  }
</style>

<script>
  var container = document.getElementById("my-container");
  container.addEventListener("mousemove", function (e) {
    var x = e.clientX / window.innerWidth;
    var y = e.clientY / window.innerHeight;
    container.style.setProperty("--mouse-x", x);
    container.style.setProperty("--mouse-y", y);
  });
</script>

示例二:光感效果文字

<div id="my-container">
  <h1>Awesome Title</h1>
  <p>Some amazing description here!</p>
</div>

<style>
  #my-container {
    position: relative;
    text-align: center;
    padding: 50px;
    background: linear-gradient(to bottom, #0e71dd, #0d589d);
    color: #fff;
  }

  #my-container::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(
      circle at var(--mouse-x, 0) var(--mouse-y, 0),
      rgba(0, 0, 0, 0.5) 5%,
      rgba(0, 0, 0, 0.2) 10%,
      transparent 50%
    );
    pointer-events: none;
  }

  #my-container h1 {
    font-size: 60px;
    margin: 0;
    letter-spacing: 4px;
  }

  #my-container p {
    font-size: 24px;
    margin-top: 20px;
  }
</style>

<script>
  var container = document.getElementById("my-container");
  container.addEventListener("mousemove", function (e) {
    var x = e.clientX / window.innerWidth;
    var y = e.clientY / window.innerHeight;
    container.style.setProperty("--mouse-x", x);
    container.style.setProperty("--mouse-y", y);
  });
</script>

以上就是“JS+CSS实现炫酷光感效果”的完整攻略,希望对你有帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现炫酷光感效果 - Python技术站

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

相关文章

  • javascript中的几个运算符

    下面是Javascript中的几个运算符的详细讲解。 算术运算符 算术运算符是用来执行数学运算的运算符。Javascript中包含了基础的加、减、乘、除、求余运算符。 var x = 10; var y = 3; console.log(x + y); // 13 console.log(x – y); // 7 console.log(x * y); //…

    JavaScript 2023年5月18日
    00
  • js 程序执行与顺序实现详解

    JS程序执行与顺序实现详解 JS是一门单线程语言,指在一个时间只执行一个任务。虽然JS是单线程语言,但是它可以利用事件循环和回调实现异步编程。 1. JS代码的执行顺序 JS代码是从上往下一行一行执行的,但是在执行JS代码时,遇到如下情况就会把当前任务挂起,去执行其他任务: 等待Web API返回结果,例如:发起Ajax请求等。 等待定时器。 等待事件发生。…

    JavaScript 2023年5月27日
    00
  • javascript实现简单倒计时效果

    下面是“JavaScript实现简单倒计时效果”的完整攻略: 1. 准备工作 在实现倒计时之前,需要考虑几个方面:1. 计时器应该显示在页面的哪个位置2. 倒计时的目标时间是多少3. 如果倒计时结束之后需要执行什么操作所以我们可以准备一个包含倒计时的容器元素和需要倒计时到的时间的变量。 在HTML中定义计时器容器的元素: <div id="c…

    JavaScript 2023年5月27日
    00
  • JavaScript中的变量声明你知道吗

    当我们使用JavaScript编写程序时,变量是最常用的数据类型之一。在开始编写任何JavaScript程序之前,都需要了解变量的声明和使用方式,以确保代码的正确性和可读性。 变量声明 在JavaScript中,有三种声明变量的方式:使用var、let和const关键字。其中,var和let可以用来声明可变变量,而const用来声明常量。 使用var声明变量…

    JavaScript 2023年5月18日
    00
  • js实现点击文本框显示日期选择器特效代码分享

    下面是详细的攻略: 1. 概述 日期选择器是网页开发中经常用到的功能,可以方便用户选择日期。在前端开发中,我们可以使用 JavaScript 实现一个点击文本框显示日期选择器的特效。下面将介绍具体的实现方法。 2. 实现步骤 2.1 HTML 结构 首先,在 HTML 中需要创建一个文本框和显示日期的容器。代码如下: <label for="…

    JavaScript 2023年5月27日
    00
  • javascript面向对象之共享成员属性与方法及prototype关键字用法

    接下来我将为大家详细讲解“JavaScript面向对象之共享成员属性与方法及prototype关键字用法”的攻略。 共享成员属性与方法 在JavaScript中,我们可以通过定义类(class)的方式来实现面向对象编程。一个类代表了一类对象的行为和属性,但是有时候我们需要让多个对象共享一些属性或方法,这时候我们就可以使用共享成员属性与方法的方式。 共享成员属…

    JavaScript 2023年5月27日
    00
  • Android webview与js交换JSON对象数据示例

    为了让大家更好地理解“Android webview与js交换JSON对象数据”的过程,我将详细讲解一下: 1. 什么是Android WebView Android WebView是一个使用Android内置WebKit引擎实现的组件,可以让开发者在Android应用程序中嵌入Web页面。 它提供了多种方法来加载HTML内容,包括从Web服务器加载内容,也…

    JavaScript 2023年5月27日
    00
  • Dom-api MutationObserver使用方法详解

    Dom-api MutationObserver使用方法详解 概述 MutationObserver是Web API中的一个对象,用于监视DOM树中发生的变化,并提供回调函数,用于在变化发生时执行相应逻辑。 基本用法 MutationObserver的基本用法如下 // 创建一个观察器实例并指定回调函数 const observer = new Mutati…

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