javascript实现了照片拖拽点击置顶的照片墙代码

下面详细讲解如何使用 JavaScript 实现照片拖拽点击置顶的照片墙代码。

步骤一:HTML模板和CSS样式的编写

首先,我们需要在 HTML 中创建照片的容器和一个置顶按钮,并为它们添加 CSS 样式。以下是示例代码:

<div id="photos-container">
  <div class="photo">
    <img src="photo1.jpg">
  </div>
  <div class="photo">
    <img src="photo2.jpg">
  </div>
  <div class="photo">
    <img src="photo3.jpg">
  </div>
</div>

<button id="top-btn">置顶</button>
#photos-container {
  display: flex;
  flex-wrap: wrap;
  margin: 0 auto;
  max-width: 800px;
}

.photo {
  width: calc(33.33% - 20px);
  margin: 10px;
  position: relative;
}

.photo img {
  width: 100%;
  height: auto;
  transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

.photo img:hover {
  transform: scale(1.1);
  box-shadow: 0 0 5px rgba(0,0,0,0.3);
}

.photo.active {
  z-index: 10;
}

#top-btn {
  position: fixed;
  right: 20px;
  bottom: 20px;
  padding: 10px 20px;
  border-radius: 50%;
  border: none;
  background-color: #FFC107;
  color: white;
  font-size: 20px;
  cursor: pointer;
}

步骤二:编写拖拽和置顶功能的 JavaScript 代码

在 JavaScript 中,我们需要为每个照片元素添加拖拽功能,以及为置顶按钮添加点击事件,当点击按钮时将选中的照片移到最顶层。

以下是示例代码:

var photos = document.querySelectorAll('.photo');
var topBtn = document.querySelector('#top-btn');

var activePhoto = null;
var initialX = null;
var initialY = null;
var xOffset = 0;
var yOffset = 0;

// 为每张照片添加拖拽功能
photos.forEach(photo => {
  photo.addEventListener('mousedown', dragStart);
  photo.addEventListener('mouseup', dragEnd);
  photo.addEventListener('mousemove', drag);
});

// 开始拖拽
function dragStart(e) {
  activePhoto = this;

  initialX = e.clientX - xOffset;
  initialY = e.clientY - yOffset;
}

// 拖拽结束
function dragEnd(e) {
  initialX = null;
  initialY = null;

  activePhoto = null;
}

// 拖拽图片
function drag(e) {
  if (activePhoto) {
    e.preventDefault();

    xOffset = e.clientX - initialX;
    yOffset = e.clientY - initialY;

    setTranslate(xOffset, yOffset, activePhoto);
  }
}

// 将图片拖拽到 newTranslate 的位置
function setTranslate(xPos, yPos, el) {
  el.style.transform = `translate3d(${xPos}px, ${yPos}px, 0)`;
}

// 点击置顶按钮,置顶选中的照片
topBtn.addEventListener('click', () => {
  if (activePhoto) {
    activePhoto.classList.add('active');
  }
});

示例说明

此处我们来看两个操作照片墙的场景:

1. 拖拽照片

当我们点击并拖拽一张照片时,其他照片应该继续保持不变位置,而被拖拽的照片应该随着鼠标移动而移动。

photos.forEach(photo => {
  photo.addEventListener('mousedown', dragStart);  // 监听鼠标点击照片
  photo.addEventListener('mouseup', dragEnd);  // 监听鼠标松开
  photo.addEventListener('mousemove', drag);  // 监听鼠标移动
});

function dragStart(e) {
  activePhoto = this;  

  initialX = e.clientX - xOffset;
  initialY = e.clientY - yOffset;
}

function dragEnd(e) {
  initialX = null;
  initialY = null;

  activePhoto = null;
}

function drag(e) {
  if (activePhoto) {
    e.preventDefault();

    // 根据鼠标移动的距离计算出新的位置
    xOffset = e.clientX - initialX;
    yOffset = e.clientY - initialY;

    setTranslate(xOffset, yOffset, activePhoto);
  }
}

// 将照片拖拽到新的位置
function setTranslate(xPos, yPos, el) {
  el.style.transform = `translate3d(${xPos}px, ${yPos}px, 0)`;
}

2. 置顶选中的照片

当我们点击置顶按钮时,选中的照片应该移到所有照片的最顶层。

topBtn.addEventListener('click', () => {
  if (activePhoto) {
    activePhoto.classList.add('active');  // 给选中的照片添加 'active' 类,使其置于最顶层
  }
});

