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

序言

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

这是任务图

这是效果图

根据我们文章前面讲的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)------块级格式化上下文

相关推荐
我要洋人死25 分钟前
导航栏及下拉菜单的实现
前端·css·css3
科技探秘人36 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人37 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR42 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香44 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q2498596931 小时前
前端预览word、excel、ppt
前端·word·excel
小华同学ai1 小时前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
Gavin_9151 小时前
【JavaScript】模块化开发
前端·javascript·vue.js
懒大王爱吃狼2 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
逐·風6 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#