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

序言

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

这是任务图

这是效果图

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

相关推荐
fishmemory7sec7 分钟前
Electron 主进程与渲染进程、预加载preload.js
前端·javascript·electron
fishmemory7sec10 分钟前
Electron 使⽤ electron-builder 打包应用
前端·javascript·electron
豆豆1 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
看到请催我学习2 小时前
如何实现两个标签页之间的通信
javascript·css·typescript·node.js·html5
twins35202 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky2 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~2 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺
l1x1n03 小时前
No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史
前端·http·html
昨天;明天。今天。3 小时前
案例-任务清单
前端·javascript·css