css实现音乐播放器页面 · 笔记

news2024/12/26 22:44:28

效果

在这里插入图片描述

源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css">
    <title>音乐播放器</title>
    <style>
        body {
            padding: 0;
            margin: 0;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background-image: url("http://p2.music.126.net/VGf3MMmpQpjppLrKPinepw==/109951164207181002.jpg");
            background-repeat: no-repeat;
            background-size: 100% 100%;
        }

        .blurBG {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            backdrop-filter: blur(50px);
            transition: all 0.8s;
            z-index: -2;
        }

        .player {
            position: relative;
            box-sizing: border-box;
        }

        /* 后代选择器 */
        .player .playerOpe {
            height: 80px;
            width: 360px;
            border-radius: 15px;
            background-color: #fff;
            display: flex;
            justify-content: center;
            z-index: 1;
        }

        .control i {
            width: 40px;
            height: 40px;
            font-size: 25px;
            color: #666;
            cursor: pointer;
            text-align: center;
            line-height: 40px;
            margin-top: 20px;
            transition: all 0.3s;
        }
        i:hover {
            border-radius: 30%;
            background-color: #ccc;/* 背景变灰色 */
            color: #eee;/* 元素变白色 */
        }

        .cover {
            width: 100px;
            height: 100px;
            border-radius: 100%;
            padding: 6px;
            background-color: #fff;
            margin-top: -50px;
            background-size: cover;
            animation: rotate1 5s infinite linear;
            animation-play-state: running;
            position: relative;
            z-index: 2;
        }
        .cover img {
            width: 100%;
            border-radius: 100%;
        }
        .cover::before {/* 伪类元素 */
            content: "";
            display: inline-block;
            width: 20px;
            height: 20px;
            background-color: #fff;
            border-radius: 100%;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        @keyframes rotate1 {
            0% {
                transform: rotate(0deg);
            }
            100% {
                transform: rotate(360deg);
            }
        }

        .player .playerInf {
            width: 90%;
            height: 120%;
            position: absolute;
            top: -100%; /* 需要调整!!! */
            transform: translate(5%);
            border-radius: 10px;
            backdrop-filter: blur(80px);
            background: #fff;
            display: flex;
            z-index: -1;
            /* 毛玻璃效果 */
            background: rgba( 255, 255, 255, 0.4 );
            backdrop-filter: blur( 4px );
            -webkit-backdrop-filter: blur( 4px );
            border-radius: 10px;
            border: 1px solid rgba( 255, 255, 255, 0.18 );
        }
        
        .playerInf .inf {
            position: absolute;
            left: 45%;
            top: 8%;
            width: 53%;
        }
        .inf .name {
            font-size: 17px;
            font-weight: 700;
        }
        .inf .singer_album {
            font-size: 10px;
            color: #555;
            line-height: 15px;
        }
        .inf .progress {
            width: 100%;
        }
        .progress .time {
            font-size: 10px;
            display: flex;
            justify-content: space-between;
            color: #f2709b;
            line-height: 22px;
        }
        .progress .progress_bar {
            width: 100%;
            height: 3px;
            background-color: #fff;
            position: relative;
            border-radius: 3px;
        }
        .progress_bar .progress_line {
            width: 32%; /* 需要变化!!! */
            height: 3px;
            position: absolute;
            left: 0;
            background-color: #f2709b;
            border-radius: 3px;
        }

        .maskBG {
            position: absolute;
            left: 0;
            top: 0;
            width: 73%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
            transition: all 0.8s;
            z-index: 5;
            display: none;
        }

        .menu {
            position: absolute;
            top: 0;
            right: 0;
            width: 27%;
            height: 100%;
            background-color: #fff;
        }
        .menu .title {
            width: 90%;
            height: 6%;
            margin: auto;
            display: flex;
            justify-content: space-between;
            font-size: 25px;
            padding: 2%;
        }
        .title .close {
            color: #666;
            cursor: pointer;
            transition: all 0.1s;
        }
        .close:hover {
            transform: scale(1.1);
        }

        .menu .songs_list {
            width: 90%;
            height: calc(720px);
            margin: auto;
            padding: 0 2px;
            overflow-y: auto;
            overflow-x: hidden;
        }       

        .songs_list .list {
            width: 100%;
            list-style: none;
            padding-inline-start: 0px;
        }
        .list li {
            padding: 10px 0; 
            border-bottom: 1px solid rgba(100,100,100,1);
            justify-content: space-between;
            display: flex;
        }
        li .choose {
            font-size: 23px;
            color: #f2709b;
            cursor: pointer;
            transition: all 0.1s;
        }
        .choose:hover {
            transform: scale(1.1);
        }
    </style>
</head>
<body>
    <div class="player">

        <!-- 操作界面 -->
        <div class="playerOpe">

            <!-- 歌曲封面 -->
            <div class="cover">
                <img src="http://p2.music.126.net/VGf3MMmpQpjppLrKPinepw==/109951164207181002.jpg" alt="封面">
            </div>

            <!-- 控制标识 -->
            <div class="control">
                <i class="fa fa-step-backward Backward"></i>
                <i class="fa fa-play Play"></i>
               <!--  <i class="fa fa-pause Plause"></i> -->
                <i class="fa fa-step-forward Forward"></i>
                <i class="fa fa-bars Bars"></i>
            </div>
        </div>

        <!-- 信息界面 -->
        <div class="playerInf">

            <!-- 歌曲信息 -->
            <div class="inf">
                <div class="name">都是夜归人</div>
                <div class="singer_album">阿云嘎、郑云龙</div>

                <!-- 进度 -->
                <div class="progress">

                    <!-- 时间 -->
                    <div class="time">
                        <span class="current_time">0:00</span>
                        <span class="total_time">4:56</span>
                    </div>

                    <!-- 进度条 -->
                    <div class="progress_bar">
                        <div class="progress_line"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="blurBG"></div>

    <div class="maskBG"></div>
    <div class="menu">
        <div class="title">
            <span class="title_name">音乐列表</span>
            <span class="fa fa-close close"></span>
        </div>
        <div class="songs_list">
            <ul class="list">
                <li>
                    <span>01. 都是夜归人 - 阿云嘎、郑云龙</span>
                    <span class="fa fa-play-circle choose"></span>
                </li>
            </ul>
        </div>
    </div>
</body>
</html>

笔记

  1. vh和vw

    1vw = 1/100视口宽度

    1vh = 1/100视口高度

  2. Font Awesome 图标不显示

    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css">
    
  3. ::before

    css中“::before”的意思是“在…之前”,是一个伪类元素,用于创建一个伪元素,并将其设置为选中元素的第一个子元素,插入到元素的其他内容之前,语法为“element::before{样式代码}”。

  4. transform

    (变形) 支持旋转、扭曲、缩放、移动等

    • 基点:所有操作的默认基点都在中心位置
    • transform-origin:(x,y)改变元素基点。

    a)rotate(xx deg)(2D), rotateX()(3D), rotateY()(3D) 旋转,正数为顺时针

    b)translate(x,y)translateX(x)translateY(y)平移

    c)scale(x,y)scaleX(x,1)scaleY(1,Y) 缩放基数为1,大于1放大,小于1缩小

    d)skew(x,y)skewX(x)skewY(y) 扭曲

  5. cursor: pointer;鼠标移动到元素上会有变化

  6. :hover

    在鼠标移到元素上时添加的特殊样式。

  7. overflow-x指定是否要剪辑的左/右边缘的内容.

    overflow-y指定是否要剪辑的顶部/底部边缘的内容

  8. justify-content: space-between;

    元素向两边对齐。注意,必须开启弹性盒子模型。

  9. padding-inline-start: 0px;

    去掉ul li开头前的空白。(会自带40px的空余)

  10. overflow-y: auto;

    设置y方向滚动轴,如果内容一处则滚动轴生效。(overflow)

    注意:当父容器设定为百分比时,该属性会失效。必须设定父容器为固定宽高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s 系列之 CoreDNS 解读

