仿BiliBili前端网页制作

稚 发布于 2024-06-06 59 次阅读


期末的前端开发大作业仿照着BiliBili和参考大佬的开源项目制作了这个网站 虽然很low

仿BiliBili前端网页制作

图片展示

Html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>哔哩哔哩 (゜-゜)つロ 干杯~-bilibili</title>
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" href="./css/index.css">
    <link rel="stylesheet" href="./css/fa_icon/all.min.css">
</head>
<body>
<!-- banner部分 -->
<div class="">
    <div class="vidContainer">
        <video
                class="vid"
                loop
                autoplay="autoplay"
                muted="muted"
                src="img/banner/headbanner.webm"
        ></video>
    </div>
    <div class="navContainer">
        <div class="first-nav">
            <ul class="f-n">
                <li>主站</li>
                <li>番剧</li>
                <li>游戏中心</li>
                <li>直播</li>
                <li>会员购</li>
                <li>漫画</li>
                <li>赛事</li>
                <li>高考季</li>
                <li style="font-size: 16px">下载App</li>
            </ul>
        </div>
        <div class="searchInput">
            <input type="text" placeholder="亚比囧囧囧~" />
            <div class="searchBtn">
                <a class="fa fa-search" href=""></a>
            </div>
        </div>
        <div class="userSection">
            <div class="user-left">
                <div class="touxaing">
                    <img
                            src="./img/touxiang.jpg"
                            width="36px"
                            height="36px"
                            alt=""
                    />
                </div>
                <a href="">大会员</a>
                <a href="">消息</a>
                <a href="">动态</a>
                <a href="">大会员</a>
                <a href="">历史</a>
                <a href="">创作中心</a>
            </div>
            <div class="user-right">
                <div class="userDetail">
                    <a href="javascript:;" style="color: white">投稿</a>
                </div>
            </div>
        </div>
    </div>
    <div class="biliLogo">
        <img src="./img/logo.png" width="168px" alt="">
        <span>戳我试试</span>
    </div>
</div>
    <!-- 第一部分 -->
<div class="first-section">
        <div class="f-1">
            <div class="l-1">
                <ul class="l-ul">
                    <li>
                        <a>
                            <div class="fa fa-home circle" style="background-color: #ff5c7c"></div>
                            <p>首页</p>
                        </a>
                    </li>
                    <li>
                        <a>
                            <div class="fa fa-home circle" style="background-color: #ff5c7c"></div>
                            <p>动态</p>
                        </a>
                    </li>
                    <li>
                        <a>
                            <div class="fa fa-fire-alt circle" style="background-color: #ff716d"></div>
                            <p>热门</p>
                        </a>
                    </li>
                    <li>
                        <a>
                            <div class="fa fa-radiation-alt circle" style="background-color: #6dc781"></div>
                            <p>频道</p>
                        </a>
                    </li>
                </ul>
            </div>
            <span class="line"></span>
            <div class="l-2">
                <a href="">
                    <span>动画<em>999+</em></span>
                </a>
                <a href="">
                    <span>音乐<em>999+</em></span>
                </a>
                <a href="">
                    <span>舞蹈<em>999+</em></span>
                </a>
                <a href="">
                    <span>知识<em>999+</em></span>
                </a>
                <a href="">
                    <span>生活<em>999+</em></span>
                </a>
                <a href="">
                    <span>时尚<em>999+</em></span>
                </a>
                <a href="">
                    <span>娱乐<em>999+</em></span>
                </a>
                <a>
                    <span>放映厅<em>999+</em></span>
                </a>
                <a href="">
                    <span>番剧<em>999+</em></span>
                </a>
                <a href="">
                    <span>国创<em>999+</em></span>
                </a>
                <a href="">
                    <span>游戏<em>999+</em></span>
                </a>
                <a href="">
                    <span>科技<em>999+</em></span>
                </a>
                <a href="">
                    <span>鬼畜<em>999+</em></span>
                </a>
                <a href="">
                    <span>资讯<em>999+</em></span>
                </a>
                <a href="">
                    <span>影视<em>999+</em></span>
                </a>
                <a href="">
                    <span>更多<i class="fa fa-angle-down" style="font-size: 16px"></i></span>
                </a>
            </div>
            <span class="line"></span>
            <div class="l-3">
                <ul class="l-3Nav">
                    <li>
                        <a href="">
                            <em class="fab fa-buffer"></em> 专栏
                        </a>
                    </li>
                    <li>
                        <a href="">
                            <em class="fa fa-flag"></em> 活动
                        </a>
                    </li>
                    <li>
                        <a href="">
                            <em class="fa fa-boxes"></em> 小黑屋
                        </a>
                    </li>
                    <li>
                        <a href="">
                            <em class="fa fa-camera"></em> 直播
                        </a>
                    </li>
                    <li>
                        <a href="">
                            <em class="fab fa-hire-a-helper"></em> 课堂
                        </a>
                    </li>
                    <li>
                        <a href="">
                            <em class="fa fa-music"></em> 音乐PLUS
                        </a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
