返回顶部
首页 > 资讯 > 前端开发 > node.js >jquery怎样实现百叶窗效果
  • 671
分享到

jquery怎样实现百叶窗效果

2024-04-02 19:04:59 671人浏览 薄情痞子
摘要

这篇文章主要介绍了Jquery怎样实现百叶窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最开始看效果的时候觉得好复杂,以为是宽度的变化

这篇文章主要介绍了Jquery怎样实现百叶窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

最开始看效果的时候觉得好复杂,以为是宽度的变化写的动画,但是后来细想,如果是宽度变化,那么图片变窄的时候肯定会失真了,后来经过学习,发现原来原理很简单:

基本原理就是,将图片都绝对定位到盒子里,然后分别定位,平分整个盒子,图片就会显示一种层叠效果了(本案例是通过left值控制位置);然后通过jq控制,当鼠标经过某张图片的时候这张图片完全显示(即left值进行变化),其他图片的left值也进行相应的改变。

文字描述起来很难懂的样子,先上htmlCSS布局效果

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><style type="text/css">div{ width: 420px; height: 186px; border: 2px solid #ccc; overflow: hidden; position: relative; margin: 100px auto;}img{ border: none; display: block; position: absolute; top: 0;}img:nth-of-type(1){ left: 0;}img:nth-of-type(2){ left: 84px;}img:nth-of-type(3){ left: 168px;}img:nth-of-type(4){ left: 252px;}img:nth-of-type(5){ left: 336px;}</style><div class="box"> <img src="/file/imgs/upload/202210/19/i53nfxbsgaw.jpg"> <img src="/file/imgs/upload/202210/19/Qtjide5zixs.jpg"> <img src="/file/imgs/upload/202210/19/ubmMQaamagp.jpg"> <img src="/file/imgs/upload/202210/19/ecjcfxdfo04.jpg"> <img src="/file/imgs/upload/202210/19/yte25clxtt1.jpg"></div></body></html>

布局很简单,接下来就是jq控制各个图片相对位置的变化了。

起始位置:五张图片的 left 值在css已经写好,就是平分了整个盒子的宽度;

鼠标经过时候:经过的那张图片完全显示,即占据宽度280px(图片的宽度是280px),剩余的宽度是  (盒子宽度-280px)/剩余的图片数量,根据所得值确定各个图片的终止位置,left值;

感觉自己说的好复杂,先看下鼠标讲过某张图的时候的动画效果:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><style type="text/css">div{ width: 420px; height: 186px; border: 2px solid #ccc; overflow: hidden; position: relative; margin: 100px auto;}img{ border: none; display: block; position: absolute; top: 0;}img:nth-of-type(1){ left: 0;}img:nth-of-type(2){ left: 84px;}img:nth-of-type(3){ left: 168px;}img:nth-of-type(4){ left: 252px;}img:nth-of-type(5){ left: 336px;}</style><div class="box"> <img src="/file/imgs/upload/202210/19/i53nfxbsgaw.jpg"> <img src="/file/imgs/upload/202210/19/qtjide5zixs.jpg"> <img src="/file/imgs/upload/202210/19/ubmmqaamagp.jpg"> <img src="/file/imgs/upload/202210/19/ecjcfxdfo04.jpg"> <img src="/file/imgs/upload/202210/19/yte25clxtt1.jpg"></div><script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">var lefts;var idx;$("img").each(function(){ $(this).mouseenter(function(e) { idx = $(this).index(); lefts = idx * 35; //当前图片的变化 $(this).stop(true).animate({"left" : idx * 35}, 1000); });})

当前图片能够愉快的玩耍了,接下来的重点就是其余图片怎么运动。

此时,我们可以把剩余的图片分成左右两部分,用jq 的  ":lt()" 和 ":gt()"方法写出剩余部分的效果。这里有一个小小的坑,自己也是绕了半天,最后还是别人提醒的才绕出来。

以当前图片左侧动画效果为例,最开始我是这么写的

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><style type="text/css">div{ width: 420px; height: 186px; border: 2px solid #ccc; overflow: hidden; position: relative; margin: 100px auto;}img{ border: none; display: block; position: absolute; top: 0;}img:nth-of-type(1){ left: 0;}img:nth-of-type(2){ left: 84px;}img:nth-of-type(3){ left: 168px;}img:nth-of-type(4){ left: 252px;}img:nth-of-type(5){ left: 336px;}</style><div class="box"> <img src="/file/imgs/upload/202210/19/i53nfxbsgaw.jpg"> <img src="/file/imgs/upload/202210/19/qtjide5zixs.jpg"> <img src="/file/imgs/upload/202210/19/ubmmqaamagp.jpg"> <img src="/file/imgs/upload/202210/19/ecjcfxdfo04.jpg"> <img src="/file/imgs/upload/202210/19/yte25clxtt1.jpg"></div><script type="text/javascript" src="Https://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">var lefts;var idx;$("img").each(function(){ $(this).mouseenter(function(e) { idx = $(this).index(); lefts = idx * 35; //当前图片的变化 $(this).stop(true).animate({"left" : idx * 35}, 1000); $(“img:lt( idx )“).each(function(){ $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000) }) });})

看上去没有什么错误,见证奇迹~~~奇迹~~迹~~~然而并没有什么奇迹,原因就是  $(“img:lt( idx )“) 这种写法,里面的idx已经不是变量了,所以无法获取当前的 idx 值,我们可以在外面定义一个变量,同时用 + 连接 lt 和变量 idx,再把变量引入进去即可。

因此更改后如下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><style type="text/css">div{ width: 420px; height: 186px; border: 2px solid #ccc; overflow: hidden; position: relative; margin: 100px auto;}img{ border: none; display: block; position: absolute; top: 0;}img:nth-of-type(1){ left: 0;}img:nth-of-type(2){ left: 84px;}img:nth-of-type(3){ left: 168px;}img:nth-of-type(4){ left: 252px;}img:nth-of-type(5){ left: 336px;}</style><div class="box"> <img src="/file/imgs/upload/202210/19/i53nfxbsgaw.jpg"> <img src="/file/imgs/upload/202210/19/qtjide5zixs.jpg"> <img src="/file/imgs/upload/202210/19/ubmmqaamagp.jpg"> <img src="/file/imgs/upload/202210/19/ecjcfxdfo04.jpg"> <img src="/file/imgs/upload/202210/19/yte25clxtt1.jpg"></div><script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">var lefts;var idx;var imgL; $("img").each(function(){ $(this).mouseenter(function(e) { idx = $(this).index(); imgL = "img:lt(" + idx + ")" lefts = idx * 35; //当前图片的变化 $(this).stop(true).animate({"left" : idx * 35}, 1000); $(imgL).each(function(){ $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000) }) });})

这样奇迹就出现了~~ 同样的道理,右侧也是同样的方法。

最终代码如下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><style type="text/css">div{ width: 420px; height: 186px; border: 2px solid #ccc; overflow: hidden; position: relative; margin: 100px auto;}img{ width:280px; height:186px; border: none; display: block; position: absolute; top: 0;}img:nth-of-type(1){ left: 0;}img:nth-of-type(2){ left: 84px;}img:nth-of-type(3){ left: 168px;}img:nth-of-type(4){ left: 252px;}img:nth-of-type(5){ left: 336px;}</style><div class="box"> <img src="/file/imgs/upload/202210/19/i53nfxbsgaw.jpg"> <img src="/file/imgs/upload/202210/19/qtjide5zixs.jpg"> <img src="/file/imgs/upload/202210/19/ubmmqaamagp.jpg"> <img src="/file/imgs/upload/202210/19/ecjcfxdfo04.jpg"> <img src="/file/imgs/upload/202210/19/yte25clxtt1.jpg"></div><script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">//精简之后的方法var lefts;var idx;var imgL; var imgR;$("img").each(function(){ $(this).mouseenter(function(e) { idx = $(this).index(); imgL = "img:lt(" + idx + ")" //获取当前左侧的所有图片,如果直接用 $("img:lt(idx)"),idx会被当做字符串,获取不到对应的值 imgR = "img:gt(" + idx + ")" //获取当前右侧的所有图片 lefts = idx * 35; //当前图片的变化 $(this).stop(true).animate({"left" : idx * 35}, 1000); //左侧图片的变化 $(imgL).each(function(){ $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000) }) //右侧图片的变化 $(imgR).each(function(){ $(this).stop(true).animate({"left" : ($(this).index()+7) * 35}, 1000) }) });})$("img").each(function(){ $(this).mouseleave(function(){ $("img").each(function(){ $(this).stop(true).animate({"left" : ($(this).index())*84}, 1000); }) });})</script></body></html>

感谢你能够认真阅读完这篇文章,希望小编分享的“jquery怎样实现百叶窗效果”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网node.js频道,更多相关知识等着你来学习!

--结束END--

本文标题: jquery怎样实现百叶窗效果

本文链接: https://lsjlt.com/news/89528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • jquery怎样实现百叶窗效果
    这篇文章主要介绍了jquery怎样实现百叶窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最开始看效果的时候觉得好复杂,以为是宽度的变化...
    99+
    2024-04-02
  • jQuery怎么实现翻牌或百叶窗效果
    本篇内容主要讲解“jQuery怎么实现翻牌或百叶窗效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jQuery怎么实现翻牌或百叶窗效果”吧!效果预览:动态效果请进入:http://www.cn...
    99+
    2023-06-17
  • jquery实现百叶窗效果(利用li的定位)
    本文实例为大家分享了jquery实现百叶窗效果的具体代码,供大家参考,具体内容如下 大概思路: 一个div(宽度为800px),里面包含ul和li,li的宽高分别设置为560px,3...
    99+
    2024-04-02
  • Html5中怎么实现百叶窗效果
    这篇文章给大家介绍Html5中怎么实现百叶窗效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1,百叶窗布局 用定位(position: absolute)覆盖在content布局之上...
    99+
    2024-04-02
  • Html5如何实现百叶窗效果
    这篇文章主要介绍了Html5如何实现百叶窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:实现方法介绍:1,百叶窗布局 用定位(...
    99+
    2024-04-02
  • css怎么实现百叶窗滚动效果
    这篇文章主要讲解了“css怎么实现百叶窗滚动效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css怎么实现百叶窗滚动效果”吧!代码如下:<!<...
    99+
    2024-04-02
  • 原生JS实现百叶窗特效
    本文分享一个用原生JS实现的百叶窗特效,效果如下: 代码实现如下,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <head...
    99+
    2024-04-02
  • css如何制作百叶窗效果
    这篇文章主要介绍了css如何制作百叶窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。<!DOCTYPE html PUBLIC &...
    99+
    2024-04-02
  • 纯CSS如何实现图片百叶窗展示效果
    这篇文章主要为大家展示了纯CSS如何实现图片百叶窗展示效果,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“纯CSS如何实现图片百叶窗展示效果”这篇文章吧。首先给大家看一下完成效果主要思路:其实这个百...
    99+
    2023-06-08
  • 如何使用move.js库实现百叶窗特效
    这篇文章主要介绍了如何使用move.js库实现百叶窗特效,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。今天操作的是一个,百叶窗效果的一个页面...
    99+
    2024-04-02
  • Python趣味挑战之pygame实现无敌好看的百叶窗动态效果
    目录一、案例知识点概述二、准备工作三、核心功能模块四、完整代码五、运行效果一、案例知识点概述 (一)使用到的python库 使用pygame库、random库和os、sys等系统库。 其中: pygame库实现主体...
    99+
    2022-06-02
    pygame实现百叶窗动态效果 python pygame库
  • 怎么用CSS3实现百叶窗焦点图动画
    这篇文章主要介绍“怎么用CSS3实现百叶窗焦点图动画”,在日常操作中,相信很多人在怎么用CSS3实现百叶窗焦点图动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS...
    99+
    2024-04-02
  • jquery实现简单的弹窗效果
    本文实例为大家分享了jquery实现简单弹窗效果的具体代码,供大家参考,具体内容如下 效果实现图 css代码 h1,p,h2{ margin: 0; padding: ...
    99+
    2024-04-02
  • jQuery如何实现弹窗遮罩效果
    这篇文章给大家分享的是有关jQuery如何实现弹窗遮罩效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图:图(1)初始图图(2)点击按钮后代码如下:<!DOCTYPE...
    99+
    2024-04-02
  • 实现jQuery弹窗效果的示例分析
    这篇文章主要介绍实现jQuery弹窗效果的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例为大家分享了jQuery弹窗效果展示的具体代码,供大家参考,具体内容如下<...
    99+
    2024-04-02
  • css怎么实现叶子形状loading效果
    本篇内容主要讲解“css怎么实现叶子形状loading效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css怎么实现叶子形状loading效果”吧!本文实例讲...
    99+
    2024-04-02
  • jQuery中msgTips如何实现顶部弹窗效果
    这篇文章主要介绍了jQuery中msgTips如何实现顶部弹窗效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端:@{  &n...
    99+
    2024-04-02
  • HTML5怎么实现树叶飘落动画效果
    这篇“HTML5怎么实现树叶飘落动画效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“HT...
    99+
    2024-04-02
  • Android悬浮窗效果怎么实现
    要实现Android的悬浮窗效果,可以采用以下几种方法: 使用系统提供的WindowManager类来创建一个悬浮窗口。可以通过...
    99+
    2023-10-22
    Android
  • jQuery怎么实现弹幕效果
    这篇文章将为大家详细讲解有关jQuery怎么实现弹幕效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来看看运行效果:下面将整个代码显示出来:<!doctype&...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作