js+css在交互上的应用

yizhihongxing

我会尽力详细讲解“js+css在交互上的应用”的完整攻略。在本次讲解中,我将着重介绍如何使用js和css实现网站的交互特效。下面是详细的步骤和示例操作。

1. 使用CSS实现动态效果

CSS可以帮助我们实现很多简单的动态效果,例如:鼠标移动到元素上时改变元素的颜色或大小,展示隐藏的元素等。

1.1 鼠标移动到元素上改变元素的颜色

要实现这一效果,我们可以使用CSS中的:hover伪类。假设我们有一个按钮,当鼠标移动到按钮上时,按钮的颜色会变成红色。HTML代码如下:

<button class="btn">点击我</button>

CSS代码如下:

.btn {
  color: white;
  background-color: blue;
  border: none;
  padding: 8px 16px;
  border-radius: 4px;
  transition: background-color 0.3s ease-in-out;
}

.btn:hover {
  background-color: red;
}

在CSS代码中,我们为按钮设置了一些基本样式,包括颜色、背景色、边框和圆角等。我们还使用了transition动画效果,当按钮的背景色发生改变时,动画将会很平滑。最后,我们使用:hover伪类对按钮进行样式修改,当鼠标移到按钮上时,就会触发背景色的变化。

1.2 展示隐藏的元素

展示隐藏的元素通常可以使用CSS中的display属性来实现。假设我们有一个按钮,点击按钮后可以展示一个隐藏的文本区域。HTML代码如下:

<button class="btn" onclick="toggleContent()">查看详情</button>
<div class="content" id="content" style="display:none">
  这是隐藏的文本内容
</div>

CSS代码如下:

.btn {
  color: white;
  background-color: blue;
  border: none;
  padding: 8px 16px;
  border-radius: 4px;
  transition: background-color 0.3s ease-in-out;
}

.btn:hover {
  background-color: red;
}

在CSS代码中,我们再次为按钮设置了一些基本样式,包括颜色、背景色、边框和圆角等。接下来,我们为展示隐藏文本的区域添加了一个“display:none”的样式,这样就让它默认是隐藏状态的。最后,我们使用一个toggleContent()函数来切换文本的显示状态。该函数的js代码如下:

function toggleContent() {
  var content = document.getElementById("content");
  if (content.style.display === "none") {
    content.style.display = "block";
  } else {
    content.style.display = "none";
  }
}

在toggleContent()函数中,我们通过获取文本区域的id,然后使用style属性来切换文本的display属性的值,实现了文本的显示和隐藏。

2. 使用JS实现动态效果

JavaScript可以用于实现更复杂的动态效果,如动画、滑动等。下面是两个示例:

2.1 实现一个弹出框的动画效果

假设我们有一个弹出框,当我们点击按钮时,它将以动画的形式出现在屏幕上。HTML代码如下:

<button class="btn" onclick="showModal()">点击打开弹出框</button>

<div id="modal" class="modal-overlay" style="display:none;">
  <div class="modal">
    <div class="modal-header">
      <h2>这是一个弹出框</h2>
      <button class="close-btn" onclick="closeModal()">关闭</button>
    </div>
    <div class="modal-body">
      <p>这是一些内容,可随意更改。</p>
    </div>
  </div>
</div>

CSS代码如下:

.btn {
  color: white;
  background-color: blue;
  border: none;
  padding: 8px 16px;
  border-radius: 4px;
  transition: background-color 0.3s ease-in-out;
}

.btn:hover {
  background-color: red;
}

.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal {
  background-color: white;
  width: 400px;
  box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.5);
  border-radius: 5px;
  overflow: hidden;
  animation: modalShow 0.3s ease-in-out forwards;
}

