HTML+CSS实训——Day03——仿网易云音乐的主页界面

news2024/11/18 7:25:13

仓库链接:https://github.com/MengFanjun020906/HTML_SX

一些今天需要用到的知识点

弹性盒子

<!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">
  <title>Document</title>
  <style>
    /* 正常情况下 块元素默认是垂直从上向下排列的 */
    /* 但是我们有时候需求块元素水平显示 */
    /* 
    把需要水平显示的块元素的父元素设置为弹性盒子
    弹性盒子内部的元素是弹性子元素
    弹性子元素有自己的排列方式
    弹性子元素默认水平排列
    主轴:默认水平方向从左向右,左边为起点,右边为重点
    弹性子元素默认沿着主轴从起点向重点排列
    */
    .box {
      width: 500px;
      height: 500px;
      border: 5px solid black;
      /* 设置弹性盒子 display: flex; */
      display: flex;
      /* 设置子元素在主轴的排列方式 justify-content */
      /* justify-content设置弹性盒子垂直居中 */
      justify-content: center;
      /* aligm-items设置水平方向居中 */
      align-items: center;
      /* 设置主轴的方向 flex-direction */
      /* 主轴有四个方向: 
      row左->右  row-reverse右->左 
      column上->下 column-reverse下->上 */
      /* flex-direction: row; */
      /* flex-direction: row-reverse; */
      flex-direction: column;
      /* flex-direction: column-reverse; */
    }

    .red {
      width: 100px;
      height: 100px;
      background-color: red;
    }

    .green {
      width: 100px;
      height: 100px;
      background-color: green;
    }

    .blue {
      width: 100px;
      height: 100px;
      background-color: blue;
    }
  </style>
</head>

<body>
  <div class="box">
    <div class="red"></div>
    <div class="green"></div>
    <div class="blue"></div>
  </div>
</body>

</html>    

在这里插入图片描述
知识点:

  • 弹性子元素有自己的排列方式
  • 弹性子元素默认水平排列
  • 主轴:默认水平方向从左向右,左边为起点,右边为重点
  • 弹性子元素默认沿着主轴从起点向重点排列
  • 交叉轴:交叉轴方向跟主轴垂直
  • 交叉轴默认方向从上向下,上边为起点,下边为重点
  • 不管主轴从左向右还是从右向左交叉轴都是从上向下的
  • 不管主轴是从上向下还是从下向上交叉轴都是从左向右的
  • 主轴有四个方向交叉轴只有两个方向

边框

通过更改border-style来改变边框的类型

<!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">
    <title>Document</title>
<style>
    .i1 {
        width: 100px;
        height: 100px;
        border-width: 10px;
        border-style: solid;
        border-color: black;
        border-style: double;
        border-radius: 50px;
    }
</style>
</head>
<body>
    <div class="i1"></div>
</body>
</html>

在这里插入图片描述

盒子模型

<!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">
  <title>Document</title>
  <style>
    body {
      margin: 0;
    }

    /* 再网页中我们会把html元素想象成一个盒子 */
    /* 盒子可以设置宽高,外边距,内边距 */
    .i1 {
      width: 200px;
      height: 100px;
      border: 5px solid red;
      /* margin-top: 10px; */
      /* margin-bottom: 20px; */
      /* margin-left: 30px; */
      /* margin-right: 40px; */
      /* 当元素的左右外边距设置为auto可以水平居中 */
      margin-left: auto;
      margin-right: auto;
      /* 上 右 下 左 */
      margin: 10px 20px 30px 40px;
      /* 上下  左右 */
      /* margin: 10px 20px; */
      /* margin: 10px auto; */
      /* 上  左右  下 */
      /* margin: 10px 20px 30px; */
      /* 上下左右 */
      margin: 10px;
    }

    /* 内边距会撑大元素 */
    .i2 {
      width: 170px;
      height: 80px;
      border: 5px solid red;
      padding-top: 20px;
      padding-bottom: 10px;
      padding-left: 10px;
      padding-right: 10px;
    }

    /* 普通盒子 */
    /* 宽 = 设置的宽度 + 左右边框 + 左右内边距 */
    /* 高 = 设置的高度 + 上下边框 + 上下内边距 */
    .i3 {
      width: 200px;
      height: 100px;
      border: 5px solid red;
      padding-top: 10px;
      padding-bottom: 10px;
      padding-left: 10px;
      padding-right: 10px;
      /* 边框盒子 */
      /* 宽 = 设置的宽度 */
      /* 高 = 设置的高度 */
      box-sizing: border-box;
    }
  </style>