<!-- 第二部分 -->
<div class="second-section">
    <!-- 轮播部分 -->
    <div class="autoShow">
        <div class="autoshow-wrapper">
            <a class="lubo" href="">
                <img src="img/lunbo/lunbo1.avif" />
            </a>
            <a class="lubo" href="">
                <img src="./img/lunbo/lunbo2.avif" />
            </a>
            <a class="lubo" href="">
                <img src="./img/lunbo/lunbo3.avif" />
            </a>
            <a class="lubo" href="">
                <img src="img/lunbo/lunbo4.avif" />
            </a>
            <a class="lubo" href="">
                <img src="./img/lunbo/lunbo5.avif" />
            </a>
        </div>
        <div class="eat">
        </div>
        <button class="prev">❮</button>
        <button class="next">❯</button>
    </div>

    <div class="tuijian">
        <div class="t-1">
            <img src="./img/tuijian/tuijian1.avif" />
            <div class="imgContent">
                <h2>☕️优雅永不过时~♪☕️</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>CJY_e
                    <p class="uppig">56.3w播放</p>
                </div>
            </div>
        </div>
        <div class="t-1">
            <img src="./img/tuijian/tuijian2.avif" />
            <div class="imgContent">
                <h2>我的窝囊人生</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>胡翠翠
                    <p class="uppig">122.7W播放</p>
                </div>
            </div>
        </div>
        <div class="t-1">
            <img src="./img/tuijian/tuijian3.avif" />
            <div class="imgContent">
                <h2>可以点一下封面吗</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>CJY_e
                    <p class="uppig">63.8W播放</p>
                </div>
            </div>
        </div>
        <div class="t-1">
            <img src="./img/tuijian/tuijian4.avif" />
            <div class="imgContent">
                <h2>我爱你</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>aboyzy
                    <p class="uppig">94.6W播放</p>
                </div>
            </div>
        </div>
        <div class="t-1">
            <img src="./img/tuijian/tuijian5.avif" />
            <div class="imgContent">
                <h2>vlog挪威之旅</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>aboyzy
                    <p class="uppig">94.6W播放</p>
                </div>
            </div>
        </div>
        <div class="t-1">
            <img src="./img/tuijian/tuijian6.avif" />
            <div class="imgContent">
                <h2>祝你平安</h2>
                <div class="up-Wrapper">
                    <span class="up">UP</span>aboyzy
                    <p class="uppig">1314W播放</p>
                </div>
            </div>
        </div>

    </div>
</div>
<!--推广部分-->
<div class="first-report-section">
    <div class="f-left-wrapper">
        <div class="f-left-header">
            <div class="fa fa-paper-plane"></div>
            <div style="font-size: 20px; margin-right: 20px">推广</div>
            <div style="font-size: 12px; color: #505050; line-height: 24.8px">
                <span class="fa fa-fire" style="color: #f0361b; font-size: 15px; margin-right: 5px"></span>
                萌系星探官招募中
            </div>
        </div>
        <div class="f-left-content">
            <div>
                <a href="https://www.bilibili.com/bangumi/play/ss43622">
                    <img src="./img/guang/jdgjj.avif" alt="" />
                    <p>间谍过家家</p>
                </a>
                <span class="up" style="color: #99a6c4; margin-top: 15px">番剧</span>日常、搞笑
            </div>
            <div>
                <a href="https://www.bilibili.com/bangumi/play/ss2688">
                    <img src="./img/guang/ms5lm.avif" alt="" />
                    <p>秒速五厘米</p>
                </a>
                <span class="up" style="color: #99a6c4; margin-top: 15px">电影</span> 催泪、日常
            </div>
            <div>
                <a href="https://www.bilibili.com/bangumi/play/ss40028">
                    <img src="./img/guang/zll.avif" alt="" />
                    <p>紫罗兰永恒花园</p>
                </a>
                <span class="up" style="color: #99a6c4; margin-top: 15px">电影</span> 奇幻、爱情
            </div>
            <div>
                <a href="https://www.bilibili.com/bangumi/play/ss12548l">
                    <img src="./img/guang/rzdf.avif" alt="" />
                    <p>让子弹飞</p>
                </a>
                <span class="up" style="color: #99a6c4; margin-top: 15px">电影</span> 励志
            </div>
            <div>
                <a href="">
                    <img src="" alt="" />
                    <p></p>
                </a>
                <span class="up" style="color: #99a6c4; margin-top: 15px"></span>
            </div>

        </div>
    </div>
    <div class="f-right-wrapper">
        <div class="f-right-header">
            <h2>观看列表</h2>
        </div>
        <div class="f-right-content">
            <img src="./img/guang/fenli.avif" style="width: 320px" />
        </div>
    </div>
