页面图片浮动左右滑动效果的简单实现案例

下面是“页面图片浮动左右滑动效果的简单实现案例”的完整攻略:

1. 实现步骤

1.1 HTML结构

需要在HTML中定义一个div容器,用于容纳所有图片,并为每个图片添加一个标签,实现点击图片跳转。

<div class="image-container">
  <a href="#">
    <img src="image1.jpg" alt="image1">
  </a>
  <a href="#">
    <img src="image2.jpg" alt="image2">
  </a>
  <a href="#">
    <img src="image3.jpg" alt="image3">
  </a>
</div>

1.2 CSS样式

首先,给image-container容器设置宽度和高度,以及overflow:hidden属性,确保容器内部的图片只能显示容器被定义的宽度和高度。然后将要显示的图片设置为浮动元素,使其能够左右滑动。

.image-container {
  width: 800px;
  height: 400px;
  overflow: hidden;
}

.image-container img {
  float: left;
  width: 250px;
  height: 400px;
  margin-right: 20px;
  cursor: pointer;
}

在上述代码中,我们设置了image-container容器的宽度为800px,高度为400px,并给容器定义了overflow:hidden属性,以便它只能显示800px × 400px的区域。对于每个图片,我们将其设置为左浮动,宽度为250px,高度为400px,并将图片之间的间距设置为20px。最后,为了使图片看起来更像链接,我们将文本光标设置为指针。

1.3 JavaScript

要使图片可以左右滑动,我们需要使用JavaScript来实现。这里我们使用jQuery库,因为它可以让我们的代码更加精简和易读。

首先,我们需要定义一些变量来跟踪容器和图片的位置。我们需要知道当前容器的位置、要显示的第一张图片的位置以及最后一张图片的位置。然后我们需要绑定滑动事件,以响应滑动事件。

$(document).ready(function() {
  var containerWidth = $(".image-container").width();
  var imageMargin = parseInt($(".image-container img").css("margin-right"));
  var imageWidth = $(".image-container img").outerWidth();
  var totalImages = $(".image-container img").length;
  var firstImagePosition = 0;
  var currentImagePosition = 0;

  $(".image-container").on("mousedown touchstart", function(event) {
    event.preventDefault();

    // Get the starting point of the click/touch
    var startX = event.pageX || event.originalEvent.touches[0].pageX;
    var imageClickMargin = currentImagePosition - startX;

    // Bind the mousemove/touchmove event
    $(document).on("mousemove touchmove", function(event) {
      event.preventDefault();

      // Get the new position of the click/touch
      var newX = event.pageX || event.originalEvent.touches[0].pageX;
      var newPosition = newX + imageClickMargin;

      // Check the boundaries
      if (newPosition > firstImagePosition) {
        newPosition = firstImagePosition;
      } else if (newPosition < (containerWidth - ((totalImages * imageWidth) + ((totalImages - 1) * imageMargin))) ) {
        newPosition = containerWidth - ((totalImages * imageWidth) + ((totalImages - 1) * imageMargin));
      }

      // Set the new position
      currentImagePosition = newPosition;
      $(".image-container").css({"left": newPosition + "px"});
    });
  });

  // Remove the mousemove/touchmove event when unclicked/untouched
  $(document).on("mouseup touchend", function(event) {
    $(document).off("mousemove touchmove");
  });
});

在上述代码中,我们使用jQuery的ready()函数来确保文档加载完成后执行我们的代码。然后我们使用jQuery选择器来获取image-container容器的宽度,并获取每个图片的间距和宽度。我们还需要知道图片的总数,以便在滑动时计算容器的边界。然后我们定义一些变量来跟踪容器和图片的位置。这些变量将跟踪容器的位置(即“left”属性)以及容器内第一张和最后一张图片的位置。

当用户按下鼠标或手指开始滑动时,我们需要获取他们按下的位置,并绑定mousemove/touchmove事件。在事件处理程序中,我们需要获取滑动的新位置,并检查容器的边界。最后,我们设置新位置,并移动容器。当用户在mouseup/touchend事件中放开鼠标或手指时,我们需要解除mousemove/touchmove事件绑定。

至此,我们已经实现了浮动的图片容器的左右滑动效果。

2. 示例说明

2.1 示例1

