【实战篇】切图其实很简单 一起实战音乐播放器

序言

我们首先来看今天的任务,是要完成一个音乐播放器的页面

这是任务图

这是效果图

根据我们文章前面讲的BEM命名法,我们首先就可以将这张图片先规划一下

接着依次为他们进行BEM命名,首先我们整个页面就是music,最顶部的返回按钮和正在播放则是music__head,以下则是music__body,接着先附上我们的代码,让我们跟着通俗易懂的代码一起对里面的元素进行命名。

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_3975984_1yj5cbfx1k8.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-fanhui"></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>

首先是我们的HEAD部分,这里我们需要用到一个iconfont网站来获取返回图标

icon font--用于获取图标

  1. 首先点开网站然后搜索我们需要的图标

2. 接着选一个你喜欢然后添加到购物车

  1. 在你的购物车中将图表加入到一个项目中

4.来到项目中选择编码格式然后更新代码

5.更新代码后点击复制代码并粘贴到HTML文件中

html 复制代码
<head>
<link rel="stylesheet" href="你复制的代码"> <!--如果没有效果在你复制的代码之前加一个https:-->
</head>
  1. 点击你选择图标 复制代码

7.添加图标到HTML中

html 复制代码
<div class="music__head--title">
                <div class="back">
                    <i class="iconfont icon-fanhui"></i>
                </div>
                <div class="title">正在播放</div>
            </div>

我们每次向项目中添加新的图标时,我们项目的代码都会更新,所以我们可以一次性将所需的图标一次性添加完后更新代码然后复制,而且这些图标都是用代码写的并不是img格式之类,我们还可以对其样式进行更改或者直接在图标上的选择找到✏进行更改。

CSS部分

css 复制代码
*{
    margin: 0;padding: 0; /*将页面body自带的边距清除*/
}
.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用于计算函数 100vh用户屏幕高度*/
    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;
    }

总结

在了解了BEM命名法后,我们感觉到切图轻松了许多,相比之前一上来就写代码,我们现在学会先给图片分块分级,先把框架写出来然后再对CSS结构编写,在公司里面如果有切图任务的话我们首先会在一个团队群里得到图片的各种信息,然后我们需要做的就是对图片的实现,我们在过程中不用一下把HTML完全写完,而是写一部分然后检查,这样就省去了最后发现一处错误,修改全部的麻烦。那么我们今天的分享就到此结束啦,如果你感觉有收获的话给作者的辛苦点个赞吧。

感谢大家的阅读,点点赞吧♥

如果想了解更多有用的干货,点赞+收藏第一时间获取有用的小知识

开源Git仓库: gitee.com/cheng-bingw...

更多内容:【面试篇】深入理解BFC容器(Block Formatting Content)------块级格式化上下文

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ew452182 小时前
ElementUI表格表头自定义添加checkbox,点击选中样式不生效
前端·javascript·elementui
suibian52352 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
Moon.92 小时前
el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩
前端·vue.js·html
垚垚 Securify 前沿站2 小时前
深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
运维·前端·网络·安全·web安全·系统安全
工业甲酰苯胺5 小时前
Vue3 基础概念与环境搭建
前端·javascript·vue.js
mosquito_lover16 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt
柴柴的小记8 小时前
前端vue引入特殊字体不生效
前端·javascript·vue.js
柠檬豆腐脑9 小时前
从前端到全栈:新闻管理系统及多个应用端展示
前端·全栈
bin91539 小时前
DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)
前端·javascript·vue.js·ecmascript·deepseek