在进行网页制作的过程中,我们常常希望能够实现多个图片并列展示的效果。这是一种常见的视觉布局,可以大大提升网页的美观与互动性。为了实现这一目标,我进行了多次尝试和探索,以下是我所做的努力和思考。
首次尝试
我使用了 transition: transform 0.3s ease 来定义在图像变换(例如缩放)时的过渡效果。这一属性设定了效果的持续时间(0.3秒)以及缓动函数,从而确保了变换过程的平滑与自然。同时,我通过 .image:hover { transform: scale(1.2); } 来指定当鼠标悬停在图片上时,图片的大小将放大到原始尺寸的 1.2 倍。初步实现当鼠标悬停在图片上时,该图片能够缓慢放大的效果。这种设计使得用户在浏览网页时,能够获得更加生动的互动感。以下是该效果的展示图:
尽管上述代码能够实现预期的放大效果,但我仍然觉得它并未完全达到我理想中的那些视觉效果。因此,我决定进一步探索另一种样式,以期获得更具吸引力的展示方式。
尝试2
我希望实现当鼠标未放置在图片上时,图片之间相互交叠;而当鼠标悬停在图片上时,图片则展开并显示完整内容。于是我更改了原来盒子的margin设置,将它改成了负数,试图实现交叠效果,如图:
实现这种效果之后,我又觉得上下溢出的样子不美观,所以思考无果后选择百度,百度出来的结果中,有一个“手风琴效果”,允许用户在一组可折叠的内容模块中控制显示哪些内容。通常,手风琴的每个项目包含一个标题和一个内容区域,用户可以点击标题以展开(显示)或折叠(隐藏)该内容区域。只有一个项目可以在任何给定时间展开,从而节省空间并清晰地组织信息。
案例3
代码主体改为列表形式:
<ul>
<li><img src="./img/zx1.jpg" alt=""></li>
<li><img src="./img/zx2.jpg" alt=""></li>
<li><img src="./img/zx3.jpg" alt=""></li>
<li><img src="./img/zx3.jpg" alt=""></li>
</ul>
利用ul标签定义一个无序列表,每个列表项存放一张图片 设定如下:
- ul{...}:
- width: 1550px;:设定无序列表的宽度为 1550 像素。
- height: 450px;:设定无序列表的高度为 450 像素。
- border: 1px solid;:为无序列表添加一个 1 像素的实线边框。
- margin: 50px auto;:在垂直方向上给列表留出 50 像素的外边距,并使其在水平方向上水平居中。
- overflow: hidden;:当列表项溢出父容器时,隐藏超出部分。
- ul li { ... }:
- width: 200px;:每个列表项的宽度设为 200 像素。
- height: 500px;:每个列表项的高度设为 500 像素。
- float: left;:让所有的列表项左浮动,使它们在同一行上显示。
- transition: width 0.5s;:设定宽度变化时的过渡效果,持续 0.5 秒。
- ul li img { ... }:
- width: 280px;:设定图片的宽度为 280 像素。
- height: 450px;:设定图片的高度为 450 像素。
- ul:hover li { ... }:
- 当鼠标悬停在整个列表(ul)上时,所有的列表项 (li) 的宽度将变为 100 像素。这个效果使得所有列表项在鼠标悬停时变得更窄。
- ul li:hover { ... }:
- 当鼠标悬停在某个列表项(li)上时,该列表项的宽度将变为 400 像素。这意味着用户将鼠标移动到某个特定项时,该项会变宽突出显示
以上代码可以实现在鼠标悬停在整个列表上时,所有图片变小,而当用户将鼠标悬停在特定图片上时,该图片会放大,如图:
在进行这一新的尝试时,我发现在实际运行中,图片之间出现了令人困惑的空白部分。经过仔细排查,我发现问题出在宽度设置上,具体来说,ul、li 和 img 的宽度设置并不合理。经过调整这些元素的宽度后,我成功实现了手风琴效果,使得图片之间的切换更加流畅与和谐。以下是展示这一效果的图片:
经过搜索发现,手风琴效果也可以通过js实现,有兴趣的同学可以去试一试~