零基础学前端(六)HTML+CSS实战:模仿QQ官网首页

1. 我前面已经将HTML 和 CSS讲解完成,希望初学者是跟着一步一步敲代码走过来的。

2. 我个人觉得先不着急进入Javascript的学习,要将前面写样式,写布局的基础打好,所以我编写了本篇模仿QQ网站首页,请认真阅读。

一、确认目标

我们要模仿qq官网的首页。你可以点击去看看官网的样子,我将目标图片先贴在下面。

素材可以自己通过chrome开发者工具,拖拽出来。也可以直接下载我的源代码,将图片文件夹拿过来用。

二、分析拆解目标

我将任务拆解成3个部分

1. 头部head部分

2. 主体main部分

3. 底部footer部分

1.1 先将欧阳娜娜的背景图铺满浏览器的屏幕

首先看一下我的项目目录结构:img目录放欧阳娜娜图片、css放index.css文件

 

<!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>QQ-新不止步,乐不设限</title>
    <!--从外部引入css样式(这样写目的让css和html分开,显得清晰)-->
    <link href="./css/index.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="box">

    </div>
</body>
</html>
 /*通配符号让所有标签的margin和padding为0*/
*{ 
    padding: 0;
    margin: 0;
}
.box{
    width: 100%;
    height: 100vh;     /*100vh是指的可视区域的总高度*/
    background-image: url(../img/back.png);
    background-size: cover; 
    background-repeat: no-repeat;
}

 效果图如下

1.2 详细讲解此处知识点

(一)、css引入方式

内嵌样式:之前的css样式写在 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>QQ-新不止步,乐不设限</title>
    <style>
        .box{
            color: red;
        }
    </style>
</head>
<body>
    <div class="box">

    </div>
</body>
</html>

外部引入样式表:

href : 样式的路径    ./ 指当前目录

rel: rel的英文全称是relation,它的作用就是来说明本页面和链接到的页面的之间的关系
type:指类型 text/css 说明引入的文件是css文件

<link href="./css/index.css" rel="stylesheet" type="text/css" />

(二)、给div元素设置背景图片

之前我们添加图片的方式

<img src="./img/back.png" />

现在是用background-image属性设置背景图片

.box{
    width: 100%;
    height: 100vh; /*100vh是指的可视区域的总高度*/
    background-image: url(../img/back.png);
    background-size: cover;
    background-repeat: no-repeat;
}

属性解释

background-image 属性用于为一个元素设置一个或者多个背景图像。

background-size 设置背景图片大小。图片可以保有其原有的尺寸,或者拉伸到新的尺寸,或者在保持其原有比例的同时缩放到元素的可用空间的尺寸。

1. 属性cover:缩放背景图片以完全覆盖背景区,可能背景图片部分看不见

2. 属性contain:缩放背景图片以完全装入背景区,可能背景区部分空白

background-repeat  属性定义背景图像的重复方式。背景图像可以沿着水平轴,垂直轴,两个轴重复,或者根本不重复。

1. 属性no-repeat:图片不重复

2.1 写头部 head

主要是分析这个结构怎么写

分成三个步骤:

1. 左半部分

2. 右半部分

3. head整体设置padding撑起来

(一)、左半部分

     <div class="head">
            <!-- head左半部分 -->
            <div class="headLeft">
                <span class="logoBox">
                    <img class="logo" src="./img/logo.png" />
                    <span>QQ</span>
                </span>
                <span>首页</span>
                <span>下载</span>
            </div>
        </div>

/* ============ head 左半部分 ========= */
.head .headLeft{
    width: 200px;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
}

.head .headLeft  span{
    cursor: pointer;
}
/* 鼠标移入 变成蓝色 */
.head .headLeft span:hover{
    color: #09f;
}

.head .headLeft .logoBox{
    display: inline-flex;
    flex-direction: row;
    align-items: center;
}
.head .headLeft .logoBox .logo{
    width: 24px;
    height: 24px;
}

 (二)、右半部分

<div class="head">
            <!-- head左半部分 -->
            <div class="headLeft">
                <span class="logoBox">
                    <img class="logo" src="./img/logo.png" />
                    <span>QQ</span>
                </span>
                <span>首页</span>
                <span>下载</span>
            </div>

            <!-- head右半部分 -->
            <div class="headRight">
                <span>QQ会员</span>
                <span>QQ安全</span>
                <span>登陆</span>
            </div>
 </div>

(三)、给head设置整体样式

1. 让左右两部分对其显示(使用flex布局)

2. 让整体上下撑起来

3. 设置一个边框

.head{
    color: #fff;
    font-size: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 26px 60px;
    border-bottom: 1px solid hsla(0,0%,100%,.08);
}

知识点设置边框样式

hsla() 函数使用色相、饱和度、亮度、透明度来定义颜色。

