分享好友 教程首页 教程搜索 频道列表

HTML5+CSS3+JS实例之带标题描述的圆角图片手风琴效果

2024-03-26 15:181540
+关注28
核心提示:圆角图片手风琴效果

HTML核心代码

<div class="container">
    <div class="item active" style="background-image: url(/images/133/sun.jpg);">
        <div class="shadow"></div>
        <div class="content">
            <div class="icon">
                <i class="fa fa-sun-o"></i>
            </div>
            <div class="text">
                <div class="tit">这是标题</div>
                <div class="sub">这是一段描述</div>
            </div>
        </div>
    </div>
    <div class="item" style="background-image: url(/images/133/cloud.jpg);">
        <div class="shadow"></div>
        <div class="content">
            <div class="icon">
                <i class="fa fa-cloud"></i>
            </div>
            <div class="text">
                <div class="tit">这是标题</div>
                <div class="sub">这是一段描述</div>
            </div>
        </div>
    </div>
    <div class="item" style="background-image: url(/images/133/rain.jpg);">
        <div class="shadow"></div>
        <div class="content">
            <div class="icon">
                <i class="fa fa-tint"></i>
            </div>
            <div class="text">
                <div class="tit">这是标题</div>
                <div class="sub">这是一段描述</div>
            </div>
        </div>
    </div>
    <div class="item" style="background-image: url(/images/133/bolt.jpg);">
        <div class="shadow"></div>
        <div class="content">
            <div class="icon">
                <i class="fa fa-bolt"></i>
            </div>
            <div class="text">
                <div class="tit">这是标题</div>
                <div class="sub">这是一段描述</div>
            </div>
        </div>
    </div>
    <div class="item" style="background-image: url(/images/133/snow.jpg);">
        <div class="shadow"></div>
        <div class="content">
            <div class="icon">
                <i class="fa fa-snowflake-o"></i>
            </div>
            <div class="text">
                <div class="tit">这是标题</div>
                <div class="sub">这是一段描述</div>
            </div>
        </div>
    </div>
</div>


CSS代码

*{
    margin: 0;
    padding: 0;
}
body{
    
    height: 100vh;
    
    display: flex;
    justify-content: center;
    align-items: center;
    
    background: radial-gradient(circle at top center,#718497,#29323c);
}
.container{
    
    display: flex;
    width: 90vw;
    max-width: 900px;
    height: 400px;
    
    overflow: hidden;
}
.item{
    
    position: relative;
    width: 60px;
    margin: 10px;
    cursor: pointer;
    border-radius: 30px;
    
    background-size: cover;
    
    background-position: center;
    
    transition: 0.5s cubic-bezier(0.05,0.61,0.41,0.95);
    overflow: hidden;
}
.item .shadow{
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 100px;
    transition: 0.5s cubic-bezier(0.05,0.61,0.41,0.95);
}
.item .content{
    display: flex;
    position: absolute;
    left: 10px;
    right: 0;
    bottom: 10px;
    height: 40px;
    transition: 0.5s cubic-bezier(0.05,0.61,0.41,0.95);
}
.item .content .icon{
    min-width: 40px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 16px;
}
.item:nth-child(1) .fa{
    color: #fc6e51;
}
.item:nth-child(2) .fa{
    color: #ffce54;
}
.item:nth-child(3) .fa{
    color: #2ecc71;
}
.item:nth-child(4) .fa{
    color: #5d9cec;
}
.item:nth-child(5) .fa{
    color: #ac92ec;
}
.item .content .text{
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-left: 10px;
    color: #fff;
    width: 100%;
}
.item .content .text div{
    
    width: calc(100% - 70px);
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    opacity: 0;
    transition: opacity 0.5s ease-out;
}
.item .content .text .tit{
    font-weight: bold;
    font-size: 18px;
}
.item .content .text .sub{
    
    transition-delay: 0.1s;
}

.item.active{
    flex: 1;
    margin: 0;
    border-radius: 40px;
}
.item.active .shadow{
    background: linear-gradient(to top,rgba(0,0,0,0.35) 65%,transparent);
}
.item.active .content{
    bottom: 20px;
    left: 20px;
}
.item.active .content .text div{
    opacity: 1;
}


JS代码

// 获取所有.item元素
let items=document.querySelectorAll('.item');
// 设置选中态样式
function setActive(){
    // 遍历所有.item元素,移出active样式
    items.forEach((item)=>{
        item.classList.remove('active');
    })
    // 为当前选中项添加active样式
    this.classList.add('active');
}
// 遍历所有.item元素,分别为其设置点击事件
items.forEach((item)=>{
    item.addEventListener('click',setActive);
})



本文标签: #js #手风琴
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
生成海报
您可能在找更多

Sortable.js:功能强大的JavaScript拖拽库,不依赖JS

    JS库介绍Sortable.js一个功能强大的JavaScript 拖拽库!!!用于在网页上创建可拖放和可排序的元素。它提供了简单而强大的 API,使开发人员能够轻松地实现拖放功能,并允许用户通过拖放来重新排序列表、网格和其他元

网络转载 JavaScript教程2024-04-28

Node.js 的安装(电脑win7支持的版本)

网络转载 工具相关2024-03-12

js怎么获取input的值

    js获取input值的方法:首先给from命名;然后在javascript的地方用form的名字来调用form表单里input元素的value属性;接着把值赋给“a”;最后用js的“alert()”方法打印出来即可。

小黑 JavaScript教程2024-03-12

js怎么实现弹幕功能

    实现方法:1、创建html文件;2、添加html代码架构;3、在body标签中使用div、input、button标签分给页面设计效果显示框、输入框、弹幕提交按钮;4、添加script标签并写入js代码来实现弹幕效果;5、通过浏览器方式查看设计效果。

小黑 JavaScript教程2024-03-12

解决在js的3.6.4中$(window).load(function(){ …})报错问题及详解$(document).ready()和$(window).load()的区别

    解决$(window).load(function(){…})报错问题

网络转载 JavaScript教程2023-10-30

下一篇
我来说两句
抢沙发