</div>
<!--分割-->

<div class="reportTitle">
    <img src="./img/fenge.jpg" alt="" srcset="">
</div>
</body>
<script src="./js/index.js"></script>
<script src="./js/banner.js"></script>
</html>

CSS

使用了外部的图标库FA5 这里未进行展示

/* 移除所有元素的默认外边距和内边距 */
* {
    margin: 0; /* 移除所有元素的外边距 */
    padding: 0; /* 移除所有元素的内边距 */
}

/* 顶部整体 */
.vidContainer {
    width: 100%; /* 设置视频容器的宽度为父元素的 100% */
    display: flex; /* 使用 flexbox 布局 */
    justify-content: center; /* 将子元素水平居中对齐 即 视频水平对齐 */
    overflow: hidden; /* 隐藏超出容器的内容  */
}

/* 设置视频的样式 */
.vid {
    position: relative; /* 使用相对定位,使其相对于正常位置进行定位 */
    width: 110%; /* 设置视频的宽度为容器的 110%,确保视频覆盖整个容器 */
    height: 100%; /* 设置视频的高度为容器的 100% */
}

/* 定义顶部导航栏的容器 */
.navContainer {
    /* 绝对定位,使导航栏相对于父元素定位 */
    position: absolute;
    /* 使用 flexbox 布局,将子元素水平排列 */
    display: flex;
    /* 子元素之间的空间均匀分布,两端留空 */
    justify-content: space-between;
    /* 子元素垂直居中对齐 */
    align-items: center;
    /* 设置导航栏宽度为父容器的 100% */
    width: 100%;
    /* 设置导航栏的固定高度 */
    height: 56px;
    /*设置高度为离顶部*/
    top: 10px;
}

/* 定义导航菜单的容器 */
.first-nav {
    /* 使用 flexbox 布局,将导航菜单项水平排列 */
    display: flex;
    /* 设置导航菜单的高度 */
    height: 36px;
    /* 设置导航菜单的最小宽度 */
    min-width: 452px;
    /* 设置导航菜单距离左侧的边距 */
    margin-left: 20px;
}

/* 定义导航菜单项的样式 */
.f-n {
    /* 使用 flexbox 布局,将导航菜单项水平排列 */
    display: flex;
    /* 子元素垂直居中对齐 */
    align-items: center;
    /* 设置字体大小 */
    font-size: 14px;
    /* 设置字体颜色为白色 */
    color: #fff;
    /* 为文字添加阴影效果 */
    text-shadow: 0 1px 1px rgb(0 0 0 / 30%);
}

/* 定义单个导航菜单项的样式 */
.f-n li {
    /* 设置右侧的外边距 */
    margin-right: 12px;
    /* 设置鼠标悬停时显示为指针 */
    cursor: pointer;
    /* 设置文本居中对齐 */
    text-align: center;
    /* 移除左侧的圆点 */
    list-style: none;
}

/* 定义搜索框的容器 */
.searchInput {
    /* 使用 flexbox 布局,将输入框和按钮水平排列 */
    display: flex;
    /* 使用相对定位,使搜索框相对于其正常位置进行调整 */
    position: relative;
    /* 调整搜索框距离左侧的位置 */
    left: -20px;
    /* 设置搜索框的宽度 */
    width: 500px;
    /* 设置搜索框的高度 */
    height: 36px;
}

/* 定义输入框的样式 */
.searchInput input {
    /* 设置输入框的高度 */
    height: 100%;
    /* 设置输入框的宽度占搜索框的 85.99% */
    width: 85.99%;
    /* 移除输入框的轮廓 */
    outline: none;
    /* 设置输入框内边距 */
    padding: 0 38px 0 16px;
    /* 移除输入框的边框 */
    border: 1px solid hsla(0, 0%, 100%, 0);
    /* 设置输入框左上角和右上角的圆角 */
    border-radius: 4px 0 0 4px;
    /* 设置输入框的背景颜色为白色 */
    background-color: #fff;
}

