1.4 页面的粉饰

除非您是极简主义者,不然的话就我们之前做的页面还是太单调了。在这一小节笔者将带着您做一些页面细节,顺便补充一些 HTML 与 CSS 的若干琐碎知识点。

如图所示,我们要做的粉饰有两部分,实际上也是我们经常页面装饰。首先是页面头部增加一个鱼的图案。实际上只要您喜欢,您可以随您的喜好把它添加到任何位置。这里只是把它添加到头部作为一种示例。另外一个装饰则是下方的页码。严格的说它并不只是一种装饰,还有一些实际的用途。特别是在我们要展示的内容比较多的时候,分页是一个极好的选择。

此外我们还要为接下来向动态网站过渡做一些准备,因为某些功能对于静态页面来说还是有一些困难的。当然我们也就不再把它托管到 GitHub Page 上面了。

1.4.1 页码的制作

我们首先来解决的问题就是下方的页面是怎么实现的。这实际上是 Foundation 中的 Pagination。您只需要把下面这段代码复制到您需要的位置上。

<br/>
<ul class="pagination" role="navigation" aria-label="Pagination" style="text-align:center;">
  <li class="disabled">Previous <span class="show-for-sr">page</span></li>
  <li class="current">1</li>
  <li><a href="#0" aria-label="Page 2">2</a></li>
  <li><a href="#0" aria-label="Page 3">3</a></li>
  <li><a href="#0" aria-label="Page 4">4</a></li>
  <li class="ellipsis" aria-hidden="true"></li>
  <li><a href="#0" aria-label="Page 9">9</a></li>
  <li><a href="#0" aria-label="Page 10">10</a></li>
  <li><a href="#0" aria-label="Next page">Next <span class="show-for-sr">page</span></a></li>
</ul>

任何一个能够独当一面的前端工程师都应该知道
是换行的意思。这是为了让我们的页面和之前的内容分开一行,不然它会紧贴着之前的内容。这看起来可不太美观。而至于
标签,它直接就是一个闭合的标签。因为您不能把一个换行符拆开,在其中加上什么内容。

而我们的页面也实际上是用列表实现的。这里有一个技巧,即很多成组出现的东西都可以使用列表来做。当然您需要通过编写 css 来调整它的样式。

现在您会发现您的页面选中页并不是红色的,它实际上是一个蓝色的方块。这和我们页面的主题颜色不同。所以我们要修改它,使它和我们的主题颜色一致。

这时候我们就要去找到我们的 css 文件。实际上这个样式在 foundation.min.css 文件中,然而这是一个经过压缩的文件,我们打开以后也很难找到我们需要修改的部分。所以我们我们应该找到 foundation.css 这个文件进行修改。当修改完成后在将其压缩为 foundation.min.css 文件。

您知道吗?

*.min.css一般作为经过代码清洗和压缩后的css文件,它可以提高我们页面的加载速度。然而在开发的过程中使用它往往是不方便的。所以我们一般的做法是在开发和调试的过程中使用未经压缩的css文件,之后再将其压缩。这里需要修改页面中样式表的连接,就我们的例子来说我们应该在开发和调试的过程中把样式表的连接改为<link rel="stylesheet" href="css/foundation.css">

我们首先要在css文件中找到 pagination 这个类,再找到它下面的 current 这个类。

.pagination .current {
    padding: 0.1875rem 0.625rem;
    background: #990000;
    color: #fefefe;
    cursor: default;
}

这里我们只需要把它的 background 属性改为红色就可以了。

1.4.2 选择器小课堂

我们来讲解一些 css 中比较难理解的一个东西就是选择器。对应我们这里例子,选择器当然是 .pagination .current ,没错这例子里面的选择器既不是 .pagination 也不是 .current 而是它们整体作为了一个选择器。这种选择器的学名叫做嵌套选择器。

一些刚刚上手的前端工程师总是搞不清楚 css 中的选择器,毕竟 css 的语法大致上已经简单到我们只需要看懂那些单词的含义就可以猜出来它到底是干什么用的。当然这样的语义化编程也有一个严重的问题就是对于一些刚刚上手的新人来说很容易忽视一些基础。现在笔者就来给您补上这一课。

首先您必须知道 css 的基础形式的选择器大致可以分为三种。第一种就是用标签名作为选择器的,这种选择器一般都用于全局样式的设置。譬如说您把一个 MarkDown 的文档渲染成 HTML 文件的话。就推荐用标签名做选择器来设置样式,因为这样的页面样式比较统一,而且比较简单。用标签名作为选择器更方便后期维护。

第二种则是用id作为选择器,这种选择器的特点就是在id名前加上了一个#号。有一些工程师认为id选择器并不是很好用,因为它并不如类选择器好维护。(其实它也有自己的用武之地)另外需要特别注意的是id名不要以数字开头,否则会在火狐浏览器中会出现问题。我们在通常的开发中见到这种选择器往往并不如另外两种选择器多。(某些专门开发除外,而且有的时候id选择器还是很方便的)

