实战!小白切图,手把手教你完成音乐播放器页面

前言

今天我们就来手把手教你如何用代码实现音乐播放器页面。如果我们想要找到一个好工作的话,只会切图是不够的,但是不能不会切图,切图虽然基础,但是是一定要学会的。

首先,我们先来看看今天的任务图

先来给大家看看我们实现的效果吧:

架构规划

首先,我们先来写html部分,我们需要先确定任务图的结构,如果大家看了我以前的文章的话,一定会想到用BEM命名法

想要具体了解BEM命名的小伙伴们可以看我以前的文章 点击这里BEM命名规范

我们将整张页面看成music,然后我们观察一下,发现可以将整张页面分为上下两部分,music__head,music__body

接下来我们对music__head进行划分,将箭头和正在播放分为music__head-title,背景图片为bg,因为此时图片只有一张,尽管我们不用BEM规范,也不会出问题

接下来我们来划分music__body,我们观察一下,可以将body分为五个部分

  • music-pic
  • music-desc
  • music-line
  • music-play
  • music-model

大的框架我们已经分完了,然后框内的小元素大家自行添加进去就行了

这里附上html代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css">
    <link rel="stylesheet" href="https://at.alicdn.com/t/c/font_4310349_zr9mgjtohx.css">
</head>
<body>
        <div class="music">
            <div class="music__head">
                <div class="bg"></div>
                <div class="music__head--title">
                    <div class="back">
                        <i class="iconfont icon-zuojiantou"></i>
                    </div>
                    <div class="title">正在播放</div>
                </div>
            </div>
            <div class="music__body">
                <div class="body-pic" >
                    <img src="https://i0.hdslb.com/bfs/archive/c5e0392db23dada41b8ff5e052881abd7bb59d60.jpg">
                </div>
                <div class="body-desc">
                    <p class="name">说好不哭</p>
                    <p class="author">周杰伦</p>
                </div>
                <div class="body-line">
                    <div class="line-left"></div>
                    <div class="line-right"></div>
                    <div class="op-left">02:41</div>
                    <div class="ed-right">04:41</div>
                </div>
                <div class="body-play">
                    <div class="suijibofang">
                        <i class="iconfont icon-suijibofang"></i>
                    </div>
                    <div class="shangyiqu">
                        <i class="iconfont icon-shangyigeshangyiqu"></i>
                    </div>
                    <div class="bofang">
                        <i class="iconfont icon-bofang1"></i>
                    </div>
                    <div class="xiayiqu">
                        <i class="iconfont icon-xiayigexiayiqu"></i>
                    </div>
                    <div class="xihuan">
                        <i class="iconfont icon-xihuan1"></i>
                    </div>
                </div>
                <div class="body-model">
                    <div class="hq">
                        <i class="iconfont icon-yinzhi-sq"></i>
                    </div>
                    <div class="sq">
                        <i class="iconfont icon-yinzhi-hq"></i>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    

这里给大家推荐一个网站,这个网站上有各种各样的小图标,当我们做页面时,很多小图标都可以从上面获取[:iconfont-阿里巴巴矢量图标库]

在我们这个例子中,如上框出的图标都是在以上网站中获得,十分的方便。教你们如何获得想要的图片,比如我们想要获得左箭头,就直接搜索

选择我们想要的箭头,加入购物车

点击添加至项目

如果你没项目的话,点击加入项目旁的+号,添加项目

选择Font class ,点击复制代码

接下来,我们在html的head中加入css样式,如下

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css">
    <link rel="stylesheet" href="https://at.alicdn.com/t/c/font_4310349_zr9mgjtohx.css">
    //href 后输入刚刚复制的代码
</head>

然后我们在music__head中将此类名写进去,如下

这样箭头就可以显示出来了

接下来我们来看看CSS怎么写

CSS

首先,先附上代码

css 复制代码
/* 通用样式,清除所有元素的默认外边距和内边距 */
* {
    margin: 0;
    padding: 0;
}

/* 页面头部样式 */
.music__head {
    position: relative;
    height: 303px;
    overflow: auto; /* 设置为BFC容器,清除浮动 */
}

