• 静态页面制作:6HTML布局(基线的应用)


        

        我们首先看看目前和目标的一个差距

     

        虽然我们现在现实还没有达到理想的效果,

     

        但现在至少我们已经明白为什么课后帮和HWHelper为什么不在一行了,

     

        为什么呢?那就是因为他们都是块元素。

     

        那么有没有什么办法让这两个元素编程行内元素,一旦成为行内元素,他们不就跑到一行去了吗。

     

        所以我们来看看方法一。

     

        方法一就是使用行内元素,行内元素可以摆在一行,我们现在明确的知道,

     

        h1标签和p标签他们都是块元素,所以我们该用哪个元素呢?

        我们接触过的行内元素就是a标签,我们是否可以使用a标签来解决这个问题呢?

     

        其实a标签是不合适的,因为a标签都是应用于超链接,

     

        那么课后帮和HWHelper他们其实都不是超链接,或者说我们并不希望他是超链接。

     

        那么问题来了,就是除了a标签之外,有没有用于文字的行内标签元素呢?

     

        答案是必须的,那就是span标签,span的意思就是小范围的意思,主要用于一小段文字,这正符合我们的要求。

     

        至于行不行我们试试再说。首先我们把HWHelper换成span标签试试。

     

        当把HWHelper从p标签换成span标签,现在就变成行内元素了。

     

        他的宽度也随之缩小,也就是和内容宽度是一样的。

     

        但是效果仍然没有达到,我们是否也需要将h1换成span标签呢,我给大家的建议是最好不要换。

     

        为什么呢?这里我们需要引入一个很重要的概念。那就是标签语义化。

        我们的网站如果发布到网络上,搜索引擎会派出网络蜘蛛来爬取我们网站的关键字,

     

        从而在用户搜索到相关的关键字的时候,把我们的网站呈现给用户。

     

        搜索引擎派出的网络蜘蛛毕竟不是人, 它其实不会看浏览器的效果,而是通过HTML代码来识别我们的页面。

     

        所谓识别页面其实就是通过HTML中标签来识别我们的内容。

     

        例如那些是标题,那些事段落文字,那些是图片都是通过标签来爬取的。

     

        从这个角度看,那课后帮用h1标签就再适合不过了,因为他就是我们整个网站的标题。

     

        然后网络蜘蛛过来一爬取就知道,原来这个网站的标题就叫做课后帮,这样他就明白了。

     

        标签语义化的另一个好处就是代码更容易阅读,

     

        比如说你写了一个HTML代码,里面全是h1、span、p标签等,那我完全不知道到底哪个是标题,

     

        哪个是段落,哪个是一小段文字。 但如果我看到你里面只有一个h1标签,那我马上就知道你到底在说什么。

     

        所以说h1标签最好不要换。

     

        现在问题又来了,h1标签不允许换,然后他又是块元素,那怎么办呢? 其实是有办法的,我们继续往下看。

     

        我们说这个一个标签到底是块元素还是行内元素并不是一成不变的,不是说天生怎样他就是怎么样,

     

        其实我们是可以通过样式来改变的。什么样式呢?

     

        就是display, 我们这里提到两个写法,分别是display:block和display:inline。

     

        那这个有什么作用呢,就是别管你之前写的是块元素还是行内元素,

     

        一旦你在样式中指定display:block 它就变成了块元素。

     

        同理只要你写上display:inline就会变成行内元素。我们来做一下。

     

     

        我们为h1标签添加样式,使h1标签从块元素变成行内元素。

     

        叫做display:inline;我们希望能够达到我们想要效果,看下图。

     

     

        此时课后帮就变成行内元素了,然后就跟HWHelper公用一行了。

     

        其实我们已经达到了成为一行的效果,现在我们在来看一下现实和理想还有没有差距。

        我们发现已经接近了理想效果,但是还是有些细节不太一样,哪里不一样呢?

     

        就是课后帮和HWHelper的样式。我们理想的样式是课后帮和HWHelper是顶端对齐,

     

        但是我们现实的效果是底端对齐, 那这个是怎么回事呢?

     

     

        难道说行内元素默认是底端对齐吗?这个理解不是很到位,我们对于这个细节来详细解释一下。

        我们通过写过的英文字母书写格式来举例,通过这个例子来深究底端对齐这么一个细节。

     

        英文子母在我们书写的时候,都有四线格, 其中从上往下数第三根线其实非常重要,

     

        他有一个自己的名字叫做基线, 我们看到图中写的7个字母。 这7个字母其实大多数都是以基线为基准的。

     

        首先看字母a、c、e体型比较小,那完全是在第二根和第三根之间。 字母b、d、f比较长,所以他们伸出去了。

     

        长出来的部分伸到了第一根和第二根之间, 那么字母g又比较特别,它其实分上下两个部分。

     

        上半部分也是以基线为准,在2、3根线之间,那么下半部分就伸到了3、4根之间。

     

        总而言之,这个基线对于英文字母的书写是非常重要的。

     

        那么我们来看看我们写的这几个字。

     

        其实课后帮这几个字也有一根基线, 但是这根基线并不是我们所想的那样,

     

        是不是从最底下开始的, 其实不是。他其实离最低端的部分有一段距离,课后帮这几个字有基线,其实HWHelper也有一根基线。

        HWHelper这个基线其实就跟我们的英文字母的基线差不多,

     

        但实际上HWHelper的基线和课后帮的基线并不在同一条水平线上。

     

        因为文字大小不一样,并且文字类型也不一样,一个是中文一个是英文,所以就更不一样了。

     

        那我们现在想做的事情就是让同一行的元素基线对齐。

        同一行的行内元素,基线要想对齐,这事怎么办呢?因为基线不一样,咱们得想个办法。

     

        我们这里采用的办法就是,让这两个元素互相靠近。

        当两个元素互相靠近之后,我们发现现在基线已经在底端对齐了,看起来效果就很好了,

     

        但是这个并不是我们理想的效果。我们理想的效果明明是在顶端对齐,那这事该怎么办呢?

     

        我们可以通过样式来控制同一行的行内元素的对齐方式,通过什么样式来控制呢?

     

     

        vertical:align这么一个东西来控制垂直的对齐方式,现在的状态实际上是一个默认状态。

     

     

        vertical-align:baseline; 其实就是我们所谓的基线对齐方式,我们不满意,我们不满意谁呢,

     

        其实是HWHelper这几个字,我们希望他在顶部。那我们就要对它进行修改。

        

        我们添加一个vertical-align:top;当我们添加这么一个方法时, 就会和整个行内元素顶部最高的对齐。

     

        其实现在就符合我们的要求了,那我们来看看代码。

     

        

        在代码中我们是有这样的一个样式,就是h1标签中有display:inline;这么写之后,

     

        课后帮就变成了行内元素, 然后把HWHelper改成了span标签,那么接下来我们需要让其顶端对齐。

     

        我们把代码填上。

     

     

        此时我们就已经达到我们理想的效果了,这里我们需要把代码写入到我们的sublime中。

     

     

        这里我们来整理一下我们今天所讲的内容,其实我们主要做了三件事:

     

        第一件事: 是我们把块元素p标签改成了行内元素标签span。

     

        第二件事: 是我们把h1标题标签通过display:inline;变成了行标签,使两行可以共用一行。

     

        第三件事: 是我们不满意底端对齐,所以我们通过vertical-align改变标签的样式。

     

        从而达到我们最理想的效果,以上是我们今天的内容,我们下节会继续分享“浮动腾挪”。

  • 相关阅读:
    RWCString 定义 memeroy leak
    打开eclipse报错
    Eclipse 增加php插件
    Shell 字符串的截取
    【转载】Shell判断字符串包含关系的几种方法
    Shell $? $* $@ 等含义
    Shell 获取指定行的内容
    概念性进程
    网络编程
    模块详解
  • 原文地址:https://www.cnblogs.com/hemiah/p/7348165.html
Copyright © 2020-2023  润新知