第三种则是我们最经常打交道的类选择器。类选择器是比较好维护的一种选择器。我们很方便的可以通过它对具有相似特征的事物的样式进行设置和维护。一般来说我们见到这种选择器的情况是最多的。

接下来我们要讲的则是分组、嵌套以及组合选择符。首先要讲的是分组。这件事实际上非常好理解。譬如说我们要把所有的标题都设置成黑体,毕竟通常情况下标题的字体不会有什么变化,只是大小有一些变化。那么我们就可以把选择器分组写成: h1, h2, h3, h4, h5, h6 这大大提高了我们的开发效率也节约了我们的维护成本。因为我们只需要维护一处的字体,所有的字体都会跟着发生变化。(当然这仍然遵守 css 后面的样式会把之前的样式覆盖掉的法则)

其次我们要讲嵌套,嵌套和组合选择符中的后代选择符实际上是一回事儿。.pagination .current 就是说具有 pagination 类的元素下的 current 类。这种嵌套可以应用于任意的基础选择器中。您也可以为所有 pagination 类下的 div 标签设置样式。我们做嵌套的时候都是以空格进行分割。

然后则是直接子元素选择器,譬如说 div>p 则是 div 标签下的直接 p 标签。这和 div p 这种后代选择器的区别是:后代选择器会对所有 div 标签下的 p 标签设置样式,而直接子元素选择器则只对 div 标签下面一层的 p 标签设置样式。即只对直接的子元素设置样式。如果 div 标签下间隔了其他标签则不会对其他标签下的 p 设置样式。

用加号表示的是相邻兄弟选择器,譬如 div+p 则是对 div 标签后面的第一个临接 p 标签进行样式设置。用波浪线表示的是普通兄弟选择器,譬如 div~p 则是对 div 标签后面所有临接的 p 标签进行样式设置。

最后要讲的则是伪类和伪元素。顾名思义,它们都是假装是一个类以及假装是一个元素。它们都是在其他的选择器后面加上一个冒号再加上伪类或者伪元素的。伪类则是用于设置像鼠标滑过(hover)这样的样式,伪元素则是用于设置像第一个字母(first-letter)这样的样式。

1.4.3 装饰图片的插入与剪裁

现在我们来插入鱼的装饰图片。插入一张图片本身是简单的,您只需要写:


<i mg src="img/fish.png"/>

而插入一张图片作为装饰图片却不这么简单。因为这张图片并不会处于一个我们想要的位置上。我们首先要对这张图片的层级进行调整:

style="position:absolute;z-index:1;"

当您使用 z-index 则需要配合 position:absolute 使用。否则您的层级设置并不会显现。

这里您如果想让下方的按钮浮上来还需要对 css 文件进行修改。我们为 header-subnav 类增加以下两个属性:

position:absolute;
z-index:2;

您知道吗?

当您编写 css 文件时,建议您在开头添加 @charset "UTF-8"; 以保证您的 css 会按照 UTF-8 编码保存、传输、解析。

接下来我们则要对这张图片进行剪裁,常规的做法是使用 clip 属性,用 rect 进行剪裁,注意使用 rect 进行剪裁的时候输入的剪裁值的顺序是上、右、下、左,而不是上、下、左、右,也不是对角线。(我们其实已经对这种从上方开始以顺时针方向选择的值比较熟悉了)这种方法适合比较精确的图片剪裁,即原图是把多张图片合并成一张图片的这种情况。这和我们现在面临的把一张独立的图片用于装饰作用是不太一样的。所以我们要使用的是另一种方法的剪裁。

我们要对图片的上一层加入样式属性:

style="overflow:hidden;"

然后只需要对图片的大小和位置再进行调整即可完成剪裁,对于我们这个例子来说则是:

<header class="header" style="overflow:hidden;">
  <h1 class="headline">Liu's Homepage</h1>
  
<i mg src="img/fish.png"/>
  <ul class="header-subnav">
    <li><a href="#" id="sub_index" class="is-active">Index</a></li>
    <li><a href="#" id="sub_works">Works</a></li>
    <li><a href="#" id="sub_notes">Notes</a></li>
    <li><a href="#" id="sub_resume">Resume</a></li>
  </ul>
</header>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,136评论 0 1
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,224评论 1 41
  • 销售成本与生态 从有形的产品到无形的服务,在它们被发掘出来时,就意味着它们诞生了,而后就会经由各种渠道,流入相应的...
    赵程冲阅读 303评论 0 0
  • 洁癖 前阵子和某某网销售人员聊天,聊到生活习惯上面的事情。我说我喜欢干净和整洁,经常会整理自己房间,只要是自己感觉...
    易兒善阅读 1,753评论 0 2