整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML+CSS基础训练之实现一个“真实”的网页

、任务介绍:

高保真的完成下图布局:

二、分析布局

首先要分析一下各个模块的布局

我们依旧使用的盒子模型。

首先先分为两个大盒子(红色边框)header 盒子和 content 盒子。

其中content中相对对来说比较简单,就需要添加需要的内容文字就好啦。

header相对于基本作业要复杂一些。

在header中首先要分为两个盒子(绿色边框)第一个盒子head装的是标题,下面的盒子info_box装了三个盒子。包括信息盒子info、评论盒子comment_box评论盒子、分享盒子share_box。

评论盒子comment_box中 分为 join div元素和 comment div元素

分享盒子share_box中 分为sina (微博)qqzone(qq空间)wechat(微信)

大体的布局还是用div元素实现,其中信息盒子与评论盒子打算用p+span元素实现,分享盒子用div+“雪碧图”实现。

标题框和内容框的距离为40px。

三、完成html代码

根据我们上面对各个模块布局的分析,我们接下来就可以写html代码啦~其中在header的info盒子,其中信息盒子与评论盒子打算用p+span元素实现(语义化更好一点),分享盒子用div+“雪碧图”实现。

(这里还是有需要的改进的地方,比如行前面的空格我是使用的 空格键,应该还有更好的方法,请大佬指教嘿嘿~)

代码如下:

<html>

<head>
    <title>加分作业
    </title>

    <link rel="stylesheet" href="css/demo2.css">

</head>

<body>
    <div class="container">
        <div class="header">
            <p class="head">啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦</p>
            <div class="info_box">
                <p class="info">
                    <span>2020年5月21日 08:38:23</span><br>
                    <span class="text">来源:</span>
                    <span class="sourse">蜡笔小新酱</span>
                    <span class="icon_1"> </span>
                </p>
                <div class="comment_box">
                    <p class="join"><span>0</span>人参与</p>
                    <p class="comment"><span>0</span>人评论</p>
                    </p>
                </div>
                <div class="share_box">
                    <div class="sina"></div>
                    <div class="qqzone"></div>
                    <div class="wechat"></div>
                </div>
            </div>
        </div>
        <div class="content">
            <p><span>      我的名字是蜡笔小新,我今年五岁,我很快乐,我的妈妈是美牙,我的爸爸是广治
            </span><br>我的朋友有</span><br/>      阿呆<br/>      风间
                <br/>      正南<br/>      妮妮<br/>      小白<br/></p>

        </div>


    </div>
</body>

</html>

四、CSS美化

为了尽可能高保真,我们要测量一下各个模块之间的距离。

标题框和内容框的距离为40px

在整个标题盒子 header中,标题head和信息盒子info_box之间的距离30px

在信息盒子中,来源盒子info和评论盒子comment_box的距离是228px

评论盒子comment_box和分享盒子share_box之间的像素是30px

其中来源盒子info中的时间和来源之间的像素是10px

在评论盒子中的 参与和评论之间的像素为20px

在分享盒子中每个图片之间的距离为10px

css代码如下:

* {
    margin: 0px;
    padding: 0px;
}

.container {
    width: 670px;
    height: 800px;
    margin: auto;
}

.head {
    font: bold 24px Microsoft Yahei;
    margin-top: 40px;
}

.info {
    font: 12px Microsoft Yahei;
    color: #999;
    margin: 25px 0 5px 0;
    line-height: 20px;
    width: 350px;
}

.header {
    height: 142px;
    width: 655px;
    border-bottom: 1px solid #828181;
    display: flex;
    flex-direction: column;
}

.content p {
    line-height: 40px;
    font: Microsoft Yahei;
    color: #636363;
    margin-top: 40px;
}

.content p span {
    line-height: 15px;
}

.icon_1 {
    background: url("../img/icon_1.png") no-repeat 2px center;
    padding: 19px;
}

.info_box {
    display: flex;
}

.comment_box {
    display: flex;
    color: #999;
    margin: 40px 30px 5px 0;
}

.comment_box p {
    font: Microsoft Yahei;
    font-weight: lighter;
    font-size: 12px;
}

.share_box {
    display: flex;
    font-size: 12px;
    height: 40px;
    margin: 32px 0px 5px 0;
}

.join {
    margin: 0px 20px;
}

.qqzone {
    margin-left: 10px;
}

.wechat {
    margin-left: 10px;
}

.comment_box span {
    font-family: 'Georgia';
    font-size: 16px;
    font-style: normal;
    font-weight: bold;
    color: red;
}

.sina {
    background-position: 0px 0px !important;
}

.qqzone {
    background-position: 0px -32px !important;
}

.wechat {
    background-position: 0 -66px !important;
}

.share_box div {
    width: 40px;
    height: 30px;
    background: url(../img/icon_3.jpg);
}