下面是一个简单的HTML页面,它实现了一个具有左右滑动功能的图片容器。每张图片都是一个链接,单击任何一张图片将跳转到相应的页面。该示例可以通过在文本编辑器中创建一个HTML文件并将以下代码复制到文件中来创建:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Animated Image Gallery</title>
  <style>
    .image-container {
      width: 800px;
      height: 400px;
      overflow: hidden;
    }

    .image-container img {
      float: left;
      width: 250px;
      height: 400px;
      margin-right: 20px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <div class="image-container">
    <a href="#"><img src="image1.jpg" alt="image1"></a>
    <a href="#"><img src="image2.jpg" alt="image2"></a>
    <a href="#"><img src="image3.jpg" alt="image3"></a>
  </div>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(document).ready(function() {
      var containerWidth = $(".image-container").width();
      var imageMargin = parseInt($(".image-container img").css("margin-right"));
      var imageWidth = $(".image-container img").outerWidth();
      var totalImages = $(".image-container img").length;
      var firstImagePosition = 0;
      var currentImagePosition = 0;

      $(".image-container").on("mousedown touchstart", function(event) {
        event.preventDefault();

        // Get the starting point of the click/touch
        var startX = event.pageX || event.originalEvent.touches[0].pageX;
        var imageClickMargin = currentImagePosition - startX;

        // Bind the mousemove/touchmove event
        $(document).on("mousemove touchmove", function(event) {
          event.preventDefault();

          // Get the new position of the click/touch
          var newX = event.pageX || event.originalEvent.touches[0].pageX;
          var newPosition = newX + imageClickMargin;

          // Check the boundaries
          if (newPosition > firstImagePosition) {
            newPosition = firstImagePosition;
          } else if (newPosition < (containerWidth - ((totalImages * imageWidth) + ((totalImages - 1) * imageMargin))) ) {
            newPosition = containerWidth - ((totalImages * imageWidth) + ((totalImages - 1) * imageMargin));
          }

          // Set the new position
          currentImagePosition = newPosition;
          $(".image-container").css({"left": newPosition + "px"});
        });
      });

      // Remove the mousemove/touchmove event when unclicked/untouched
      $(document).on("mouseup touchend", function(event) {
        $(document).off("mousemove touchmove");
      });
    });
  </script>
</body>
</html>

如果您的页面缺少样式,请使用上述CSS代码为您的页面添加样式。如果您使用的是不同的图片,请记得相应地更改img src属性。

2.2 示例2

下面是另一个示例,它实现了带有左右滑动功能的图片容器,并允许在幻灯片中竖直滚动。每张图片都是一个缩略图,单击缩略图将显示全屏图像。要实现此示例,请在文本编辑器中创建一个HTML文件并将以下代码复制到文件中:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Animated Image Gallery</title>
  <style>
    html, body {
      height: 100%;
      margin: 0;
      padding: 0;
    }

    .container {
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }

    .image-container {
      width: 100%;
      height: 80%;
      overflow: hidden;
      display: flex;
      justify-content: center;
    }

    .image-container img {
      margin-right: 20px;
      height: 80%;
      cursor: pointer;
    }

    .image-container img:last-child {
      margin-right: 0;
    }

    .full-screen {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 999;
      background-color: rgba(0, 0, 0, 0.8);
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .full-screen img {
      max-width: 90%;
      max-height: 90%;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="image-container">
      <img src="thumbnail1.jpg" alt="thumbnail1">
      <img src="thumbnail2.jpg" alt="thumbnail2">
      <img src="thumbnail3.jpg" alt="thumbnail3">
      <img src="thumbnail4.jpg" alt="thumbnail4">
      <img src="thumbnail5.jpg" alt="thumbnail5">
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(document).ready(function(){
      var containerHeight = $(".image-container").height();
      var imageMargin = parseInt($(".image-container img").css("margin-right"));
      var imageHeight = $(".image-container img").outerHeight();
      var totalImages = $(".image-container img").length;
      var firstImagePosition = 0;
      var currentImagePosition = 0;

      $(".image-container").on("mousedown touchstart", function(event) {
        event.preventDefault();

        // Get the starting point of the click/touch
        var startY = event.pageY || event.originalEvent.touches[0].pageY;
        var imageClickMargin = currentImagePosition - startY;

        // Bind the mousemove/touchmove event
        $(document).on("mousemove touchmove", function(event) {
          event.preventDefault();

          // Get the new position of the click/touch
          var newY = event.pageY || event.originalEvent.touches[0].pageY;
          var newPosition = newY + imageClickMargin;

          // Check the boundaries
          if (newPosition > firstImagePosition) {
            newPosition = firstImagePosition;
          } else if (newPosition < (containerHeight - ((totalImages * imageHeight) + ((totalImages - 1) * imageMargin)))) {
            newPosition = containerHeight - ((totalImages * imageHeight) + ((totalImages - 1) * imageMargin));
          }

          // Set the new position
          currentImagePosition = newPosition;
          $(".image-container").css({"top": newPosition + "px"});
        });
      });

      // Remove the mousemove/touchmove event when unclicked/untouched
      $(document).on("mouseup touchend", function(event) {
        $(document).off("mousemove touchmove");
      });

      // Display full-screen image on click
      $(".image-container img").on("click", function(){
        var fullScreenContainer = $("<div>").addClass("full-screen");
        var fullScreenImage = $("<img>").attr("src", $(this).attr("src"));
        fullScreenContainer.append(fullScreenImage);
        $("body").append(fullScreenContainer);
      });

      // Close full-screen on click
      $("body").on("click", ".full-screen", function(){
        $(this).remove();
      });
    });
  </script>
</body>
</html>

该示例实现了一个带有左右滑动功能的图片容器,并允许在幻灯片中竖直滚动。我们使用了flexbox布局,使图像居中并允许竖直滚动。我们还实现了单击缩略图时显示全屏的图像的功能,并在单击全屏图像时关闭全屏显示。

如果您的页面缺少样式,请使用上述CSS代码为您的页面添加样式。如果您使用的是不同的图片,请记得相应地更改img src属性。

这里是示例2的完整演示:Animated Image Gallery

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:页面图片浮动左右滑动效果的简单实现案例 - Python技术站

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

相关文章

  • 使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法

    使用CSS媒体查询和JavaScript判断浏览器设备类型的方法可以用于响应式网站的开发,在不同设备上优化网站的布局和风格,提升用户体验。 使用CSS媒体查询 CSS媒体查询可以根据浏览器窗口大小的变化为不同的屏幕尺寸设置不同的样式。通过CSS媒体查询我们可以使用不同的样式设置来适配不同的设备,比如手机、平板、电脑等。 媒体查询语法 媒体查询定义了一个限制条…

    css 2023年6月10日
    00
  • python selenium 弹出框处理的实现

    下面我将详细讲解如何使用 Python 和 Selenium 来处理弹出框: 什么是 Selenium? Selenium 是一个用于自动化浏览器操作的工具,它可以模拟用户在浏览器中的操作,如点击、输入、选择等。Selenium 支持多种编程语言,包括 Python,可以通过 Selenium 的 Python 库来实现自动化测试、网站抓取等任务。 Sele…

    css 2023年6月10日
    00
  • CSS网页布局:div水平居中的各种方法

    下面我为你详细讲解“CSS网页布局:div水平居中的各种方法”的完整攻略。 方法一:使用text-align属性 text-align属性可以用于水平对齐元素的内容,其取值包括left、center和right。如果将该属性用于div元素,那么该元素的所有内容都会水平居中。 示例代码: <!DOCTYPE html> <html> &…

    css 2023年6月10日
    00
  • 论web标准的网页制作和符合web标准的网站UI

    论Web标准的网页制作和符合Web标准的网站UI是现代网站制作中的重要概念。本文将详细介绍这些概念背后的技术,并提供一些制作Web标准网站的实用示例。 什么是Web标准? Web标准是一种技术标准,旨在确保网站的可访问性、可用性、可维护性和可扩展性。使用Web标准可以确保网站在不同的浏览器和设备上都能够正常工作。Web标准包括HTML、CSS和JavaScr…

    css 2023年6月9日
    00
  • js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)

    实现有过渡渐变效果的图片轮播相册需要使用CSS3的transition属性和JavaScript实现。下面是完整的攻略: 步骤一:HTML结构 首先,需要在HTML中写出轮播相册的结构。这里以一个简单的轮播相册为例,代码如下: <div class="slider"> <ul> <li><img …

    css 2023年6月10日
    00
  • css vertical-align属性的一些理解与认识(一)

    CSS vertical-align 属性的一些理解与认识(一) CSS 的 vertical-align 属性用于设置元素的垂直对齐方式。本文将详细讲解 vertical-align 属性的一些理解与认识,包括基本概念、使用方法、注意事项和示例说明。 1. 基本概念 vertical-align 属性用于设置元素的垂直对齐方式,它可以应用于行内元素和表格单…

    css 2023年5月18日
    00
  • indexedDB bootstrap angularjs之 MVC DOMO (应用示例)

    “indexedDB bootstrap angularjs之 MVC DOMO”是基于HTML5 IndexedDB API、Bootstrap框架和AngularJS组件库,使用MVC模式实现的一个示例应用程序,用于演示IndexedDB在Web应用程序中的使用。 下面是详细的攻略步骤: 1. 安装必备工具和库 安装node.js和npm 安装Bower…

    css 2023年6月11日
    00
  • openlayers6之地图覆盖物overlay详解

    OpenLayers6之地图覆盖物Overlay详解 什么是地图覆盖物Overlay? 地图覆盖物指的是放置在地图表面的图形元素,例如标注、弹框、图标等。OpenLayers6中的Overlay类可以用来创建和管理地图覆盖物。 创建Overlay 要创建一个Overlay,必须先定义它的位置、大小以及所包含的图形元素。下面是一个简单的示例: // 定义标注的…

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