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

yizhihongxing

下面详细讲解如何使用 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日

相关文章

  • SpringBoot访问静态资源的配置及顺序说明

    请听我为您详细讲解“SpringBoot访问静态资源的配置及顺序说明”的完整攻略。 1. 什么是静态资源 在Spring Boot中,静态资源指的是在项目运行时可以直接通过URL访问的,如css、js、image等文件。这些静态资源文件可通过静态资源访问器来进行访问。 2. Spring Boot静态资源访问器 在Spring Boot中,静态资源访问器是负…

    css 2023年6月10日
    00
  • 调整CSS类型的顺序改变链接翻滚效果

    要调整CSS类型的顺序以改变链接翻转效果,需要先理解翻转效果是如何实现的。一般情况下,可以使用CSS3的transform属性实现翻转,具体实现方法如下: 1.将需要翻转的元素设置为position:relative 2.设置翻转元素的transform-origin属性,表示翻转的中心点,一般默认为中心点。 3.使用CSS3的transform属性,配合t…

    css 2023年6月9日
    00
  • 30分钟快速掌握Bootstrap框架

    30分钟快速掌握Bootstrap框架攻略 Bootstrap是一款开源的前端框架,它提供了许多响应式设计、现成的UI组件、JavaScript插件等功能,使得我们能够快速地构建具有响应式特性的网站或Web应用程序。接下来我们将讲解如何在短短的30分钟内快速掌握Bootstrap框架。 步骤1:引入Bootstrap文件 首先,我们需要将Bootstrap的…

    css 2023年6月10日
    00
  • bootstrap网格系统使用方法解析

    那么首先我来简单介绍一下Bootstrap网格系统的概念。 Bootstrap是一种流行的响应式网页开发框架,其网格系统是其最为重要的特性之一,它使得开发者能够轻松创建自适应布局,将页面分割成多列,并确保这些列在各种设备上的显示方式都是一致的。 在Bootstrap网格系统中,页面被划分成12个等宽的列(column),并且可以通过CSS类来控制任何一列在不…

    css 2023年6月10日
    00
  • CSS网页布局全精通

    CSS网页布局全精通攻略 CSS网页布局是Web开发中的重要技能之一,它可以帮助开发者实现各种复杂的页面布局效果。本攻略将详细讲解CSS网页布局的全套技巧,包括基本原理、制作方法和示例说明。 1. 基本原理 CSS网页布局的基本原理是使用CSS的盒模型和定位属性来控制元素的位置和大小,从而实现各种复杂的页面布局效果。盒模型包括元素的内容、内边距、边框和外边距…

    css 2023年5月18日
    00
  • 详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题

    针对这个话题,我们来一步步进行详细讲解。 问题描述 我们知道,在网页设计开发过程中会大量涉及到页面滚动的需求。而在这个过程中,我们需要用到“scrollTop”这个属性,来获取页面滚动值。但是在实际开发过程中,我们会发现这个属性在不同的浏览器中表现不同,尤其是FireFox与Chrome浏览器之间的兼容问题。 问题解决 针对这个问题,我们可以采取以下几个步骤…

    css 2023年6月9日
    00
  • 使用CSS3实现环形进度条效果

    使用CSS3可以很容易地实现环形进度条效果。下面是实现环形进度条的完整攻略: 准备工作 在实现环形进度条之前,我们需要新建一个 HTML 文件,并在文件头部引入 CSS 文件。 <!DOCTYPE html> <html> <head> <title>CSS3 环形进度条</title> <l…

    css 2023年6月10日
    00
  • 如何在 Illustrator 中存储图稿?AI图稿存储五大基本格式

    在 Illustrator 中,我们可以使用不同的格式来存储图稿,并根据不同的需求选择合适的格式。下面是五种基本的存储格式: AI 格式 AI 格式是 Adobe Illustrator 的原生格式。当我们需要在 Illustrator 中对图稿进行修改或编辑时,应该使用 AI 格式进行存储。AI 格式不仅可以保存所有的图层信息、样式、效果和笔刷,还可以保存…

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