/* 定义搜索按钮的样式 */
.searchBtn {
    /* 设置按钮的宽度占搜索框的 14.11% */
    width: 14.11%;
    /* 设置按钮的高度 */
    height: 100%;
    /* 设置按钮右上角和右下角的圆角 */
    border-radius: 0 4px 4px 0;
    /* 设置按钮的背景颜色 */
    background: #e7e7e7;
    /* 移除按钮的边框 */
    border: 1px solid hsla(0, 0%, 100%, 0);
    /* 设置鼠标悬停时显示为指针 */
    cursor: pointer;
    /* 设置按钮文本居中对齐 */
    text-align: center;
}

/* 定义搜索按钮链接的样式 */
.searchBtn a {
    /* 设置字体颜色 */
    color: #505050;
    /* 设置行高与按钮高度一致 */
    line-height: 36px;
    /* 设置文本居中对齐 */
    text-align: center;
    /* 设置所有属性的线性过渡效果 */
    transition: all linear 0.2s;
    /* 移除下划线 */
    text-decoration: none;
}

/* 定义搜索按钮悬停时的样式 */
.searchBtn a:hover {
    /* 设置悬停时字体颜色 */
    color: #00a1d6;
}

/* 定义用户部分的容器 */
.userSection {
    /* 使用 flexbox 布局,将用户信息部分水平排列 */
    display: flex;
    /* 设置右侧的外边距 */
    margin-right: 20px;
    /* 设置用户部分的高度 */
    height: 36px;
}

/* 定义用户部分左侧的样式 */
.user-left {
    /* 使用 flexbox 布局,将用户信息项水平排列 */
    display: flex;
    /* 子元素垂直居中对齐 */
    align-items: center;
    /* 设置用户部分左侧宽度占 80% */
    width: 80%;
    /* 设置用户部分的高度 */
    height: 100%;
}

/* 定义用户部分左侧链接的样式 */
.user-left a {
    /* 设置字体大小 */
    font-size: 14px;
    /* 设置字体颜色 */
    color: #fff;
    /* 为文字添加阴影效果 */
    text-shadow: 0 1px 1px rgb(0 0 0 / 30%);
    /* 防止文本换行 */
    white-space: nowrap;
    /* 设置左侧的外边距 */
    margin-left: 12px;
    /* 移除下划线 */
    text-decoration: none;
}
.touxaing {
    width: 36px; /* 设置元素的宽度 */
    height: 36px; /* 设置元素的高度 */
    border-radius: 50%; /* 将元素设置为圆形 */
    overflow: hidden; /* 确保内容不溢出边界 */
    margin-right: 10px; /* 设置右侧外边距 */
    cursor: pointer; /* 鼠标悬停时显示为指针 */
    display: flex; /* 使用 flex 布局 */
    align-items: center; /* 垂直居中 */
    justify-content: center; /* 水平居中 */
    background-color: #fff; /* 设置背景颜色 */
}
/* 定义用户部分右侧的样式 */
.user-right {
    /* 使用 flexbox 布局 */
    display: flex;
    /* 移除下划线 */
}
.user-right a {
    text-decoration: none;
}

/* 定义用户详情按钮的样式 */
.userDetail {
    /* 设置用户详情按钮的宽度 */
    width: 100px !important;
    /* 设置用户详情按钮的高度 */
    height: 100%;
    /* 设置背景颜色 */
    background-color: #fb7299;
    /* 设置圆角 */
    border-radius: 2px;
    /* 设置文本居中对齐 */
    text-align: center;
    /* 设置行高与按钮高度一致 */
    line-height: 36px;
    /* 设置左侧的外边距 */
    margin-left: 20px;
}

.biliLogo {
    position: absolute;
    cursor: pointer;
    top: 56px; /* 距离顶部56像素 */
    left: 154.66px; /* 距离浏览器左侧154.66像素 */
}

.biliLogo span {
    position: absolute;
    width: 80px;
    height: 40px;
    line-height: 40px;
    top: 10px;
    text-align: center;
    color: #fff;
    background: url('../img/logoy.png') no-repeat center center;
    background-size: 100%;
    animation: floatmove 2s infinite;
    transition: all 0.3s;
}