HSLA 即色相、饱和度、亮度、透明度(英语:Hue, Saturation, Lightness, Alpha )。

  • 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  • 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取 0-100% 的数值。
  • 亮度(L) 取 0-100%,增加亮度,颜色会向白色变化;减少亮度,颜色会向黑色变化。
  • 透明度(A) 取值 0~1 之间, 代表透明度。

我做的效果图

2.2 知识解释

上面的代码中你应该注意到我经常使用的就是span标签和div标签,它们两个可以替代很多标签。

(一)、span和div的区别?

span是行内元素,显示效果上是多个span标签内容,可以显示在一行 

 <span>黄河之水</span>
 <span>天上来</span>
 <span>奔流到海不复还</span>

而div标签是块级元素,显示效果上是多个div标签内容,都会独占一行

<div>黄河之水</div>
<div>天上来</div>
<div>奔流到海不复还</div>

=》后面的标签如img、table、video 自己测试一下,探索知识也是种快乐

3.1 写主体main部分

分成两个逻辑

1. 先将 结构写好,设置好文字大小

2. 之后调整位置:水平居中(用flex布局),竖直方向偏下(用margin-top顶下来)

(一)、将两段文字结构先摆好、设置文字大小 

 <div class="box">
        <div class="head">
            。。。省略
        </div>
         <!-- main主体部分 -->
        <div class="main">
            <p>看看QQ有什么新鲜事</p>
            <span>查看详情 > </span>
        </div>
    </div>
.main{
    color: #fff;
}
.main p{
    font-weight: 600;
    font-size: 28px;
}
.main span{
    color: #09f;
    font-size: 14px;
}

(二)、调整位置

.main{
    color: #fff;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: 622px;
}

4.1 写footer部分

分析footer部分:首先鼠标移入显示二维码和颜色的功能我们暂时不做,先将整体结构做出来,后面我再来优化一下。
 

1. 我们先写一个图标+文字,后面的直接粘贴复制就可以

(一)、将写一个将图片大小、文字大小设置好 ,添加一个竖线

<div class="box">
        <div class="head">
           。。。省略
        </div>
        <div class="main">
           。。。省略
        </div>
        <!-- 底部部分 -->
       <div class="footer">
           <!--IOS-->
            <div class="item">
                <img src="./img/apple.png" />
                <span>IOS</span>
            </div>
            <div class="columnLine"></div>
        </div>
</div>
.footer{
    display: flex;
    flex-direction: row;
}
.footer .item{
    display: flex;
    flex-direction: row;
    align-items: center;
}
.footer .item img{
    width: 32px;
    height: 32px;
    margin-right: 8px;
}
.footer .item span{
    font-weight: 400;
    font-size: 24px;
}
/*给竖线一个样式*/
.footer .columnLine{
    width: 1.7px;
    height: 29px;
    background-color: #fff;
    opacity: 0.1; /*透明度*/
}

(二)、复制类名为item的结构,将图片换掉,footer设置固定宽度,所有元素space-bettwen排列,footer整体居中

<div class="footer">
            <!--IOS-->
            <div class="item">
                <img src="./img/apple.png" />
                <span>IOS</span>
            </div>
            <div class="columnLine"></div>
            <!--Android-->
            <div class="item">
                <img src="./img/android.png" />
                <span>Android</span>
            </div>
            <div class="columnLine"></div>
            <!--Windows-->
            <div class="item">
                <img src="./img/window.png" />
                <span>Windows</span>
            </div>
            <div class="columnLine"></div>
            <!--Linux-->
            <div class="item">
                <img src="./img/linux.png" />
                <span>Linux</span>
            </div>
            <div class="columnLine"></div>
            <!--masOS-->
            <div class="item">
                <img src="./img/apple.png" />
                <span>masOS</span>
            </div>
</div>
.footer{
    width: 1000px;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    margin: 0 auto;
    margin-top: 100px;
}

 

三、编写第二个模块

看一下目标图片:左边是两个图片,上下结构,  右侧是一个视频,总体水平排列。接下来一步一步完成。

 1. 如何通过chrome开发者工具偷素材

第一,打开咱们模仿的qq官网首页,之后按F12显示开发者工具栏,选中图片模块,再刷新一下页面,就可以看到请求回来的图片。

第二:去下载右侧欧阳娜娜的视频

2. 将第二段模块要素先放上去

第二部分的css样式我也单独抽离成一个文件

<!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>QQ-新不止步,乐不设限</title>
    <!--从外部引入css样式(这样写目的让css和html分开,显得清晰)-->
    <link href="./css/index.css" rel="stylesheet" type="text/css" />
    
    <!-- 引入第二部分的css样式 -->
    <link href="./css/second.css" rel="stylesheet" type="text/css" />
</head>
<body>
     <!-- 第一模块 -->
     <div class="box"> 
        内容省略。。。
     </div>
   
     <!-- 第二模块 -->
     <div class="box2">
        <!-- 左半部分 -->
        <div class="leftBox2">
            <img class="xin" src="./img/box2Xin.png" alt="">
            <img class="yuYue" src="./img/box2YuYue.png" alt="">
        </div>
        <!-- 右半部分:视频 -->
        <video class="rightVideo" src="./img/qqVideo.mp4"></video>
     </div>
