JS+CSS实现炫酷光感效果

yizhihongxing

下面我将详细讲解“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为对象原型prototype添加属性的两种方式

    JavaScript中每个对象都有一个内部链接属性[[Prototype]],它指向另一个对象(null除外),即该对象的原型。原型可以包含属性和方法,这些属性和方法可以被该对象和它的所有子孙对象继承。可以通过两种方式给一个对象原型prototype添加属性,具体如下: 方式一:直接添加属性 可以通过直接为原型对象添加属性和方法来为构造函数添加属性。这种方式…

    JavaScript 2023年5月27日
    00
  • js四舍五入数学函数round使用实例

    关于 JavaScript 中四舍五入数学函数 round() 的使用实例,这里提供一份完整攻略: round() 函数简介 round() 函数是 JavaScript 内置的一个数学函数,用于四舍五入取整。该函数可以接收一个数值类型的参数,并返回一个整数。 语法结构如下: Math.round(x) 其中,参数 x 是需要进行四舍五入取整的数值。 使用实…

    JavaScript 2023年5月27日
    00
  • JavaScript截取字符串的Slice、Substring、Substr函数详解和比较

    JavaScript截取字符串的Slice、Substring、Substr函数详解和比较 在JavaScript中,有3个常用的函数可以用来截取字符串。这些函数是Slice、Substring和Substr。这篇文章将详细介绍这些函数、它们的用法及它们之间的差异。 Slice函数 Slice函数用于从字符串中获取一段子字符串。它接受2个参数,开始位置和结束…

    JavaScript 2023年5月28日
    00
  • 详解JavaScript的三种this指向方法

    详解JavaScript的三种this指向方法 JavaScript中的this关键字被用来指示当前函数在执行时所引用的对象或上下文。this的指向可能是以下三种情况: 全局对象 当在全局范围内调用this时,它引用的是全局对象(全局global或window,具体取决于环境)。 对象实例 当使用构造函数创建的实例对象时,this将指向该实例对象。 显式绑定…

    JavaScript 2023年5月28日
    00
  • 浅析js中substring和substr的方法

    浅析JS中substring和substr的方法 在JavaScript中, substring 和 substr 是两个常用的字符串方法,用于截取字符串的一部分并返回。但是它们的不同之处在于它们的使用方式和截取字符串的方式。下面我们来浅析一下它们的使用方法及区别。 一、substring方法 1.1 方法定义 substring(startIndex, e…

    JavaScript 2023年6月10日
    00
  • JavaScript RegExp方法获取地址栏参数(面向对象)

    下面是详细讲解“JavaScript RegExp方法获取地址栏参数(面向对象)”的完整攻略。 一、问题背景 当我们需要通过 JavaScript 来获取地址栏参数时,通常需要使用正则表达式(RegExp)来解析URL字符串。虽然字符串操作的方式也能解决这个问题,但是 RegExp 方法具有更高的灵活性和精准性,本攻略将详细介绍如何使用 RegExp 方法获…

    JavaScript 2023年6月10日
    00
  • 使用JS中的exec()方法构造正则表达式验证

    使用 JavaScript 中的 exec() 方法可以用来测试字符串是否匹配某个模式,并且可以返回匹配的结果,以及匹配的起始位置等信息。 要利用 exec() 方法构造正则表达式来验证字符串是否符合某个规则,需要按照以下步骤: 第一步:定义正则表达式 使用 RegExp 对象来指定想要匹配的模式,例如: const regEx = /\d+/; 上述代码中…

    JavaScript 2023年6月10日
    00
  • javascript学习笔记(三)显示当时时间的代码

    下面是关于“javascript学习笔记(三)显示当时时间的代码”的完整攻略。 前置知识 在学习本文之前,你需要掌握以下知识: HTML 基础 CSS 基础 Javascript 语法基础 确定功能 在开始编写代码之前,我们需要确定显示当前时间的具体功能。 我们要实现的功能是:在页面上显示当前的时间,并且能够实时更新。 编写代码 HTML结构 在HTML中,…

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