这段HTML和CSS代码实现了一个具有动态滑动效果的卡片式图片展示页面,包含三个不同的图片和对应的内容描述。
大家复制代码时,可能会因格式转换出现错乱,导致样式失效。建议先少量复制代码进行测试,若未能解决问题,私信回复源码两字,我会发送完整的压缩包给你。
演示效果
HTML&CSS
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公众号关注:前端Hardy</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
height: 100vh;
font-family: 'Open Sans', sans-serif;
background-color: #666666;
}
body {
display: flex;
align-items: center;
justify-content: center;
}
.card {
position: absolute;
height: 350px;
width: 100%;
max-width: 850px;
margin: auto;
background-color: #ffffff;
border-radius: 25px;
box-shadow: 10px 0 50px rgba(0, 0, 0, 0.5);
}
.card .inner_part {
display: flex;
align-items: center;
justify-content: center;
padding: 0 0 0 30px;
height: 350px;
position: absolute;
}
#slideImg:checked~.inner_part {
padding: 0;
transition: .1s ease-in;
}
.inner_part .img {
height: 260px;
width: 260px;
overflow: hidden;
flex-shrink: 0;
border-radius: 20px;
box-shadow: 0 10px 50px rgba(0, 0, 0, 0.2);
}
#slideImg:checked~.inner_part .img {
height: 350px;
width: 850px;
z-index: 99;
transition: .3s .2s ease-in;
}
.img img {
height: 100%;
width: 100%;
cursor: pointer;
opacity: 0;
transition: .6s;
}
#slide_1:checked~.inner_part .img_1,
#slide_2:checked~.inner_part .img_2,
#slide_3:checked~.inner_part .img_3 {
opacity: 1;
transition-delay: .2s;
}
.content {
padding: 0 20px 0 35px;
width: 530px;
margin-left: 50px;
opacity: 0;
transition: .6s;
}
#slideImg:checked~.inner_part .content {
display: none;
}
#slide_1:checked~.inner_part .content_1,
#slide_2:checked~.inner_part .content_2,
#slide_3:checked~.inner_part .content_3 {
opacity: 1;
margin-left: 0;
z-index: 100;
transition-delay: .3s;
}
.content .title {
font-size: 30px;
font-weight: 700;
color: #0d0925;
margin: 0 0 20px 0;
}
.content .text {
font-size: 19px;
color: #4e4a67;
margin: 0 auto 30px auto;
line-height: 1.5em;
text-align: justify;
}
.content button {
padding: 15px 20px;
border: none;
font-size: 16px;
color: #fff0e6;
font-weight: 600;
letter-spacing: 1px;
border-radius: 50px;
cursor: pointer;
outline: none;
background: #000000;
float: right;
}
.content button:hover {
background: #cecece;
color: #000000;
}
.slider {
position: absolute;
bottom: 25px;
left: 55%;
transform: translateX(-50%);
z-index: 1;
}
#slideImg:checked~.slider {
display: none;
}
.slider .slide {
position: relative;
height: 10px;
width: 50px;
background: #d9d9d9;
border-radius: 5px;
display: inline-flex;
margin: 0 3px;
cursor: pointer;
}
.slider .slide:before {
position: absolute;
content: '';
top: 0;
left: 0;
height: 100%;
width: -100%;
background: #000000;
;
border-radius: 10px;
transform: scaleX(0);
transition: transform .6s;
transform-origin: left;
}
#slide_1:checked~.slider .slide_1:before,
#slide_2:checked~.slider .slide_2:before,
#slide_3:checked~.slider .slide_3:before {
transform: scaleX(1);
width: 100%;
}
input {
display: none;
}
</style>
</head>
<body>
<div class="card">
<input type="radio" name="select" id="slide_1" checked>
<input type="radio" name="select" id="slide_2">
<input type="radio" name="select" id="slide_3">
<input type="checkbox" id="slideImg">
<div class="slider">
<label for="slide_1" class="slide slide_1"></label>
<label for="slide_2" class="slide slide_2"></label>
<label for="slide_3" class="slide slide_3"></label>
</div>
<div class="inner_part">
<label for="slideImg" class="img">
<img class="img_1"
src="https://jxjy-att.whxunw.com/guotu_att/upload/images/2024082611/E885672B00074ABFBBDF667079BF2A85.jpg">
</label>
<div class="content content_1">
<div class="title">湖光山色映夕阳</div>
<div class="text">
夕阳西下,金色余晖洒在宁静的湖面上,倒映着远处的山峰,岸边的岩石与绿树相映成趣,构成一幅和谐美丽的自然画卷。
</div>
<button>Read More</button>
</div>
</div>
<div class="inner_part">
<label for="slideImg" class="img">
<img class="img_2"
src="https://i2.hdslb.com/bfs/archive/7e5f144ce2730cee4a059865b3c7d2d27e2e35ce.jpg">
</label>
<div class="content content_2">
<div class="title">绿野田园风光秀</div>
<div class="text">
阳光明媚的乡村景色,绿意盎然的田野与蜿蜒的小路交错,点缀其间的小屋与远处的山峦构成一幅宁静和谐的田园画卷。
</div>
<button>Read More</button>
</div>
</div>
<div class="inner_part">
<label for="slideImg" class="img">
<img class="img_3"
src="https://cos3.solepic.com/20231012/b_652261202310120839081636.jpg">
</label>
<div class="content content_3">
<div class="title">晨晖雪岭映林间</div>
<div class="text">清晨的光线洒在雪山之巅,山体被染上一抹粉红。山脚下,色彩斑斓的森林与远处的雪峰相映成趣,展现出大自然的壮丽与和谐。
</div>
<button>Read More</button>
</div>
</div>
</div>
</body>
</html>
HTML 结构
- radio:定义图片切换的控制按钮,通过name属性实现单选效果。
- checkbox:定义图片放大切换的控制按钮。
- slider:定义滑动按钮的容器,包含三个滑动按钮。
- label:定义滑动按钮,通过for属性绑定对应的input>。
- inner_part:定义每个图片和内容的容器。
- img:定义图片,通过src属性加载图片资源。
- content:定义内容区域,包含标题和描述文本。
- button:定义按钮,用于引导用户查看更多内容。
CSS 样式
- .card:定义卡片的样式,包括绝对定位、高度、宽度、最大宽度、背景颜色、圆角和阴影。
- .inner_part:定义卡片内部内容的样式,包括弹性布局、对齐方式、内边距和高度。
- #slideImg:checked~.inner_part:定义当图片放大切换按钮被选中时,内部内容的样式,包括内边距和过渡效果。
- .img:定义图片容器的样式,包括高度、宽度、溢出隐藏、弹性收缩、圆角和阴影。
- #slideImg:checked~.inner_part .img:定义当图片放大切换按钮被选中时,图片容器的样式,包括高度、宽度、层级和过渡效果。
- .img img:定义图片的样式,包括高度、宽度、鼠标指针和透明度。
- #slide_1:checked~.inner_part .img_1, #slide_2:checked~.inner_part .img_2, #slide_3:checked~.inner_part .img_3:定义当对应的图片切换按钮被选中时,图片的样式,包括透明度和过渡延迟。
- .content:定义内容区域的样式,包括内边距、宽度、左边距、透明度和过渡效果。
- #slideImg:checked~.inner_part .content:定义当图片放大切换按钮被选中时,内容区域的样式,包括隐藏显示。
- #slide_1:checked~.inner_part .content_1, #slide_2:checked~.inner_part .content_2, #slide_3:checked~.inner_part .content_3:定义当对应的图片切换按钮被选中时,内容区域的样式,包括透明度、左边距、层级和过渡延迟。
- .content .title:定义内容区域标题的样式,包括字体大小、加粗、颜色和外边距。
- .content .text:定义内容区域文本的样式,包括字体大小、颜色、外边距、行高和对齐方式。
- .content button:定义内容区域按钮的样式,包括内边距、边框、字体大小、颜色、字体加粗、字母间距、圆角、鼠标指针、轮廓和背景颜色。
- .content button:hover:定义当鼠标悬停在按钮上时的样式,包括背景颜色和文字颜色的变化。
- .slider:定义滑动按钮容器的样式,包括绝对定位、底部、左侧、变换、层级。
- #slideImg:checked~.slider:定义当图片放大切换按钮被选中时,滑动按钮容器的样式,包括隐藏显示。
- .slider .slide:定义滑动按钮的样式,包括相对定位、高度、宽度、背景颜色、圆角、内联弹性布局、外边距和鼠标指针。
- .slider .slide:before:定义滑动按钮伪元素的样式,包括绝对定位、内容、顶部、左侧、高度、宽度、背景颜色、圆角、变换和过渡效果。
- #slide_1:checked~.slider .slide_1:before, #slide_2:checked~.slider .slide_2:before, #slide_3:checked~.slider .slide_3:before:定义当对应的滑动按钮被选中时,伪元素的样式,包括变换和宽度。
- input:定义隐藏的输入元素的样式,包括隐藏显示。
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!