k8s 系列之 CoreDNS CoreDNS工作原理 kuberntes 中的 pod 基于 service 域名解析后&#xff0c;再负载均衡分发到 service 后端的各个 pod 服务中&#xff0c;如果没有 DNS 解析&#xff0c;则无法查到各个服务对应的 service 服务 在 Kubernetes 中&#xff0c;服务发现有几…

都2023年还不知道Java8如何优雅简化代码就落后了

1、使用 Stream 简化集合操作 Java8 Stream流操作总结_出世&入世的博客-CSDN博客 2、使用 Optional 简化判空逻辑 空指针异常&#xff08;NullPointerExceptions&#xff09;是 Java 最常见的异常之一&#xff0c;一直以来都困扰着 Java 程序员。一方面&#xff0c;程序…

springboot集成canal 实现mysql增量同步mongodb

一、canal官网https://kgithub.com/alibaba/canal/二、下载地址https://kgithub.com/alibaba/canal/releases三、细节1.6版本有bug&#xff08;如果只是部署deployer&#xff0c;那没问题&#xff0c;如果你想部署admin模块来监控&#xff0c;那就会报错&#xff1a;java.nio.B…

运算方法和运算电路

文章目录运算方法和运算电路基本运算部件定点数的移位运算算术移位逻辑移位循环移位定点数的加减运算原码的加减法补码的加减法原码的乘法补码的乘法原码的除法补码的除法符号扩展大小端和内存对齐刷题小结最后运算方法和运算电路 基本运算部件 运算器一般包含这么几部分&…