</head>
    
<body>
  <div class="i1"></div>
  <div class="i2">这里是内容部分</div>
  <div class="i3">这里是内容部分</div>
</body>

</html>

在这里插入图片描述
通过检查功能,我们发现i2的长度和高度再观察i3的长度,发现他们在页面是一样长的,但是实际的代码是不一样的,究其原因是因为内部的间距padding给他撑大了。

固定标签

我们在许多网页都见过固定住的导航栏,那我们该如何做这种效果呢

<!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">
  <title>Document</title>
  <style>
    .i1 {
      width: 100px;
      height: 100px;
      background-color: pink;
      position: fixed;
      left: 100px;
      bottom: 0px;
      /* top: ; */
      /* right: ; */
    }

    /* 当元素没有设置宽度或者高度的时候,元素会被拉伸 */
    .i2 {
      height: 100px;
      background-color: yellow;
      position: fixed;
      left: 10px;
      right: 0;
      top: 10px;
    }

    .i3 {
      width: 100px;
      background-color: green;
      position: fixed;
      top: 0px;
      bottom: 0px;
      left: 200px;
    }
  </style>
</head>

<body>
  <div class="i1"></div>
  <div class="i2"></div>
  <div class="i3"></div>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
  123 <br> <br><br><br><br><br>
</body>

</html>

position: fixed; 写在css中可以让其固定在顶部

用网上的图标库

从awesomeicon网站下载他们的css,然后把命令写在head中

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

把这个命令写到body中

<i class="fa fa-camera-retro"></i> fa-camera-retro

图标就出现了
在这里插入图片描述

添加底部栏

先写body的内容

 <div class="tab-bar">
        <div class="item">
            <i class="fa fa-globe"></i>
            <span>发现</span>
        </div>
        <div class="item">
            <i class="fa fa-video-camera"></i>
            <span>视频</span>
        </div>
        <div class="item">
            <i class="fa fa-music"></i>
            <span>我的</span>
        </div>
        <div class="item">
            <i class="fa fa-users"></i>
            <span>云村</span>
        </div>
        <div class="item">
            <i class="fa fa-user-o"></i>
            <span>账号</span>
        </div>
    </div>