/* 第一部分容器样式 */
.first-section {
    display: flex; /* 使用flex布局 */
    width: 1198px; /* 宽度为1630px */
    min-width: 999px; /* 最小宽度为999px */
    height: 108px; /* 高度为108px */
    margin: 0 auto; /* 水平居中 */
}


/* 第一部分内容容器样式 */
.f-1 {
    display: flex; /* 使用flex布局 */
    width: 100%; /* 宽度为100% */
    height: 100%; /* 高度为100% */
    align-items: center; /* 垂直居中 */
}

/* 第一导航栏容器样式 */
.l-1 {
    display: flex; /* 使用flex布局 */
    height: 68px; /* 高度为68px */
}

/* 第一导航栏列表样式 */
.l-ul {
    display: flex; /* 使用flex布局 */
    width: 100%; /* 宽度为100% */
    text-align: center; /* 文本居中对齐 */
    justify-content: space-between; /* 子元素均匀分布 */
}

/* 第一导航栏列表项样式 */
.l-ul li {
    width: 66px; /* 宽度为66px */
    transition: all 0.3s; /* 添加过渡效果 */
    cursor: pointer; /* 鼠标悬停时显示指针 */
    font-size: 14px; /* 字体大小为14px */
    /* 移除左侧的圆点 */
    list-style: none;
    width: 50px;

}

/* 第一导航栏列表项文本样式 */
.l-ul li p {
    transition: color linear 0.2s; /* 文本颜色过渡效果 */
}

/* 第一导航栏列表项悬停样式 */
.l-ul li:hover {
    color: #17a9da; /* 悬停时文本颜色 */
}

/* 第一导航栏列表项链接样式 */
.l-ul li a {
    display: block; /* 显示为块级元素 */
    height: 54px;
}

.l-ul li a div{
    line-height: 36px;
}

/* 导航图标样式 */
.fa-home,
.fa-radiation-alt,
.fa-fire-alt {
    font-size: 20px; /* 字体大小为20px */
    color: white; /* 颜色为白色 */
}

/* 圆形图标容器样式 */
.circle {
    width: 36px; /* 宽度为36px */
    height: 36px;
    line-height: 36px;
    text-align: center; /* 文本居中对齐 */
    border-radius: 50%; /* 圆角半径为50% */
    margin: 0 auto 4px; /* 居中对齐并在底部添加4px的外边距 */
}

/* 第二导航栏容器样式 */
.l-2 {
    position: relative; /* 相对定位 */
    display: flex; /* 使用flex布局 */
    height: 68px; /* 高度为68px */
    top: -5px; /* 顶部偏移 -5px */
    flex-wrap: wrap; /* 子元素换行 */
    flex-direction: column; /* 子元素垂直排列 */
    flex: 1; /* 占据剩余空间 */
    box-sizing: border-box; /* 包括内边距和边框在内计算宽度和高度 */
}

/* 第二导航栏链接样式 */
.l-2 a {
    color: #000; /* 颜色为黑色 */
    height: 34px; /* 高度为34px */
    display: flex; /* 使用flex布局 */
    box-sizing: border-box; /* 包括内边距和边框在内计算宽度和高度 */
    transition: color linear 0.2s; /* 颜色过渡效果 */
    text-decoration: none;
}

/* 第二导航栏链接悬停样式 */
.l-2 a:hover {
    color: #17a9da; /* 悬停时颜色 */
}

/* 第二导航栏文本容器样式 */
.l-2 span {
    display: flex; /* 使用flex布局 */
    /*align-items: center; !* 垂直居中 *!*/
    font-size: 14px; /* 字体大小为14px */
    line-height: 34px; /* 行高为34px */
}

/* 第二导航栏数量样式 */
.l-2 em {
    font-size: 12px; /* 字体大小为12px */
    width: 32px; /* 宽度为32px */
    line-height: 15px; /* 行高为15px */
    height: 15px; /* 高度为15px */
    display: inline-block; /* 显示为行内块级元素 */
    background-color: skyblue; /* 背景颜色为天蓝色 */
    border-radius: 2px; /* 圆角半径为2px */
    color: #fff; /* 颜色为白色 */
    transform: scale(0.85); /* 缩放比例为0.85 */
}

/* 第三导航栏容器样式 */
.l-3 {
    display: flex; /* 使用flex布局 */
    flex-direction: column; /* 子元素垂直排列 */
    width: 220px; /* 宽度为289px */
    height: 68px; /* 高度为68px */
}