</body>
/*第二个模块的样式*/
.box2{
    color: #fff;
    width: 100%;
    height: 100vh;
}

 3. 给每个元素设置宽高大小

使用chrome的开发者工具查看内容大小

/*第二个模块的样式*/
.box2{
    color: #fff;
    width: 100%;
    height: 100vh;
}
.leftBox2{

}
.leftBox2 .xin{
    width: 219px;
    height: 104px;
}
.leftBox2 .yuYue{
    width: 164px;
    height: 52px; 
}
.rightVideo{
    width: 627px;
    height: 353px;
    border-radius: 10px;
}

4.调整位置

1.  新不止步 乐不设限 和 QQ9预约  要上下排列

2. 左右 水平排列对其

/*第二个模块的样式*/
.box2{
    color: #fff;
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}
.leftBox2{
    display: flex;
    flex-direction: column;
    margin-right: 180px;
}
.leftBox2 .xin{
    width: 219.22px;
    height: 104.39px;
    margin-bottom: 30px
}
.leftBox2 .yuYue{
    width: 164.41px;
    height: 52.19px; 
}
/* 右侧视频 */
.rightVideo{
    width: 627px;
    height: 353px;
    border-radius: 10px;
}
 

5. 播放视频

1. video 标签里面要包裹 source标签,source标签用来指定播放视频的源

2. 在video标签添加视频控件属性

        <!-- 右半部分:视频 -->
        <video controls class="rightVideo">
            <source src="./img/qqVideo.mp4" type="video/mp4" />
        </video>

四、源代码和素材

qqHomePage: 模仿的qq首页代码

五、结束语

目前这个小项目就结束了,html和css这个基础部分,其实还是需要练习的,这个部分写的简单干净,后面JavaScript的逻辑才会更清晰。

学习是一个缓慢的过程,你不可能在极短时间内完整掌握所有知识,认清自己是必要。

学习编程需要大量练习,只有实践做实事,才能真正有所收获。

接下来,我们将把我们做的页面发布成网站,让任何可以上互联网的人观看,我认为当你学会发布网站,你将对前端开发有一个新的认识。

零基础学前端(七)将HTML+CSS静态页面 发布成网站-CSDN博客

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
精仿QQ网址导航源码更新说明: 2016.03.30 -- 清理了部分失效网址,增加了部分栏目分类. 精仿QQ网址导航源码特点: 1、以"QQ网址导航"为布局,一比一完美精仿而成.包括了腾讯好QQ导航的所有功能 2、QQ网址导航源码是按时间来自动切换背景的.晚上时间会自动就成黑夜背景. 精仿QQ网址导航源码系统简介: 1、本程序是基于SDCMS内核,程序体积小巧、采用ASP ACCESS构架二次开发适用于导航网站使用的程序.功能不算强大,但很实用。 2、模板采用html css架构,兼容世界之窗/360安全/360极速/FF/IE789及以上等主流浏览器. 3、网站前后台分离,安全稳定,防注入功能,数据库已做安全防下载处理。程序绝无后门无病毒,解压后数据自上传到主目录和任何二级目录均可以正常使用。 4、自带了ASP调试程序,双击打开即可测试.程序会在系统托盘处,如关闭浏览器后要重新打开,请在托盘处右键"重启服务"或退出,重新运行. 5、源码内置了主流分类栏目,用户自由增减.其中"大"和"地方"这两个分类由于极少维护,会大量占用后台分类列表,所以已将这两个分类移到了网站根目录中做为静态页面. 精仿QQ网址导航源码2016版,动态(带后台ASP ACCESS)与静态(无后台)双版本. 精仿QQ网址导航源码注意: 1.解开本程序包,上传到支持ASP的服务器上。(如使用无后台版可直接上传纯静态空间) 2.后台登陆地址:http://您的网址/admin/ 3.用户和密码均为admin  ---正式使用时请站长自行修改登陆密码. 4.数据库所在目录:Data  ---已经做了防下载处理。 5.网站配置文件:Inc/Const.asp  ---需要修改数据库名的站长请在此文件中改,此为全站配置文件请小心操作. 下载后的压缩包中两个目录说明: QQ网址导航2016源码_带后台版  ---此为带后台ASP版本可生成静态或动态运行,方便站长登陆后台编辑管理网址与分类. QQ网址导航2016源码_无后台版  ---此为无后台纯静态html版本,建议很少维护网站的站长使用此版(更简约,零风险). 精仿QQ网址导航源码前台页面:  精仿QQ网址导航源码后台管理 后台登录:http://您的网址/admin/   用户和密码均为admin  后台页面: 相关阅读: 同类推荐:搜索/网址导航源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tengyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值