后面的css更重要

        .tab-bar {
            position: fixed;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: white;
            height: 80px;
            /* border: 1px solid red; */
            display: flex;
            justify-content: space-evenly;
        }
        .tab-bar>.item{
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
        .tab-bar>.item>i{
            font-size: 30px;
        }
        .tab-bar>.item>span{
            margin-top: 6px;
            font-size: 14px;
        }

最后的效果就是这样的
在这里插入图片描述

添加banner

html

    <div class="banner">

        <img src="img/ad/811.jpg" alt="">
        <div class="pointer">
            <span></span>
            <span></span>
            <span class="active"></span>
            <span></span>
        </div>
    </div>

css

        .banner {
            margin-top: 60px;
            position: relative;
        }

        .banner>img {
            width: 100%;
            border-radius: 6px;

        }

        .banner>.pointer {
            display: flex;
            justify-content: center;
            position: absolute;
            bottom: 12px;
            left:0;
            right: 0;

        }

        .banner>.pointer>span {
            width: 10px;
            height: 10px;
            background-color: gray;
            margin-left: 10px;
            border-radius: 5px;
            margin-right: 4px;
        }
        .banner>.pointer>.active {
      background-color: rgb(0, 153, 255);
    }

在这里插入图片描述
但是这里的banner向上移动的时候会盖住搜索栏,他的层叠结构是不太正确的,所以我们设置了z-index

        .search {
            position: fixed;
            display: flex;
            align-items: center;
            justify-content: center;
            left: 0;
            right: 0;
            top: 0;
            padding-top: 10px;
            padding-bottom: 10px;
            background-color: white;
            z-index: 999;
            /* border: 1px solid red; */

        }
        .banner {
            margin-top: 60px;
            position: relative;
            z-index: 2;
        }

添加歌单并且可以滑动

html

<div class="choice">
        <div class="choice-title">
            <span class="left">你的精选歌单</span>
            <button class="right">查看更多</button>
        </div>
        <div class="choice-box">
            <div class="item">
                <img src="img/sheet/100.jpeg" alt="">
                <span>成功人士都在听的歌曲,来看看吧~</span>
            </div>
            <div class="item">
                <img src="img/sheet/10.jpg" alt="">
                <span>暮然回首,那人却在灯火阑珊处</span>
            </div>
            <div class="item">
                <img src="img/sheet/20.jpg" alt="">
                <span>温馨的歌曲,适合在家听</span>
            </div>
            <div class="item">
                <img src="img/sheet/30.jpg" alt="">
                <span>抖音热门歌曲循环</span>
            </div>
            <div class="item">
                <img src="img/sheet/40.jpg" alt="">
                <span>学习/工作/无聊/必备歌曲</span>
            </div>
            <div class="item">
                <img src="img/sheet/50.jpg" alt="">
                <span>乘风破浪会有时,直挂云帆济沧海/span>
            </div>
            <div class="item">
                <img src="img/sheet/60.jpg" alt="">
                <span>赛车爱好者必听歌曲</span>
            </div>
        </div>
    </div>

css

        .choice {

            margin-top: 10px;
        }

        .choice>.choice-title {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 6px;
            color: #504e4a;

        }

        .choice>.choice-title>.right {
            font-size: 12px;
            color: #999;
            border-radius: 5px;
            border: 1;
            background-color: white;
            border-color: gray;

        }

        .choice-box {
            display: flex;
            /* 设置图像可以滚动显示 */
            overflow: scroll;
        }

        /* 清除滚动条 */
        .choice-box::-webkit-scrollbar {
            display: none;
        }

        .choice-box>.item>span {
            font-size: 12px;
            /* 让文本只显示2行,并且超出的部分显示... */
            overflow: hidden !important;
            text-overflow: ellipsis !important;
            -webkit-line-clamp: 2;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            white-space: normal;
            word-wrap: break-word;
        }

        .choice-box>.item {
            display: flex;
            flex-direction: column;
            width: 80px;
            margin-right: 10px;
        }

        .choice-box>.item>img {
            width: 80px;
            border-radius: 8px;
            margin-bottom: 6px;
        }

        .choice-box>.item>span {
            font-size: 12px;
        }

中间加入可以滑动的功能,并且要去掉滚动条
在这里插入图片描述

加入其他的功能选项

html

    <div class="category">
        <div class="item">
            <i class="fa fa-calendar"></i>
            <span>每日推荐</span>
        </div>
        <div class="item">
            <i class="fa fa-music"></i>
            <span>歌单</span>
        </div>
        <div class="item">
            <i class="fa fa-trophy"></i>
            <span>排行榜</span>
        </div>
        <div class="item">
            <i class="fa fa-bullhorn"></i>
            <span>电台</span>
        </div>
        <div class="item">
            <i class="fa fa-caret-square-o-right"></i>
            <span>直播</span>
        </div>
        <div class="item">
            <i class="fa fa-bolt"></i>
            <span>火前留名</span>
        </div>
        <div class="item">
            <i class="fa fa-comments"></i>
            <span>畅聊</span>
        </div>
    </div>

css

        .category>.item {
            display: flex;
            flex-direction: column;
            margin-top: 5px;
            margin-bottom: 5px;
            /* border: 1px solid red; */
            align-items: center;
            justify-content: center;
        }

        .category>.item>span {
            font-size: 10px;

        }

        .category>.item>i {
            color: red;
            font-size: 30px;

        }

跟下面的tab-bar效果是一样的
在这里插入图片描述

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

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

相关文章

安卓、鸿蒙系统通通中招,手机指纹可被轻松破解

正文开始前问下大家&#xff0c;你的手机都采用了哪些解锁方式&#xff1f; 经过这么些年发展&#xff0c;目前手机的解锁方式可谓是五花八门。 从最开始的数字密码到图案密码&#xff0c;再到后来的面部解锁、虹膜解锁、指纹解锁等。 数字密码虽然最早出现&#xff0c;但放到…

深度学习学习率

目录 1 什么是学习率 2 学习率对网络的影响 3 学习率的设置 3.1 分段常数衰减&#xff08;Piecewise Decay&#xff09; 3.2 指数衰减&#xff08;Exponential Decay&#xff09; 3.3 自然指数衰减&#xff08;Natural Exponential Decay&#xff09; 3.4 多项式衰减&…

2023年度鄂州中级工程师职称首次举行水测哟,甘建二告诉你

2023年鄂州中级工程师职称首次开始举行水测&#xff0c;以前都不是这个样子&#xff0c;鄂州算是职称评审也是有一个改革吧&#xff0c;关于鄂州中级职称申报有一些需要大家注意的东西&#xff0c;今天甘建二这边给大家讲解一下&#xff0c;希望对今年想要评职称的小伙伴有帮助…

新手如何学习挖漏洞?看这篇就够了【网络安全】

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小伙…

使用go语言构建区块链 Part2.工作量证明

英文源地址 简介 在上一篇文章中, 我们构建了一个非常简单的数据结构, 这是区块链数据库的本质.并且我们可以通过它们之间的链式关系来添加区块: 每个区块都链接到前一个区块.哎, 我们的区块链实现有一个重大缺陷: 向链中添加区块既容易又便捷. 区块链和比特币的关键之一是增…

pix2pixHD代码---readme

1&#xff1a;基础配置 要求大于等于11G的显卡&#xff0c;安装pytorch&#xff0c;下载代码。 2&#xff1a;测试 dataset文件中放的是一些例子&#xff0c;下载cityscape的预训练权重&#xff0c;放入到checkpoints文件夹下&#xff0c;测试模型。测试结果放在results文件夹…

【正点原子STM32连载】 第十八章 独立看门狗(IWDG)实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十八…

【Netty】Netty 架构设计(二)

文章目录 前言一、Selector 模型1.1 SelectableChannel1.2 Channel 注册到 Selector1.3 SelectionKey1.4 遍历 SelectionKey 二、事件驱动2.1 Channel2.2 回调2.3 Future2.4 事件及处理器 三、责任链模式3.1 责任链模式的优缺点3.2 ChannelPipeline3.3 将事件传递给下一个处理器…

从事软件测试2年跳槽4次,不给你涨薪真不怪老板……

前几天和朋友们聚餐&#xff0c;发现了一个有意思的现象。 所谓的聚餐其实就是大家对于工作生活的一个大型倒苦水现场。 最近工作太TM烦心了&#xff0c;越来越觉得没有意思了&#xff0c;感觉没啥前途&#xff0c;也不给人涨薪。 我也是&#xff0c;不仅工作压力大&#xff0…

华为云网站备案操作流程

目录 一、官方指引二、操作步骤1.操作场景2.前提条件3.操作步骤&#xff08;1&#xff09;下载华为云 APP&#xff08;2&#xff09;登录华为云 APP&#xff0c;在 “控制台” 中单击 “网站备案”&#xff0c;进入 APP 备案操作入口&#xff08;3&#xff09;验证备案类型&…

HarmonyOS低代码开发-在已有工程中添加Visual

使用低代码开发应用或服务有以下两种开发方式&#xff1a;创建一个支持低代码开发的新工程&#xff0c;开发应用或服务的UI界面。在已有工程中&#xff0c;创建Visual文件来开发应用或服务的UI界面。ArkTS工程和JS工程使用低代码的步骤相同&#xff0c;接下来以JS工程为例分别讲…

【LCD应用编程】练习一 —— 绘制点、线、矩形框

之前获取LCD屏幕参数信息时了解到&#xff0c;LCD屏是 FrameBuffer 设备&#xff0c;操作 FrameBuffer 设备 其实就是在读写 /dev/fb0 文件。除此之外&#xff0c;LCD屏上包含多个像素点&#xff0c;绘制点、线、矩形框本质是在修改这些像素点的颜色。 目录 1、定义 lcd_color…

Vulkan Tutorial 4

11 framebuffer 我们已经将渲染传递设置为期望一个与交换链图像格式相同的单一帧缓冲&#xff0c;但我们还没有实际创建任何图像。 在渲染过程创建期间指定的附件通过将它们包装到一个VkFramebuffer对象中来绑定。帧缓冲区对象引用 VkImageView代表附件的所有对象。 std::ve…

SSH和SFTP是否相同

SSH和SFTP是否相同&#xff1f;SSH和SFTP是经典的对。在确保通信安全方面&#xff0c;它们交织在一起&#xff0c;尽管它们具有类似的功能&#xff0c;但它们并不是一回事。那么&#xff0c;它们之间有什么区别&#xff1f;请仔细阅读&#xff0c;找出答案。 什么是SSH&#x…

Java使用xlsx-streamer和EasyExcel解决读取超大excel数据时OutOfMemoryError的问题

解决读取超大excel数据时OutOfMemoryError的问题 前言关于Excel相关技术场景复现与问题定位问题代码读取50MB40万行数据读取84MB100万行数据 解决方案一&#xff1a;xlsx-streamer引入依赖&#xff1a;示例代码&#xff1a;加载数据效果耗费资源对比 解决方案二&#xff1a;Eas…

静态时序分析-时序检查

时序检查 一旦在触发器的时钟引脚上定义了时钟,便会自动推断出该触发器的建立时间和保持时间检查。时序检查通常会在多个条件下执行,通常,最差情况的慢速条件对于建立时间检查很关键,而最佳情况的快速条件对于保持时间检查很关键。 1.建立时间检查 在时钟的有效沿到达触…

9:02面试,9:08就出来了,这问的我毫无还手之力····

就离谱了&#xff0c;现在面试都这么难的了嘛 从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#x…

C语言代码封装MQTT协议报文,了解MQTT协议通信过程

【1】MQTT协议介绍 MQTT是一种轻量级的通信协议&#xff0c;适用于物联网&#xff08;IoT&#xff09;和低带宽网络环境。它基于一种“发布/订阅”模式&#xff0c;其中设备发送数据&#xff08;也称为 “发布”&#xff09;到经纪人&#xff08;称为MQTT代理&#xff09;&…

实现一个域名对应多个IP地址和DNS优缺点

DNS定义 DNS&#xff08;Domain Name System&#xff09;是因特网的一项服务&#xff0c;它作为域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS作用 解析域名 人们在通过浏览器访问网站时只需要记住网站的域名即可&#xff0c;而不需…

清晰易懂IoC

1.IoC的目的在于让服务端的代码不需要改动 这段代码的问题在于&#xff0c;如果想要调用不同的dao层&#xff0c;就需要在服务端的代码Service层中进行改动 比如要调用dao1&#xff0c;Service层代码就是Dao dao1new Dao1() 比如要调用dao2&#xff0c;Service层代码就是Dao …