/* 第三导航栏列表样式 */
.l-3Nav {
    display: flex; /* 使用flex布局 */
    width: 100%; /* 宽度为100% */
    height: 68px; /* 高度为68px */
    flex-direction: column; /* 子元素垂直排列 */
    font-size: 14px; /* 字体大小为14px */
    flex-wrap: wrap; /* 子元素换行 */
}

/* 第三导航栏列表项样式 */
.l-3Nav li {
    margin-right: 10px; /* 右外边距为10px */
    transition: all 0.5s; /* 添加过渡效果 */
    /* 移除左侧的圆点 */
    list-style: none;
}

/* 第三导航栏列表项悬停样式 */
.l-3Nav li:hover a {
    color: #17a9da; /* 悬停时颜色 */
}

/* 第三导航栏链接样式 */
.l-3Nav a {
    line-height: 34px; /* 行高为34px */
    color: black; /* 颜色为黑色 */
    transition: color linear 0.2s; /* 颜色过渡效果 */
    text-decoration: none;
}

/* 图标样式 */
.fa-buffer {
    color: skyblue; /* 颜色为天蓝色 */
    font-size: 20px; /* 字体大小为20px */
}

.fa-flag {
    color: #f39800; /* 颜色为橙色 */
    font-size: 18px; /* 字体大小为18px */
}

.fa-boxes {
    color: #f39800; /* 颜色为橙色 */
    font-size: 18px; /* 字体大小为18px */
}

.fa-camera {
    font-size: 20px; /* 字体大小为20px */
    color: skyblue; /* 颜色为天蓝色 */
}

.fa-hire-a-helper {
    font-size: 19px; /* 字体大小为19px */
    color: #ffea85; /* 颜色为黄色 */
}

.fa-music {
    font-size: 17px; /* 字体大小为17px */
    color: #ffd469; /* 颜色为浅黄色 */
}

/* 分割线样式 */
.line {
    display: block; /* 显示为块级元素 */
    width: 1px; /* 宽度为1px */
    height: 46px; /* 高度为46px */
    margin: 0 10px; /* 水平外边距为10px */
    background-color: #e7e7e7; /* 背景颜色为浅灰色 */
}

/*轮播图*/
.second-section {
    display: flex;
    justify-content: space-between;
    width: 1198px;
    height: 242px;
    margin: 0 auto;
    margin-bottom: 40px;
}

.autoShow {
    position: relative;
    width: 549px;
    height: 100%;
    background-color: pink;
    opacity: 0;
    transition: opacity 0.2s;
    overflow: hidden;
}

.autoshow-wrapper img {
    width: 550px;
}

.autoshow-wrapper {
    width: 550px;
    position: relative;
}

.autoshow-wrapper a {
    position: absolute;
    transition: transform 0.2s;
}

.eat {
    position: absolute;
    display: flex;
    bottom: 10px;
    right: 15px;
    justify-content: space-between;
    align-items: center;
}

.eat span {
    display: inline-block;
    width: 6px;
    height: 6px;
    border: 2px solid transparent;
    border-radius: 50%;
    background-color: #fff;
    vertical-align: middle;
    cursor: pointer;
    transition: all 0.2s;
    margin-left: 10px;
    z-index: 10;
    transition: all linear 0.2s;
}


.eat span:hover {
    transform: scale(1.2);
    border: 2px solid #fff;
    background-color: #00a1d6;
}


.autoShow .eat span.on {
    border: 0;
    border-color: transparent;
    background-color: transparent;
    background-image: url(../img/lunbo/pointer.png);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    transform: scale(3);
}

/* 左右切换按钮样式 */
button.prev, button.next {
    position: absolute;
    top: 50%;
    width: auto;
    padding: 16px;
    margin-top: -22px;
    color: white;
    font-weight: bold;
    font-size: 18px;
    background-color: rgba(0, 0, 0, 0.5);
    border: none;
    cursor: pointer;
    opacity: 0.5; /* 设置按钮初始透明度 */
    transition: background-color 0.3s, opacity 0.3s;
    border-radius: 20%; /* 设置按钮为弧形 */
}

button.prev {
    left: 0;
}

button.next {
    right: 0;
}

button.prev:hover, button.next:hover {
    background-color: rgba(0, 0, 0, 0.8);
    opacity: 1; /* 悬停时设置透明度 */
}


.tuijian {
    width: 674px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    overflow: hidden;
}

.tuijian img {
    width: 206px;
    height: 116px;
}

.t-1 {
    margin-left: 10px;
    position: relative;
    margin-bottom: 10px;
    overflow: hidden;
}