7 线性回归及Python实现

1 统计指标 随机变量XXX的理论平均值称为期望: μE(X)\mu E(X)μE(X)但现实中通常不知道μ\muμ, 因此使用已知样本来获取均值 X‾1n∑i1nXi.\overline{X} \frac{1}{n} \sum_{i 1}^n X_i. Xn1​i1∑n​Xi​.方差variance定义为&#xff1a; σ2E(∣X−μ∣2).\sigma^2 E(|…

STM32单片机的FLASH和RAM

STM32内置有Flash和RAM&#xff08;而RAM分为SRAM和DRAM&#xff0c;STM32内为SRAM&#xff09;&#xff0c;硬件上他们是不同的设备存储器、属于两个器件&#xff0c;但这两个存储器的寄存器输入输出端口被组织在同一个虚拟线性地址空间内。 MDK预处理、编译、汇编、链接后编…

月薪7k和月薪27k的测试人都有哪些区别?掌握这些,领导都要高看你...

了解软件测试这行的人都清楚&#xff0c;功能测试的天花板可能也就15k左右&#xff0c;而自动化的起点就在15k左右&#xff0c;当然两个岗位需要掌握的技能肯定是不一样的。 如果刚入门学习完软件测试&#xff0c;那么基本薪资会在7-8k左右&#xff0c;这个薪资不太高主要是因…

【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

存储RAID基本概念RAID数据组织形式RAID数据保护方式常用RAID级别与分类标准创建RAID组成员盘要求热备盘&#xff08;Hot Spare&#xff09;RAID 0的工作原理RAID 0的数据写入RAID 0的数据读取RAID 1的工作原理RAID 1的数据写入RAID 1的数据读取RAID 3的工作原理RAID 3的数据写入…

数据Python 异常处理

python标准异常异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基…

python学习之定制发送带附件的电子邮件

Python SMTP发送邮件 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则&#xff0c;由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封…

数据结构与算法基础(王卓)(12):队列的定义及其基础操作(解决假上溢的方法,循环队列解决队满时判断方法,链队和循环队列的初始化等)

循环队列&#xff1a; 解决假上溢的方法&#xff1a;引入循环队列&#xff08;判断是否溢出&#xff09; 将入队操作由&#xff1a; base[rear]x; rear; 准确的来说&#xff0c;是&#xff1a; Q.base[Q.rear]x; Q.rear; 改为 Q.base[Q.rear]x; Q.rear(Q.rear1)% MAXQSIZ…