.modal-header {
  padding: 16px;
  background-color: blue;
  color: white;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.modal-header h2 {
  margin: 0;
}

.modal-body {
  padding: 16px;
}

.close-btn {
  color: white;
  background-color: blue;
  border: none;
  padding: 8px 16px;
  border-radius: 4px;
}

.close-btn:hover {
  background-color: red;
}

@keyframes modalShow {
  from {
    transform: scale(0);
  }
  to {
    transform: scale(1);
  }
}

在CSS代码中,我们对弹出框和其内部的元素实施了一些样式,其中"modal-overlay"是半透明的背景层,"modal"是弹出框本身。对于"modal"元素,我们使用了"animation"属性,以实现动画效果。我们定义了一个名为"modalShow"的关键帧动画,将元素的初始大小设置为0,最后通过forwards关键字告诉动画保持在最后的状态。由此,当我们调用showModal()函数时,可以在模态框显示时看到一个类似于“放大”的效果。

而JavaScript代码如下:

function showModal() {
  document.getElementById("modal").style.display = "flex";
}

function closeModal() {
  document.getElementById("modal").style.display = "none";
}

这两个函数分别处理显示模态框和隐藏模态框的操作。我们在showModal()函数中,将模态框的display属性设置为"flex",这样就从隐藏状态转变为显示状态。

2.2 列表滚动的实现

假如我们有一个列表,其中超出了屏幕的范围,那么用户如何才能滚动该列表?下面的示例示范如何实现自定义滚动条及响应滚轮事件。

HTML代码如下:

<div class="list-container">
  <ul class="list">
    <li>第 1 条</li>
    <li>第 2 条</li>
    <li>第 3 条</li>
    <li>第 4 条</li>
    ...
  </ul>
  <div class="scrollbar">
    <div class="scrollbar-thumb"></div>
  </div>
</div>

CSS代码如下:

.list-container {
  position: relative;
  height: 300px;
  overflow: hidden;
}

.list {
  padding: 0;
  margin: 0;
  list-style: none;
  overflow-y: auto;
  height: 100%;
}

.list li {
  padding: 8px;
  margin: 0;
  border-bottom: 1px solid #e5e5e5;
}

.scrollbar {
  position: absolute;
  top: 0;
  right: 0;
  width: 8px;
  background-color: #f5f5f5;
  border-radius: 4px;
}

.scrollbar-thumb {
  position: absolute;
  top: 0;
  left: 0;
  width: 8px;
  height: 40px;
  background-color: #c4c4c4;
  border-radius: 4px;
}

.list::-webkit-scrollbar {
  width: 8px;
}

.list::-webkit-scrollbar-track {
  background-color: #f5f5f5;
}

.list::-webkit-scrollbar-thumb {
  background-color: #c4c4c4;
  border-radius: 4px;
}

.list::-webkit-scrollbar-thumb:hover {
  background-color: #a3a3a3;
}

在CSS代码中,我们实现了列表和自定义滚动条。使用overflow-y:auto;将列表的高度设置为父容器的100%,当内容溢出时,将出现纵向滚动条。自定义滚动条由“scrollbar”和“scrollbar-thumb”两个元素构成。由于每个浏览器都支持自己的滚动条样式,我们必须为每个滚动条样式提供适当的CSS设置。

JavaScript代码如下:

var list = document.querySelector(".list");
var scrollbarThumb = document.querySelector(".scrollbar-thumb");

scrollbarThumb.addEventListener("mousedown", function(e) {
  e.preventDefault();
  startY = e.clientY;
  startScroll = list.scrollTop;
  list.style.cursor = "grabbing";
});

document.addEventListener("mousemove", function(e) {
  e.preventDefault();
  if (typeof startY !== "undefined") {
    var diff = e.clientY - startY;
    var scrollAmount = startScroll + diff * (list.scrollHeight / list.clientHeight);
    list.scrollTop = scrollAmount;
  }
});

document.addEventListener("mouseup", function() {
  startY = undefined;
  list.style.cursor = "default";
});

list.addEventListener("wheel", function(e) {
  e.preventDefault();
  var newScrollAmount = list.scrollTop - (e.deltaY * 3);
  list.scrollTop = newScrollAmount;
});

在JavaScript代码中,我们实现了以下的操作:

  1. 获取列表和滚动元素,设置事件监听器。
  2. 当用户使用鼠标点击自定义滚动条时,保存初始值以及鼠标的位置和列表的滚动位置。
  3. 当用户拖动滚动条时,通过计算鼠标移动的差值和滚动的百分比,设置垂直滚动位置。
  4. 当用户松开鼠标按钮时,将已存储的值重置为undefined。
  5. 当用户使用滚轮滚动时,阻止默认效果,并设置滚动条的垂直位置。

至此,我们已经完成了包含CSS和JS在内的动效AP应用的讲解。希望这篇文章能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js+css在交互上的应用 - Python技术站

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

相关文章

  • Illustrator制作SVG的操作流程

    下面我将为您详细讲解Illustrator制作SVG的操作流程的完整攻略。 操作流程 第一步:打开AI文件 首先,打开AI文件,并准备好您想使用的图形或图标。 第二步:创建SVG图形 选择您想要导出为SVG的对象或图标,并将其复制。 在“文件”菜单中,选择“新建”。 在“新建文档”面板中,选择“Web”作为文档类型,并将“细节”设置为“SVG”。 点击“新建…

    css 2023年6月10日
    00
  • js css3实现图片拖拽效果

    实现图片拖拽效果,可以使用HTML5中新增的drag and drop API,也可以使用JavaScript和CSS3实现。以下是基于JavaScript和CSS3实现图片拖拽效果的攻略: 前置知识 在实现图片拖拽效果前,需要掌握以下知识: 事件的监听与触发 DOM操作 CSS3 transform属性 HTML5 draggable属性 实现步骤 第一步…

    css 2023年6月13日
    00
  • vue3组件库Shake抖动组件搭建过程详解

    我来详细讲解“vue3组件库Shake抖动组件搭建过程详解”的完整攻略。 1. 确定组件目标 首先,我们要明确抖动组件的目标:在特定情况下,使页面上的某些元素产生抖动效果。也就是说,我们需要一个组件来完成这样的功能。 2. 创建一个Vue3项目 接着,我们需要创建一个Vue3项目。我们可以使用 Vue CLI 这个官方工具来创建一个全新的Vue3项目。命令如…

    css 2023年6月9日
    00
  • js es6系列教程 – 新的类语法实战选项卡(详解)

    “js es6系列教程 – 新的类语法实战选项卡(详解)”是一篇关于JavaScript ES6类语法与选项卡实战的教程。该教程主要包含以下几个部分: 一、类的基本语法 在该部分,作者详细介绍了ES6中类的基本语法,包括类的定义、构造函数、方法等概念。同时,作者还对比了ES6类和ES5构造函数的不同之处。示例代码如下: //ES6定义类 class Anim…

    css 2023年6月9日
    00
  • Unocss(原子化css) 使用及vue3 + vite + ts讲解

    Unocss 是一款基于原子化理念的 CSS 工具,可以让你更加轻松便捷地编写样式,同时可以尽可能地减少冗余,使代码更加精简高效。结合 Vue3、Vite 和 TypeScript 的开发环境,可以进一步提高开发效率。下面是关于如何使用 Unocss 的攻略讲解。 安装及配置 首先,我们需要安装 unocss 和 vite-plugin-unocss 两个依…

    css 2023年6月10日
    00
  • VScode格式化ESlint方法(最全最好用方法)

    VScode格式化ESlint方法(最全最好用方法) 简介 ESLint是一个可插入的静态代码分析工具,用于识别和报告模式中的问题。它是在 ECMAScript/JavaScript 代码中寻找问题的。代码分析是将源代码(特定于编程语言的)表示转换为一种表示,以便更容易分析代码并找到缺陷。 VScode是一款非常流行的轻量级代码编辑器,拥有丰富的插件生态系统…

    css 2023年6月9日
    00
  • html pre标记里内容自动换行

    当在HTML页面中展示一些预格式的文本,如程序代码、诗歌、电子邮件等等,我们可以使用HTML中的预格式文本标签 <pre>。它的作用是保留文本中的空白符,包括空格、制表符和换行符。 默认情况下,HTML中的其他标签在显示文本时会忽略拥有的换行符和制表符,这意味着如果您在HTML页面中编写一段文本那么文本将连续显示在一起而没有断行。这种情况下,可以…

    css 2023年6月10日
    00
  • JavaScript Element对象

    Element对象是JavaScript中DOM(文档对象模型) API的核心对象之一。该对象代表了HTML或XML文档中的一个元素节点。Element对象提供了许多属性和方法,可以访问和操作元素节点的各种属性和特征,例如元素的标签名、类名、ID、样式、子节点等等。 以下是Element对象的一些常用属性和方法: 属性: element.tagName:返回…

    Web开发基础 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部