.imgContent {
    position: absolute;
    color: #fff;
    padding: 27px 5px 10px 10px;
    width: 100%;
    height: 100%;
    left: 0;
    top: 65px;
    font-weight: 500;
    text-align: left;
    font-size: 14px;
    transition: all 0.2s;
    white-space: nowrap;
    cursor: pointer;
}

.imgContent h2{
    font-size: 100%;
    vertical-align: baseline;
    font: inherit;
}

.up-Wrapper {
    width: 100%;
    height: 80px;
    position: absolute;
    bottom: 0;
    color: #dadad5;
    font-size: 12px;
    font-weight: 700;
}
.up {
    font-size: 12px;
    transform: scale(0.8);
    line-height: 10px;
    font-weight: 600;
    text-align: center;
    width: 17px;
    height: 10px;
    border-radius: 3px;
    color: #dadad5;
    border: 2px solid #dadad5;
}
.uppig {
    color: #dadad5;
    font-size: 14px;
    font-weight: 400;
}
.t-1:hover .imgContent {
    top: 0;
    background-color: rgba(0, 0, 0, 0.6);
}
/*推广部分*/
.first-report-section {
    display: flex;
    width: 1202px;
    justify-content: space-between;
    margin: 0 auto;
    margin-bottom: 20px;
}

.f-left-wrapper {
    width: 864px;
    height: 100%;
    overflow: hidden;
}

.f-left-header {
    display: flex;
    margin-bottom: 20px;
}

.fa-paper-plane {
    font-size: 25px;
    color: #ffd778;
    margin-right: 10px;
}

.f-left-content {
    height: 170px;
    display: flex;
    overflow: hidden;
}

.f-left-content a {
    text-decoration: none;
}

.f-left-content div a  img{
    transition: transform 0.3s ease;
}

.f-left-content div a img:hover{
    transform: scale(1.05);
}

.f-left-content  a p:hover{
    color: #7ecdf4;
}

.f-left-content img {
    width: 206px;
    height: 116px;
}

.f-left-content div {
    margin-right: 10px;
    font-size: 14px;
    color: #999999;
    cursor: pointer;
}

.f-left-content div p {
    margin-top: 10px;
    color: #212121;
}

.f-right-wrapper {
    width: 321px;
    height: 100%;
}

.f-right-header {
    position: relative;
    top: -5px;
    cursor: pointer;
    width: 320px;
    height: 30px;
    background-color: #f4f4f4;
    border: 1px solid #e7e7e7;
    text-align: center;
    font-size: 12px;
    line-height: 30px;
    transition: color 0.2s;
    margin-bottom: 12px;
}

.f-right-header:hover {
    color: #7ecdf4;
}

.f-right-header h2{
    font-size: 12px;
    font: inherit;
}

.f-right-content img {
    width: 320px;
    height: 184px;
}

.reportTitle{
    width: 1202px;
    margin: 0 auto;
    margin-bottom: 20px;
}
.reportTitle img{
    width: 100%;
    height: 99px;
}



JS

主要有两个分别实现了轮播图和点击图片切换的作用

//头部图片偏移功能
const vidContainer = document.querySelector(".vidContainer");
const vid = document.querySelector(".vid");

vidContainer.addEventListener("mouseenter", function (e) {
    this.x = e.clientX;
    vid.style.transition = "none";
});
vidContainer.addEventListener("mousemove", function (e) {
    this._x = e.clientX;
    const disx = this._x - this.x;
    const move = 0 - disx / -30;
    vid.style.transform = "translate(" + move + "px, 0px)";
});
vidContainer.addEventListener("mouseleave", function (e) {
    vid.style.transition = ".3s ";
    vid.style.transform = "translate(0,0)";
});

// bilibili logo

