课程代码
index.html
index.html
html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>哔哩哔哩 (゜-゜)つロ 干杯~-bilibili</title>
<meta
name="description"
content="哔哩哔哩(bilibili.com)是国内知名的视频弹幕网站,这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。大家可以在这里找到许多欢乐。" />
<link rel="stylesheet" href="./css/base.css" />
<link rel="stylesheet" href="./css/index.css" />
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
<script src="./js/iconpark.js"></script>
</head>
<body>
<!-- 头部 -->
<div class="large-header">
<!-- 导航 -->
<div class="bili-nav">
<!-- 左侧入口 -->
<ul class="left-entry">
<li>
<a href="#" class="left-entry__link">
<svg class="iconpark-icon">
<use href="#shou-ye"></use>
</svg>
<span class="left-entry__text">首页</span>
</a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">番剧</span></a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">直播</span></a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">游戏中心</span></a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">会员购</span></a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">漫画</span></a>
</li>
<li>
<a href="#" class="left-entry__link"><span class="left-entry__text">赛事</span></a>
</li>
<li>
<a href="#" class="left-entry__link">
<svg class="iconpark-icon">
<use href="#xia-zai-ke-hu-duan"></use>
</svg>
<span class="left-entry__text">下载客户端</span></a
>
</li>
</ul>
<!-- 中间搜索区域 -->
<div class="center-search">
<div class="center-search__content">
<input type="text" class="center-search__input" placeholder="搜索" />
</div>
<div class="center-search__button">
<svg class="iconpark-icon">
<use href="#sou-suo-an-niu"></use>
</svg>
</div>
</div>
<!-- 右侧入口-->
<ul class="right-entry">
<li class="right-entry__avatar header-avatar">
<a href="#"><span>登录</span></a>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#da-hui-yuan"></use>
</svg>
<span>大会员</span></a
>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#xiao-xi"></use>
</svg>
<span>消息</span></a
>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#dong-tai"></use>
</svg>
<span>动态</span></a
>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#shou-cang"></use>
</svg>
<span>收藏</span></a
>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#li-shi"></use>
</svg>
<span>历史</span></a
>
</li>
<li class="right-entry__item">
<a href="#">
<svg class="iconpark-icon">
<use href="#chuang-zuo-zhong-xin"></use>
</svg>
<span>创作中心</span></a
>
</li>
<li class="right-entry__upload">
<a href="#">
<svg class="iconpark-icon">
<use href="#tou-gao"></use>
</svg>
<span>投稿</span></a
>
</li>
</ul>
</div>
<!-- banner -->
<div class="bili-banner">
<img class="bili-banner__image" src="./img/header-banner.webp" alt="" />
<div class="bili-banner__logo">
<a href="#"><img src="./img/logo.png" alt="" /></a>
</div>
<div class="bili-banner__mask"></div>
</div>
<!-- 频道 -->
<div class="bili-channel">
<!-- 左侧频道列表图标 -->
<div class="left-channel-icons">
<a href="#">
<div class="left-channel-icons__icon-bg left-channel-icons__icon-bg--dynamic">
<svg class="iconpark-icon">
<use href="#dong-tai"></use>
</svg>
</div>
<span class="left-channel-icons__icon-title">动态</span>
</a>
<a href="#">
<div class="left-channel-icons__icon-bg left-channel-icons__icon-bg--popular">
<svg class="iconpark-icon">
<use href="#re-men"></use>
</svg>
</div>
<span class="left-channel-icons__icon-title">热门</span>
</a>
<a href="#">
<div class="left-channel-icons__icon-bg left-channel-icons__icon-bg--channel">
<svg class="iconpark-icon">
<use href="#pin-dao"></use>
</svg>
</div>
<span class="left-channel-icons__icon-title">频道</span>
</a>
</div>
<!-- 右侧频道内容 -->
<div class="right-channel-container">
<!-- 左侧网格 -->
<div class="right-channel-container__left">
<a href="#">番剧</a>
<a href="#">国创</a>
<a href="#">综艺</a>
<a href="#">动画</a>
<a href="#">鬼畜</a>
<a href="#">舞蹈</a>
<a href="#">娱乐</a>
<a href="#">科技</a>
<a href="#">美食</a>
<a href="#">汽车</a>
<a href="#">运动</a>
<a href="#">电影</a>
<a href="#">电视剧</a>
<a href="#">纪录片</a>
<a href="#">游戏</a>
<a href="#">音乐</a>
<a href="#">影视</a>
<a href="#">知识</a>
<a href="#">资讯</a>
<a href="#">生活</a>
<a href="#">时尚</a>
<a href="#">
<span>更多</span>
<svg class="iconpark-icon">
<use href="#geng-duo"></use>
</svg>
</a>
</div>
<!-- 右侧网格 -->
<div class="right-channel-container__right">
<a href="#">
<svg class="iconpark-icon">
<use href="#zhuan-lan"></use>
</svg>
<span class="title">专栏</span>
</a>
<a href="#">
<svg class="iconpark-icon">
<use href="#zhi-bo"></use>
</svg>
<span class="title">直播</span>
</a>
<a href="#">
<svg class="iconpark-icon">
<use href="#huo-dong"></use>
</svg>
<span class="title">活动</span>
</a>
<a href="#">
<svg class="iconpark-icon">
<use href="#ke-tang"></use>
</svg>
<span class="title">课堂</span>
</a>
<a href="#">
<svg class="iconpark-icon">
<use href="#she-qu-zhong-xin"></use>
</svg>
<span class="title">社区中心</span>
</a>
<a href="#">
<svg class="iconpark-icon">
<use href="#xin-ge-re-bang"></use>
</svg>
<span class="title">新歌热榜</span>
</a>
</div>
</div>
</div>
</div>
<!-- 主体 -->
<div class="main">
<!-- 推荐列表 -->
<div class="recommended-container">
<!-- 轮播图 -->
<div class="carousel">
<img src="./img/carousel1.webp" alt="" />
<div class="carousel__mask"></div>
<div class="carousel__tools">
<a href="#">勇度感动回归!星爵兄妹重逢</a>
<ul class="carousel__indicators">
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator carousel__indicator--active"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
<li class="carousel__indicator"></li>
</ul>
<div class="carousel__buttons">
<button class="carousel__button carousel__button--prev">
<svg class="iconpark-icon">
<use href="#zuo-jian-tou"></use>
</svg>
</button>
<button class="carousel__button carousel__button--next">
<svg class="iconpark-icon">
<use href="#you-jian-tou"></use>
</svg>
</button>
</div>
</div>
</div>
<!-- 推荐卡片列表 -->
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-01.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#"
>钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联
6》钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a
>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-02.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-03.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-04.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-05.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-06.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-01.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-02.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-03.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-04.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-05.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-06.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-01.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-02.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
<div class="recommended-card">
<!-- 视频封面 -->
<a href="#">
<div class="recommended-card__image">
<img src="./img/web-home-common-cover-03.webp" alt="" />
<div class="recommended-card__mask">
<div class="recommended-card__stats">
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#bo-fang-liang"></use>
</svg>
<span class="recommended-card__count">10.5 万</span>
</div>
<div class="recommended-card__stat">
<svg class="iconpark-icon">
<use href="#dan-mu-shu"></use>
</svg>
<span class="recommended-card__count">128</span>
</div>
</div>
<div class="recommended-card__duration">03:16</div>
</div>
</div>
</a>
<!-- 视频信息 -->
<div class="recommended-card__info">
<h3 class="recommended-card__title">
<a href="#">钢铁侠、美队确认回归!托比蜘蛛侠,金刚狼领衔主演《复联 6》</a>
</h3>
<div class="recommended-card__meta">
<a href="#">
<svg class="iconpark-icon">
<use href="#up"></use>
</svg>
<span class="recommended-card__author">努力的 Lorre</span>
<span class="recommended-card__date">· 11-07</span>
</a>
</div>
</div>
</div>
</div>
<!-- 侧边栏滚动按钮 -->
<div class="sidebar">
<div class="sidebar-btn sidebar-btn--area">
<svg class="iconpark-icon">
<use href="#fen-qu"></use>
</svg>
<span class="sidebar-btn__text">分区</span>
</div>
<div class="sidebar-btn sidebar-btn--old">回到旧版</div>
<div class="sidebar-btn sidebar-btn--service">
<svg class="iconpark-icon">
<use href="#ke-fu"></use>
</svg>
<span class="sidebar-btn__text">客服</span>
</div>
<div class="sidebar-btn sidebar-btn--beta">前往内测</div>
<div class="sidebar-btn sidebar-btn--top">
<svg class="iconpark-icon">
<use href="#ding-bu"></use>
</svg>
<span class="sidebar-btn__text">顶部</span>
</div>
</div>
</div>
</body>
</html>base.css
base.css
css
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
a {
text-decoration: none;
color: #000;
cursor: pointer;
}
a:focus,
a:hover,
a:active {
/* 去除轮廓 */
outline: none 0;
}
body {
/* background-color: skyblue; */
font-size: 14px;
}
.iconpark-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
input {
/* 去掉边框 */
border: 0 none;
/* 去除聚焦时的轮廓 */
outline-style: none;
}
img {
/* 使图片在垂直方向上与周围的元素居中对齐,从而去除图片的默认上下间距 */
vertical-align: middle;
}
button {
/* 去除按钮的边框 */
border: none;
/* 去除聚焦时的轮廓 */
outline: none;
}index.css
index.css
css
/**
* 导航区域
*/
.bili-nav {
display: flex;
align-items: center;
width: 100%;
padding: 0 24px;
box-sizing: border-box;
}
/**
* 左侧入口
*/
.left-entry {
display: flex;
}
.left-entry__link {
display: flex;
align-items: center;
height: 64px;
color: #fff;
margin-right: 15px;
svg {
margin-right: 6px;
width: 18px;
height: 18px;
fill: none;
overflow: hidden;
}
}
/**
* 中间搜索区域
*/
.center-search {
/* 在主轴方向上的增长比例,值为 1 表示占满整个可用空间,用于实现自适应宽度的布局效果 */
flex: 1;
height: 40px;
padding: 0 48px 0 4px;
border-radius: 8px;
border: 1px #e3e5e7 solid;
background-color: #f1f2f3;
display: flex;
align-items: center;
position: relative;
&:hover {
background-color: #fff;
}
}
.center-search__content {
display: flex;
height: 20px;
width: 100%;
padding: 0 8px;
}
.center-search__input {
flex: 1;
background-color: transparent;
line-height: 20px;
overflow: hidden;
padding-right: 8px;
}
.center-search__button {
position: absolute;
top: 4px;
right: 7px;
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
line-height: 32px;
border-radius: 6px;
cursor: pointer;
transition: background-color 0.5s ease-in-out;
&:hover {
background-color: #e3e4e5;
}
svg {
width: 17px;
height: 17px;
}
}
/**
* 右侧入口
*/
.right-entry {
margin-left: 10px;
display: flex;
align-items: center;
}
.right-entry__avatar {
width: 50px;
height: 50px;
padding-right: 10px;
position: relative;
a {
position: absolute;
top: 6px;
left: 10px;
width: 36px;
height: 36px;
line-height: 36px;
border-radius: 50%;
background-color: #00aeec;
display: flex;
justify-content: center;
border: 2px #ffffff solid;
}
}
.right-entry__item {
min-width: 50px;
margin-right: 4px;
a {
display: flex;
flex-direction: column;
align-items: center;
color: #ffffff;
svg {
width: 20px;
height: 20px;
}
span {
font-size: 13px;
}
}
}
.right-entry__upload {
a {
display: flex;
align-items: center;
justify-content: center;
margin-left: 10px;
width: 90px;
height: 34px;
line-height: 34px;
border-radius: 8px;
color: #ffffff;
background-color: #fb7299;
}
span {
margin-left: 5px;
}
}
/**
* banner 区域
*/
.bili-nav {
/* 元素被放置在其包含块的顶部 */
position: absolute;
top: 0;
/* 元素将在页面上的大多数其他元素之上 */
z-index: 1000;
}
.bili-banner {
/* 设置元素的定位方式为相对定位。相对定位元素的定位是相对于其在正常流中的初始位置 */
position: relative;
width: 100%;
height: 155px;
overflow: hidden;
}
.bili-banner__image {
/* 设置为绝对定位,覆盖整个.bili-banner 元素,并使用 object-fit 属性来等比例缩放图片 */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* 图片等比例缩放:替换内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比不匹配内容框的宽高比,那么该对象将被剪裁以填充内容框 */
object-fit: cover;
}
.bili-banner__logo {
/* 使用 flexbox 布局将元素放置在元素底部,并设置宽度和高度以及内边距 */
display: flex;
align-items: flex-end;
width: 100%;
height: 100%;
padding: 0 64px;
a {
/* 设置为相对定位,并设置宽度和高度以及下边距 */
position: relative;
width: 162px;
height: 78px;
margin-bottom: 18px;
}
}
.bili-banner__mask {
/* 设置为绝对定位,并覆盖整个.bili-banner 元素,并使用线性渐变设置背景 */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(rgba(0, 0, 0, 0.4), transparent);
}
/**
* 频道区域
*/
.bili-channel {
display: flex;
align-items: center;
height: 110px;
padding: 0 60px;
}
/**
* 左侧频道列表图标
*/
.left-channel-icons {
display: flex;
a {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-right: 24px;
}
}
.left-channel-icons__icon-bg {
display: flex;
align-items: center;
justify-content: center;
width: 46px;
height: 46px;
border-radius: 50%;
margin-bottom: 6px;
svg {
width: 25px;
height: 25px;
}
}
.left-channel-icons__icon-bg--dynamic {
background-color: #ff9212;
}
.left-channel-icons__icon-bg--popular {
background-color: #f07775;
}
.left-channel-icons__icon-bg--channel {
background-color: #59ca73;
}
/**
* 右侧频道内容
*/
.right-channel-container {
display: flex;
width: 100%;
}
/* 左侧网格 */
.right-channel-container__left {
display: grid;
grid-template-columns: repeat(11, 1fr);
gap: 10px;
width: 100%;
a {
height: 26px;
line-height: 26px;
color: #61666d;
background-color: #f6f7f8;
border: 1px #f1f2f3 solid;
border-radius: 6px;
text-align: center;
}
}
/* 右侧网格 */
.right-channel-container__right {
flex-shrink: 0;
display: grid;
/* grid-template-columns: repeat(3, 1fr); */
grid-template-rows: repeat(2, 1fr);
grid-auto-flow: column;
row-gap: 10px;
width: 240px;
margin-left: 30px;
border-left: 1px solid #e3e5e7;
a {
display: flex;
align-items: center;
justify-content: flex-end;
width: 100%;
height: 28px;
letter-spacing: 2px;
}
svg {
width: 20px;
height: 20px;
margin-right: 4px;
fill: #61666d;
}
span {
color: #61666d;
}
}
/**
* 主体
*/
.main {
width: 100%;
padding: 0 60px;
box-sizing: border-box;
}
/**
* 轮播图
*/
.carousel {
position: relative;
grid-row: 1/3;
grid-column: 1/3;
border-radius: 6px;
overflow: hidden;
img {
width: 100%;
}
}
/* 轮播图遮罩层 */
.carousel__mask {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 392px;
border-radius: 6px;
background: linear-gradient(0, #524c46 23%, transparent 35%);
}
/* 轮播图工具栏 */
.carousel__tools {
position: absolute;
left: 0;
bottom: 94px;
width: 100%;
padding: 0 15px;
box-sizing: border-box;
a {
display: flex;
margin-bottom: 10px;
font-size: 18px;
color: #fff;
}
}
/* 轮播图指示器列表 */
.carousel__indicators {
display: flex;
}
.carousel__indicator {
width: 8px;
height: 8px;
margin: 4px;
border-radius: 50%;
background-color: #fff6;
cursor: pointer;
}
.carousel__indicator--active {
width: 14px;
height: 14px;
margin: 1px;
background-color: #fff;
}
/* 轮播图按钮区域 */
.carousel__buttons {
position: absolute;
right: 15px;
bottom: 23px;
}
.carousel__button {
width: 28px;
height: 28px;
border-radius: 8px;
margin-right: 8px;
display: inline-flex;
align-items: center;
justify-content: center;
background-color: #ffffff1a;
border: none;
cursor: pointer;
}
.carousel__button--next {
margin-right: 0;
}
.carousel__button svg {
width: 12px;
height: 12px;
color: #fff;
}
/**
* 推荐列表
*/
.recommended-container {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 20px;
width: 100%;
}
/* 视频封面图片区 */
.recommended-card a {
transition: color 0.2s linear;
cursor: pointer;
}
.recommended-card a:hover {
color: #00aeec;
}
.recommended-card__image {
position: relative;
border-radius: 6px;
overflow: hidden;
}
.recommended-card__image img {
width: 100%;
height: 100%;
vertical-align: middle;
}
/* 视频封面遮罩层 */
.recommended-card__mask {
position: absolute;
left: 0;
bottom: 0;
padding: 16px 8px 6px;
box-sizing: border-box;
width: 100%;
height: 38px;
background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%);
color: #fff;
font-size: 13px;
display: flex;
align-items: center;
}
.recommended-card__stats {
flex: 1;
display: flex;
align-items: center;
}
.recommended-card__stat {
display: flex;
align-items: center;
margin-right: 12px;
}
.recommended-card__mask svg {
width: 18px;
height: 18px;
color: #fff;
margin-right: 2px;
}
/* 视频信息区 */
.recommended-card__info {
margin-top: 10px;
}
.recommended-card__title {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
line-break: anywhere;
padding-right: 16px;
line-height: 22px;
font-size: 15px;
overflow: hidden;
font-weight: 500;
color: #18191c;
}
.recommended-card__meta {
margin-top: 4px;
display: flex;
font-size: 13px;
}
.recommended-card__meta a {
color: #9499a0;
display: flex;
align-items: center;
}
.recommended-card__meta svg {
width: 17px;
height: 17px;
margin-right: 2px;
}
.recommended-card__date {
margin-left: 4px;
}
/**
* 侧边栏滚动按钮
*/
.sidebar {
position: fixed;
right: 12px;
bottom: 40px;
}
.sidebar-btn {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
flex-wrap: wrap;
width: 40px;
margin-top: 6px;
padding: 8px 0 6px;
box-sizing: border-box;
border: 1px solid #e3e5e7;
border-radius: 8px;
background-color: #fff;
font-size: 12px;
text-align: center;
cursor: pointer;
svg {
width: 24px;
height: 24px;
}
}
.sidebar-btn--old,
.sidebar-btn--beta {
padding: 4px;
}
.sidebar-btn--top {
margin-top: 12px;
svg {
width: 15px;
height: 8px;
}
}
.sidebar-btn__text {
margin-top: 2px;
}