五、CSS美化分析

1.使用行内元素span标签。作为行内元素span标签使用起来也很方便,作为一个小容器,可以把容器分为多个小容器,方便容器中个别部分应用样式,对于容器中其他部分实现特别的效果。其中在评论盒子中用到。如下图。我们可以看到 0人参与 0人评论 可以用p元素一行完成,但是有一个问题,“0”的字体和颜色和别的字不太一样。我们在实现的过程中可以再多写几个div 然后重新布局但是那样太麻烦了,直接使用行内元素就可以搞定。

html代码如下:

 <p class="join"><span>0</span>人参与</p>
 <p class="comment"><span>0</span>人评论</p>

css美化:

.comment_box {
    display: flex;
    color: #999;
    margin: 40px 30px 5px 0;
}
.comment_box span {
    font-family: 'Georgia';
    font-size: 16px;
    font-style: normal;
    font-weight: bold;
    color: red;
}

2.在分享盒子share_box中设置背景图片的时候使用雪碧图。

先来说一说雪碧图是怎么回事

首先把网页中一些背景图片整合到一张图片文件中(png格式)

再利用CSS的"background-image"引入图片,配合"background- repeat"禁止平铺

最后利用css的"background-position"进行背景精确的定位出背景图片的位置(默认起始位置为background-position:0% 0%;如果background-position属性值之设置一个,那么另一个默认为center。

我们需要加载的图片素材是这样的

而我们最后要的效果是这样的,是三张分开的图片,但是都是上面图片的一部分

此时我们就可以用雪碧图啦~先设置 sina wechat qqzone 这三个盒子的大小并使这三个盒子都以这张雪碧图为背景:

.share_box div {
    width: 40px;
    height: 30px;
    background: url(../img/icon_3.jpg);
}

后在各个div中使用background-position进行定位。就是定位到我们想要的部分。

.sina {
    background-position: 0px 0px !important;
}
.qqzone {
    background-position: 0px -32px !important;
}
.wechat {
    background-position: 0 -66px !important;
}

特别要注意一点 在给div添加定位时,要写!important提升指定样式规则的应用优先权。这样才可以定位到不同图片的坐标。

使用雪碧图的优点:如果图片来源于网页的话,就可以减少http请求的次数,提高页面加载速度。方便修改。

六、优化

根据我们以上的效果,我们可以进行一下优化。比如添加背景图片~或者添加鼠标悬停的效果。

在这里,我(突发奇想)设计了此页面的一个深色模式(其实就是把白底黑字换成暗底白色来)还有一些鼠标悬停的效果。

添加背景图片的css代码如下:

.container {
    width: 670px;
    height: 500px;
    margin: auto;
    background-position: center;
    background-image: url(../img/bgimg.jpg);
    background-repeat: no-repeat;
    background-size: 100%;
}

添加鼠标悬停效果css代码如下:

.sourse:hover {
    color: red;
    cursor: pointer;
    text-decoration: underline;
}
.comment_box p:hover {
    cursor: pointer;
    text-decoration: underline;
    color: red;
}
.share_box div {
    cursor: pointer;
}

七:效果展示

高保真:

优化图:

总结和反思:

1,添加css时,一定要写这句:

* {
    margin: 0px;
    padding: 0px;
}

否则会页面的内容不会贴顶,就是总是和页面顶部有一些距离。

2,通过这次实验我更进一步的体会到了盒子模型的一些特点,对boder margin padding 有了更深一步的理解。可以把盒子模型想成一个装在快递盒子里新手机盒。新手机是我们的内容,手机和手机盒的泡沫就是padding(内边框),手机盒子的纸壳就是border(边框),最后手机盒子和快递盒子之间的距离就是margin(外边距)。

  • TML标签:

  1. 所有内容都在<html></html>标签之内;

  2. <head></head>内放的是头部信息,是对页面的描述,不会直接显示在页面中。

  3. <head></head>内的<title></title>中设置的是页面的标题,<title></title>只能放在<head></head>中;

  4. <body></body>是页面的主体,大部分显示内容都定义在这里。

  • HTML注释:<!-- -->:

    1. 注释不允许嵌套

  • html常用标签:

    1. h标签(标题),HTML定义了<h1></h1>到<h6></h6>六个h标签,分别表示不同大小的字体。h1最大,h6最小。

    2. <br/>只是回车,<p>是段落。<p>前后会有比较大的空白,而<br/>则没有。

    3. <center>居中显示.

    4. <b>、<strong>粗体,<i>、<em>斜体。<u>下划线。

    5. <sub>2</sub>下标,如:H<sub>2</sub>O

    6. <sup>2</sup>上标,如:10<sup>2</sup>

    7. <font></font>字体标签,<font color=“red“ size=“7” face=“隶书”>红色</font>。color(设置颜色) size(1-7) face(设置字体,设置字体是注意用户计算机中必须有该字体才能正常显示)

    8. <hr> color size(厚度) width(长度) align=left/center/right (默认为剧中显示)

    9. <pre> 预格式化 保持本色;

    10. HTML特殊字符:&lt;(小于号,less than);&gt;(大于号,greater than);&nbsp;(空格)。

    11. 超链接:<a>标签的一些常用属性:href、title、target、name

    12. 插入图片:<img src=“路径”/>

    13. 列表:dl→(定义列表),ul→(无序列表), ol→(有序列表)。

    14. 表格:<table>;创建行:<tr>;创建单元格:<td>;表页眉:<thead>;表主体:<tbody>;表页脚:<tfoot>;表头:<th>。

    15. rowspan(合并行)、colspan(合并列)

    16. <input>是主要的表单元素,type的可选值:submit(提交按钮)、button(普通按钮)、checkbox表单标签:(复选框)、file(文件选择框)、hidden(隐藏字段)、image(图片按钮)、password(密码框)、radio(单选按钮)、reset(重置按钮)、text(文本框)。

    • meta标签:(包括在head标签中。主要用来描述页面自身信息,元信息)

    1. <meta name="keywords" content="C#学习资料,4k8k.net,.net开发,软件开发,编程自学网"/>

    2. <meta name="description" content="免费更新最新C#相关技术知识,主要包括:.net基础,网页前端,三层架构,SQL数据库..."/>

    3. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />网页编码

    4. <meta http-equiv="Refresh" content="3" />三秒钟后刷新此网页。

    5. <meta http-equiv="Refresh" content="3;url=http://www.4k8k.net" />三秒钟后重定向到新网页。

    6. <meta http-equiv="Cache-Control" content="no-cache" /> 禁止浏览器缓存页面。

    7. <meta name="名字" content="值" />关于网页的描述信息。

    8. <meta http-equiv="名字" content="值" />模拟http响应头信息。

    C#编程自学_做最好的.net自学资料站_更多文章请访问:http://www.4k8k.net/

    欢迎订阅。

    作为一个前端,经常写html文档,但是却很少去在意头部的标签有哪些,也很少在意每个标签的作用,下面我们来详细了解下。

    头部的标签,也就是写在<head><head/>里。通常会有6个标签: 

    <!DOCTYPE html>
    <html>
    <head> 
    <meta charset="utf-8"> 
    <title>文档标题</title>
    
    <base href="http://www.baidu.com/images/" target="_blank">
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    
    <style type="text/css">
    
    body {font-size:16px}
    p {color:blue}
    </style>
    <script> document.write("Hello World!") </script>
    </head> 
    <body> 文档内容...... </body> 
    </html>


    一、<title>元素。

    1.title 标签定义了文档的标题,在HTML文档中是必须的。它会展示在浏览器的工具栏上。

    2.如果要展示一个图标,可以再加一个<link>标签,<link>标签的 rel属性为“icon”,后面的

    href跟上图片的地址。

    <link rel="icon" href="图片url">


    二、<base>元素。

    base标签描述了基本的链接地址,该标签作为HTML文档中所有的链接的默认链接

     <head>
      <base href="http://www.php.cn/tpl/Index/Static/img/" target="_blank" /> 
      </head>   
      <body>  
        <img src="banner7.jpg"/>
      </body> 
    

    上面的img标签的src链接的地址就是base里的地址加上img里的地址。


    三、<link>元素。

    link标签定义了文档与外部资源之间的关系,它通常用于链接到样式表。

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


    四、<style>元素。

    style标签定义了HTML文档的样式,这个我们经常会使用到,都不会陌生。


    五、<meta>元素。

    meta标签提供了元数据.元数据也不显示在页面上,但会被浏览器解析。它常用于指定网页的描述,关键词,文件的最后修改时间,作者,和其他元数据。

    元数据可以使用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他Web服务。

    // 编码格式定义
    <meta charset="utf-8"> 
    // 为搜索引擎定义关键词:
    <meta name="keywords" content="HTML, CSS, XML, JavaScript">
    // 为网页定义描述内容:
    <meta name="description" content="头部标签 & 使用">
    // 定义网页作者:
    <meta name="author" content="Runoob">
    // 每30秒钟刷新当前页面:
    <meta http-equiv="refresh" content="30">
    
    // 视图层的参数定义
    <meta
    name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
    />
     //    content属性值 :
      //    width:可视区域的宽度,值可为数字或关键词device-width
      //    height:同width
      //    intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放
      //   maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,
      //   maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。
      //   user-scalable:是否可对页面进行缩放,no 禁止缩放


    六、<script>元素。

    script标签用于加载脚本文件,比如说javascript,可以直接书写js,也能用于链接外部的js文件。

    <script>
        document.write("Hello World!")
    </script>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>