摘录一下Python列表和元组的学习笔记

1 基础概念 列表一个值&#xff0c;列表值指的是列表本身&#xff0c;而不是列表中的内容 列表用[]表示 列表中的内容称为 表项 len()函数可以显示列表中表项的个数&#xff0c;比如下面这个例子 spam [cat, bat, dog, rat]print(len(spam))列表的范围选取中&#xff0c;比…

96.【SpringBoot接入支付宝-thymeleaf-springBoot】

SpringBoot接入支付宝(一)、前提工作:1、进入支付宝开发平台—沙箱环境1.1、进入个人沙箱环境1.2、接下来进行几个密钥的生成1.3、拿到两个密钥后&#xff0c;进行自定义密钥配置1.4、至此&#xff0c;我们沙箱环境的配置和基本参数都已经获取到。(二)、Java代码-thymeleaf1.导…

蓝桥杯-超级质数

蓝桥杯-超级质数1、问题描述2、解题思路3、代码实现1、问题描述 如果一个质数 P 的每位数字都是质数, 而且每两个相邻的数字组成的两位 数是质数, 而且每三位相邻的数字组成的三位数是质数, 依次类推, 如果每相邻的 k 位数字组成的 k 位数都是质数, 则 P 称为超级质数。 如果把…

重型工业机械设备远程监控解决方案

随着企业的发展&#xff0c;各类机械设备日益增多&#xff0c;为了实现高效的管理和使用&#xff0c;保障安全生产&#xff0c;建立智能化、信息化的工业制造系统成为了必然趋势。 传统的机械设备管理大多采用人工方式&#xff0c;现场作业人员需要每天通过电话、或者E-mail等方…

利用反射实现通过读取配置文件对类进行实例化-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)

【案例12-3】&#xff1a;利用反射实现通过读取配置文件对类进行实例化 【案例介绍】 1.案例描述 现在有一个项目&#xff0c;项目中创建了一个Person类&#xff0c;在Person类中定义了一个sleep()方法。在工程中还定义了一个Student类继承Person类&#xff0c;在Student类中…

项目管理PMP证书的含金量真的高吗?

含金量当然高的&#xff0c;特别是在项目管理这个领域&#xff0c;绝对是知名度最高的&#xff0c;行业内最受认可的相关证书&#xff0c;含金量等同于于MBA&#xff0c;那么&#xff0c;除去它本身专业知识价值&#xff0c;它的含金量高在哪里呢&#xff1f; &#xff08;含资…

linux离线状态下将视频mp4格式转换m3u8

因为业务需求&#xff0c;python文件生成的视频为MP4格式&#xff0c;无法在前端浏览器正常播放&#xff0c;需切换m3u8格式&#xff0c;但因为服务器是没有网络的&#xff0c;因袭需要在离线状态下进行完成。 1.离线安装ffmpeg 看网上许多教程&#xff0c;ffmpeg可完成视频格…

【工具】笔记软件测评(简单)

介绍 笔记软件测评 印象笔记 ── ❌开源、❌markdown&#xff08;不好用&#xff09;、❌本地存储 臭名昭著&#xff0c;被资本搞烂的理想。 notion ── ❌开源、❌本地存储、✔️数据导出&#xff1a;PDF、HTML、Markdown & CSV &#xff08;include subpages&#xf…

重回利润增长,涪陵榨菜为何能跑赢周期?

2022年消费市场持续低迷&#xff0c;疫情寒冬之下&#xff0c;不少食品快消企业均遭遇严重的业绩下滑&#xff0c;但一年里不断遭遇利空打击的“榨菜茅”涪陵榨菜&#xff0c;不仅安然躲过“酸菜劫”、走出“钠”争议&#xff0c;而且顺利将产品价格提起来&#xff0c;并在寒冬…