/* 页面头部背景样式 */
.music__head .bg {
    width: 100%;
    height: 100%;
    background: url(https://i0.hdslb.com/bfs/archive/c5e0392db23dada41b8ff5e052881abd7bb59d60.jpg);
    background-size: 100% 100%;
    filter: blur(7px); /* 设置背景虚化 */
    position: absolute;
    z-index: -1; /* 将虚化背景放到最下面 */
}

/* 页面标题样式 */
.music__head--title {
    margin: 45px 0;
    color: rgb(1, 0, 0);
    padding: 0 40px;
}

/* 返回按钮样式 */
.back {
    float: left;
    width: 17px;
    height: 31px;
}

/* 标题样式 */
.title {
    text-align: center;
    font-size: 12px;
}

/* 主体部分样式 */
.music__body {
    width: 100%;
    /* calc用于计算函数,设置高度为用户屏幕高度减去130px */
    height: calc(100vh - 130px);
    background-color: aliceblue;
    position: absolute;
    top: 130px;
    border-top-right-radius: 32px; /* 设置右上圆角 */
    border-top-left-radius: 32px; /* 设置左上圆角 */
}

/* 图片容器样式 */
.body-pic {
    width: 257px;
    height: 283px;
    overflow: hidden; /* 超出则隐藏,防止图片变形 */
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 40px;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: -39px;
    box-shadow: 0 0 20px #fff;
}

/* 图片样式 */
.body-pic img {
    height: 100%;
}

/* 描述文本样式 */
.body-desc {
    margin-top: 280px;
    text-align: center;
}

/* 名称文本样式 */
.body-desc .name {
    font-size: 21px;
    margin-bottom: 2px;
}

/* 右侧分隔线样式 */
.line-right {
    position: absolute;
    width: 277px;
    height: 0;
    border: 2px solid #C6C6C6;
    margin-top: 44px;
    margin-left: 50px;
}

/* 左侧分隔线样式 */
.line-left {
    position: absolute;
    height: 0;
    margin-left: 50px;
    margin-top: 43px;
    width: 118px;
    border: 3px solid red;
    z-index: 1;
}

/* 左侧操作样式 */
.op-left {
    position: absolute;
    width: 20px;
    height: 6px;
    font-size: 8px;
    font-weight: bold;
    font-family: SourceHanSansCN;
    color: #9EA0AD;
    line-height: 26px;
    margin-top: 45px;
    margin-left: 50px;
}

/* 右侧编辑样式 */
.ed-right {
    position: absolute;
    width: 20px;
    height: 6px;
    font-size: 8px;
    font-family: SourceHanSansCN;
    font-weight: bold;
    color: #9EA0AD;
    line-height: 26px;
    margin-top: 45px;
    margin-left: 315px;
}
css 复制代码
/* 通用样式,清除所有元素的默认外边距和内边距 */
* {
    margin: 0;
    padding: 0;
}

这个规则适用于所有HTML元素,将它们的外边距和内边距设置为零,以清除页面中可能存在的默认间距。

css 复制代码
/* 页面头部样式 */
.music__head {
    position: relative;
    height: 303px;
    overflow: auto; /* 设置为BFC容器,清除浮动 */
}

这个规则定义了页面头部的样式。music__head类的元素被定位为相对定位,高度设置为303像素,并启用了垂直溢出自动滚动。此处还提到了BFC(块格式化上下文)容器,以清除浮动。

html 复制代码
/* 页面头部背景样式 */
.music__head .bg {
    width: 100%;
    height: 100%;
    background: url(https://i0.hdslb.com/bfs/archive/c5e0392db23dada41b8ff5e052881abd7bb59d60.jpg);
    background-size: 100% 100%;
    filter: blur(7px); /* 设置背景虚化 */
    position: absolute;
    z-index: -1; /* 将虚化背景放到最下面 */
}

这个规则定义了页面头部背景的样式。.bgmusic__head元素内部的子元素。它设置了背景图片、大小、模糊效果以及它的位置。虚化背景被放置在堆叠顺序的底部(z-index:-1)。

html 复制代码
/* 页面标题样式 */
.music__head--title {
    margin: 45px 0;
    color: rgb(1, 0, 0);
    padding: 0 40px;
}

这个规则定义了页面标题的样式,它具有music__head--title类。标题具有45像素的上外边距,文本颜色设置为红色,左右内边距为40像素。

css 复制代码
/* 返回按钮样式 */
.back {
    float: left;
    width: 17px;
    height: 31px;
}

这个规则定义了返回按钮的样式,它浮动到左侧,具有17像素的宽度和31像素的高度。

css 复制代码
/* 标题样式 */
.title {
    text-align: center;
    font-size: 12px;
}

这个规则定义了标题的样式,将文本居中对齐,字体大小设置为12像素。

css 复制代码
/* 主体部分样式 */
.music__body {
    width: 100%;
    height: calc(100vh - 130px);
    background-color: aliceblue;
    position: absolute;
    top: 130px;
    border-top-right-radius: 32px;
    border-top-left-radius: 32px;
}

这个规则定义了主体部分的样式,包括宽度、高度(使用calc计算),背景颜色、位置和上部的圆角边框。

今天的内容就到这啦,如果你觉得小编写的还不错的话,或者对你有所启发,请给小编一个辛苦的赞吧

相关推荐
耶啵奶膘1 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^3 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie3 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic4 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿4 小时前
webWorker基本用法
前端·javascript·vue.js
cy玩具4 小时前
点击评论详情,跳到评论页面,携带对象参数写法:
前端
qq_390161775 小时前
防抖函数--应用场景及示例
前端·javascript
John.liu_Test6 小时前
js下载excel示例demo
前端·javascript·excel
Yaml46 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
PleaSure乐事6 小时前
【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
前端·javascript·react.js·前端框架·webstorm·antdesignpro