以上就是整个 JavaScript 实现照片拖拽点击置顶的照片墙代码的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现了照片拖拽点击置顶的照片墙代码 - Python技术站

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

相关文章

  • JQuery 拾色器插件发布-jquery.icolor.js

    下面是关于“JQuery 拾色器插件发布-jquery.icolor.js”的完整攻略,包含了插件发布的流程和两个示例: 前言 jQuery icolor 是一款 jQuery 拾色器插件,可以为网站添加一个颜色选择器供用户选择。插件支持各种格式的颜色值输入,包括十六进制、RGB、RGBA、HSL 和 HSLA。本文将详细讲解如何发布 jQuery icol…

    css 2023年6月9日
    00
  • jQuery实现可高亮显示的二级CSS菜单效果

    接下来我将详细讲解如何使用jQuery实现可高亮显示的二级CSS菜单效果。 1. 实现思路 我们需要使用jQuery来实现二级可高亮的CSS菜单,具体的实现思路如下: 使用HTML和CSS来定义网站的菜单结构和样式。 使用jQuery来控制菜单的行为和交互效果。 使用JavaScript的基本语法(如选择器、事件处理等)来编写jQuery代码实现菜单效果。 …

    css 2023年6月10日
    00
  • 通过CSS向JS传参的方法

    通过 CSS 向 JS 传参的方法,可以使用 CSS 变量(CSS Variables)来实现。CSS 变量是一种新的 CSS 特性,可以让开发者定义自己的 CSS 属性,以便在整个文档中重复使用。这种特性可以提高代码的可读性和可维护性,同时也可以减少代码的重复性。下面是一些关于 CSS 变量的示例说明。 定义 CSS 变量 可以使用 — 开头的名称来定义…

    css 2023年5月18日
    00
  • CSS解决链接锚点定位偏移的代码

    当使用锚点进行页面内跳转时,有时候会出现链接跳转后定位偏移的情况,而这个偏移量通常是因为网页布局中的fixed或absolute元素引起的。为了解决这种情况,我们可以使用CSS来删掉这些元素的影响,具体的攻略如下: 攻略 在锚点的目标位置上方添加一个与fixed元素高度相等的空白元素,在空白元素上设置相反的margin-top,即负值等于fixed元素的高度…

    css 2023年6月9日
    00
  • vue的列表交错过渡实现代码示例

    下面是关于“vue的列表交错过渡实现”的完整攻略。 1. 什么是Vue的列表交错过渡 Vue的列表交错过渡,是指在Vue的过渡动画中,列表中的每一项在进场或退场的时候,会以一种交错的方式完成动画,从而让整个列表看起来更加有趣、生动。 2. 实现Vue的列表交错过渡 实现Vue的列表交错过渡,需要使用Vue组件中的<transition-group&gt…

    css 2023年6月9日
    00
  • js cavans实现静态滚动弹幕

    1. 简介 Cavans 是 HTML5 新增的元素,它可以让开发者在浏览器上绘制图形、动画等。本篇攻略讲解如何使用 Canvas 实现静态的滚动弹幕。 2. 准备工作 为了使用 Canvas 实现滚动弹幕,需要先在 HTML 中添加一个 Canvas 元素。以下是添加 Canvas 元素的示例代码: <canvas id="myCanvas…

    css 2023年6月11日
    00
  • 第六章之辅组类与响应式工具

    第六章之辅助类与响应式工具 一、辅助类 辅助类可以简单的理解为一组实用的CSS类,它们可以帮助快速实现常见的布局和样式需求,同时可以使代码更具可读性。Bootstrap提供了一系列的辅助类,这些辅助类可以在HTML标签中任意使用,可以简化页面的HTML结构,也可以提高CSS代码的复用性。 辅助类一般以 . 类名形式出现,例如 .d-none 表示隐藏元素、.…

    css 2023年6月10日
    00
  • React 悬浮框内容懒加载实例详解

    下面是“React 悬浮框内容懒加载实例详解”的完整攻略。 什么是悬浮框内容懒加载? 悬浮框是一种常见的UI元素,它通常用于在用户与页面的交互过程中显示更多信息。但如果悬浮框中的内容过多,可能会导致页面加载时间过长。在这种情况下,使用懒加载是一种非常有效的方式。 悬浮框内容懒加载指的是在用户与页面进行交互时才加载悬浮框中的内容,从而减少页面的加载时间和带宽消…

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