let logo = document.querySelector(".biliLogo");
let srcs = document.querySelector(".vid");
let indexPointer = 0;
const lens = 4;
logo.onclick = function () {
    if (indexPointer > lens - 1) {
        indexPointer = 0;
    } else if (indexPointer == 0) {
        srcs.src = "../img/banner/2.webm";
        indexPointer++;
    } else if (indexPointer == 1) {
        srcs.src = "../img/banner/3.webm";
        indexPointer++;
    } else if (indexPointer == 2) {
        srcs.src = "../img/banner/4.webm";
        indexPointer++;
    } else if (indexPointer == 3) {
        srcs.src = "../img/banner/headbanner.webm";
        indexPointer++;
    }
};
//轮播图
document.addEventListener('DOMContentLoaded', function() {
    // 获取所有轮播图项目
    let items = document.querySelectorAll('.lubo');
    // 获取轮播图按钮的容器
    let eat = document.querySelector('.eat');
    // 设置当前活动项目索引
    let active = 0;
    // 定时器变量
    let timer;

    // 根据轮播图项目的数量动态生成按钮
    for (let i = 0; i < items.length; i++) {
        // 创建按钮元素
        let span = document.createElement('span');

        // 设置第一个按钮为选中状态
        if (i === 0) {
            span.classList.add('on');
        } else {
            // 将其他项目移到屏幕右边
            items[i].style.transform = 'translate3d(550px, 0, 0)';
        }

        // 将按钮添加到容器中
        eat.appendChild(span);

        // 为每个按钮添加点击事件监听器
        span.addEventListener('click', function() {
            // 清除定时器
            clearInterval(timer);

            // 如果点击的不是当前活动项目
            if (i !== active) {
                clearOn();
                span.classList.add('on');
            }

            // 更新索引
            index = i;
            // 切换轮播图
            changeSlider(i);
            // 更新活动项目索引
            active = i;

            // 重新启动自动播放
            autoShow();
        });
    }

    // 切换轮播图函数
    function changeSlider(newVal) {
        for (let i = 0; i < items.length; i++) {
            if (i < newVal) {
                // 将项目移到屏幕左边
                items[i].style.transform = 'translate3d(-550px, 0, 0)';
            } else if (i > newVal) {
                // 将项目移到屏幕右边
                items[i].style.transform = 'translate3d(550px, 0, 0)';
            } else {
                // 显示当前项目
                items[i].style.transform = 'translate3d(0, 0, 0)';
            }
        }
    }

    // 当前索引
    let index = 0;
    // 获取所有按钮
    let spans = document.querySelectorAll('.eat span');

    // 清除所有按钮的选中状态
    function clearOn() {
        spans.forEach(span => span.classList.remove('on'));
    }

    // 自动播放函数
    function autoShow() {
        timer = setInterval(function() {
            if (index >= items.length) {
                index = 0;
            }
            clearOn();
            changeSlider(index);
            spans[index].classList.add('on');
            index++;
        }, 2500);
    }

    // 启动自动播放
    autoShow();

    // 设置轮播图的初始透明度
    setTimeout(function() {
        document.querySelector('.autoShow').style.opacity = '1';
    }, 420);

    // 左右切换按钮功能
    document.querySelector('.prev').addEventListener('click', function() {
        clearInterval(timer);
        index = (index - 1 + items.length) % items.length;
        clearOn();
        changeSlider(index);
        spans[index].classList.add('on');
        autoShow();
    });

    document.querySelector('.next').addEventListener('click', function() {
        clearInterval(timer);
        index = (index + 1) % items.length;
        clearOn();
        changeSlider(index);
        spans[index].classList.add('on');
        autoShow();
    });
});



// 获取当前轮播图的五张图片
let items = document.querySelectorAll('.lubo');

let tigger = $('.tigger');

// console.log(spans)
let active = 0;
let timer ;

// 根据轮播图的数量动态生成按钮

for(let i =0 ; i<items.length;i++){
    let span = document.createElement('span');

    if(i===0){
        span.setAttribute('class','on');
    }else{
        items[i].setAttribute('style','transform:translate3d(550px,0px,0px)');
    }
    tigger.append(span);
    // 为span创建单击响应事件
    span.onclick = function(){
        clearInterval(timer);
        // alert(1)
        // 判断当前是第几个
        if(i!==active){
            clearOn();
            span.setAttribute('class','on');
        }
        index = i;
        changeSilder(i);
        active = i;

        autoShow();
    }
}

function changeSilder(newVal){

    for(let i = 0;i<items.length;i++){

        if(i < newVal){
            items[i].setAttribute('style','transform:translate3d(-550px,0px,0px)');
        }else if(i > newVal){
            items[i].setAttribute('style','transform:translate3d(550px,0px,0px)');
        }else{
            items[i].setAttribute('style','transform:translate3d(0px,0px,0px)');
        }


    }


}


var index = 0;
let spans = $('.tigger span');


function clearOn(){
    for(let c = 0;c<items.length;c++){
        spans[c].className = '';
    }
}
function autoShow(){
    timer = setInterval(function(){
        if(index > items.length-1){
            index=0;
        }
        clearOn();
        changeSilder(index);
        spans[index].className='on';
        index++;

    },2500)
}
// autoShow()

setTimeout(function(){
    $('.autoShow').css('opacity','1');

},420)



下载地址 :蓝奏云