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

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

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日

相关文章

  • CSS3 Flex 弹性布局实例代码详解

    下面我将为您详细讲解“CSS3 Fle 弹性布局实例代码详解”的攻略。 一、什么是Flex布局 Flex布局也称弹性布局,是一种以 “行” 和 “列” 的方式来布局内容的,是CSS3 新增的布局方式。 Flex布局是可以应用到任何一个容器 (container)上的。常用的父元素有:div、section、article、main、aside、nav、ul、…

    css 2023年6月10日
    00
  • Dw CC 2018速记css样式怎么关闭列表样式?

    要关闭列表样式,可以通过CSS样式的list-style属性来实现,具体操作如下: 找到要关闭列表样式的CSS样式所在的文件。 在该样式的文件中添加如下代码:list-style:none;。 将该代码添加到目标标签的样式属性中,例如ul标签的样式: ul { list-style: none; } 保存文件,刷新浏览器查看效果。 以下是两个具体的例子: 示…

    css 2023年6月10日
    00
  • CSS使用技巧20则

    让我们来详细讲解“CSS使用技巧20则”的完整攻略吧。 CSS使用技巧20则 1. 了解CSS选择器的优先级规则 在多个CSS样式规则中,当发生冲突时,浏览器要判断哪个样式规则应该优先应用。这时就需要了解CSS选择器的优先级规则了。 CSS选择器的优先级从高到低分别是: !important声明(高于任何其他声明) 内联样式声明 ID选择器 类选择器、属性选…

    css 2023年6月9日
    00
  • Bootstrap CSS布局之表格

    下面就是Bootstrap CSS布局之表格的完整攻略。 Bootstrap CSS布局之表格 Bootstrap是一个流行的CSS框架, 提供了大量预设的CSS样式和JavaScript插件。其中,表格是Bootstrap提供的一种常用的布局方式。Bootstrap表格具有响应式设计,能够适应各种大小的屏幕,如手机和平板电脑。 一个简单的表格 下面是一个简…

    css 2023年6月10日
    00
  • XML入门的常见问题(二)

    下面是针对“XML入门的常见问题(二)”的完整攻略: 1. 什么是XML Schema? XML Schema 是一种描述 XML 文件的结构和内容的语言,它主要用于检查和验证 XML 的有效性,并支持更加严格和灵活的数据校验。 XML Schema 不同于 DTD,它可以定义更多的数据类型和结构类型,更加灵活和强大,但语法复杂。 2. 如何使用XML Sc…

    css 2023年6月9日
    00
  • coolcode转SyntaxHighlighter与Mysql正则表达式实现分析

    Coolcode转SyntaxHighlighter与Mysql正则表达式实现分析 本篇攻略主要介绍如何使用Coolcode和SyntaxHighlighter将代码块进行高亮显示,并结合Mysql正则表达式进行分析。 步骤1:Coolcode转SyntaxHighlighter Coolcode是一种代码高亮工具,可以将代码渲染成漂亮的样式。但是它存在一些…

    css 2023年6月9日
    00
  • html/css基础篇——html代码编写过程中的几个警惕点(必看)

    下面是“html/css基础篇——html代码编写过程中的几个警惕点(必看)”的完整攻略: HTML代码编写过程中的几个警惕点 1. 缩进格式 在编写HTML代码时,我们需要按照一定的缩进格式来区分不同的标签和标签内的内容。这不仅有利于代码的阅读和修改,也可以提高代码的可维护性。 示例: <!DOCTYPE html> <html> …

    css 2023年6月9日
    00
  • 一篇文章让你彻底搞懂js中的位置计算

    一篇文章让你彻底搞懂JS中的位置计算 什么是位置计算 在前端开发中,经常需要对元素的位置进行计算,例如判断元素是否在屏幕中可见、计算元素的偏移量等等。这些操作都需要用到位置计算。 位置计算指的是计算HTML元素在浏览器窗口中的位置信息,包括元素的宽度、高度、left、top值等等。 元素的位置计算方法 在JS中,我们可以通过以下几种方法来获取元素的位置信息:…

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