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日

相关文章

  • js上传图片预览的实现方法

    下面是关于“js上传图片预览的实现方法”的完整攻略。 一、实现思路 实现图片上传预览功能,我们需要以下几步: HTML页面中新增一个input元素用于文件上传; 给这个input元素绑定change事件,当用户选择一个本地图片进行上传时,就会触发change事件; 获取用户上传的图片文件,并通过FileReader API将它读成DataURL格式的图像; …

    css 2023年6月11日
    00
  • 原生JavaScript实现日历功能代码实例(无引用Jq)

    下面是“原生JavaScript实现日历功能代码实例(无引用Jq)”的完整攻略: 1. 前言 日历是常用的组件之一,本文将通过原生 JavaScript 实现一个简单的日历,并且不依赖于 jQuery 等第三方库。主要实现以下功能: 显示当前时间,包括年、月、日。 可以切换月份,并显示当前月份的日期信息。 2. HTML 结构 HTML 结构十分简单,只需一…

    css 2023年6月9日
    00
  • JavaScript仿小米商城官网完整页面实现流程

    JavaScript仿小米商城官网完整页面实现流程可以分为以下几个步骤: 1.准备工作 在开始仿制小米官网前,需要先了解前端技术的基本知识,如HTML、CSS、JavaScript等,并学会使用开发调试工具。同时还需要掌握jQuery等框架的基础知识以及相关插件的使用方法,以方便开发和实现各种特效。 2.设计页面结构 仿造小米官网,需要先设计页面的结构和布局…

    css 2023年6月11日
    00
  • Javascript下拉刷新的简单实现

    下拉刷新是一个常见的Web应用特性,它允许用户在页面顶部下拉以重新加载页面。下面将提供一份Javascript下拉刷新的简单实现攻略: 实现原理 下拉刷新的实现依赖于以下三个事件:touchstart、touchmove和touchend。在用户下拉页面时,touchstart事件将被触发,并记录下初始的手指位置。当手指移动时,touchmove事件将被触发…

    css 2023年6月11日
    00
  • Vue之el-select结合v-if动态控制template显示隐藏方式

    Vue框架提供了一个非常方便的组件el-select,可作为下拉选择框使用。配合v-if指令能够轻松的实现VUE项目中模版的动态显示/隐藏 el-select组件简介 el-select是饿了么组件库中的下拉选择框组件,使用方便。 <el-select placeholder="请选择"> <el-option labe…

    css 2023年6月10日
    00
  • 了解了这些才能开始发挥jQuery的威力

    了解了这些才能开始发挥jQuery的威力 jQuery是一款非常流行的JavaScript库,它极大地简化了JavaScript的编写。如果您要开始使用jQuery,请确保您已经掌握以下几个主要概念。 选择器 选择器允许您选择页面上的一个或者多个元素。其中,大部分选择器都是基于CSS选择器的,因此如果您已经了解过CSS选择器,那么理解选择器的工作原理应该很容…

    css 2023年6月9日
    00
  • jQuery实现table表格信息的展开和缩小功能示例

    那么对于实现table表格信息的展开和缩小功能,可以借助jQuery来完成。下面我会给出完整的攻略。 1. 初始HTML结构和CSS样式 首先,我们需要给出table的初始HTML结构和CSS样式,如下所示: <table> <thead> <tr> <th>#</th> <th>Nam…

    css 2023年6月10日
    00
  • CSS教程,CSS固定表头的HTML表格

    CSS教程:CSS固定表头的HTML表格 本教程将教你如何使用CSS固定HTML表格的表头,以便在滚动表格内容时,表头保持可见。这种方法对于需要滚动大量数据的表格非常有用,因为用户可以始终看到表头中的列标题,而无需将自己的视线移到表格的顶部。 步骤1:HTML添加固定表头所需的CSS类 首先,我们需要通过HTML的class属性添加一个CSS类,以用于裸表格…

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