对html5up部分网站模板的分析


相关网站:

HTML5 UP! Responsive HTML5 and CSS3 Site Templates

https://developer.mozilla.org/

下载链接:

Phantom - 幻影:https://html5up.net/phantom/download

Editorial - 编辑:https://html5up.net/editorial/download


两者的文件结构如下:

assets - 资产

images - 图片

elements - 元素

generic - 通用的

generic - 主页

LICENSE - 许可证

README - 自述


先对 Phantom - 幻影 进行分析:

Phantom展示页:[Phantom | HTML5 UP](https://html5up.net/phantom

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
assets
- css
- fontawesome-all.min.css
- Font Awesome图标库样式
- main.css
- 主样式表,包括重置样式、文本样式、布局样式等
- noscript.css
- 当JavaScript被禁用时的样式定义
- js
- breakpoints.min.js
- 包含用于响应式设计的断点功能
- browser.min.js
- 包含浏览器检测功能,用于识别浏览器类型、版本、操作系统等信息
- jquery.min.js
- jQuery库的压缩版本,提供DOM操作、事件处理等功能
- util.js
- 包含一些实用函数,如navList生成器、panel化元素、placeholder属性polyfill等
- main.js
- 主JavaScript文件,包含页面初始化动画、触摸检测、表单自动调整大小、菜单处理等逻辑
- sass
- base
- _page.scss
- 包含页面基本样式设置,例如视口配置、最小宽度、盒模型等。
- _reset.scss
- 提供CSS重置样式,重置HTML元素的默认样式。
- _typography.scss
- 包含排版相关的样式定义,如字体、颜色、链接、标题等。
- components
- _actions.scss
- 包含动作按钮和链接的样式定义,使用Flexbox布局。
- _box.scss
- 包含盒子模型的样式定义,用于创建具有边框和内边距的容器。
- _button.scss
- 包含按钮的样式定义,包括提交按钮、重置按钮、普通按钮等。
- _form.scss
- 包含表单元素的样式定义,包括输入框、选择框、文本区域等。
- _icon.scss
- 包含图标的样式定义,用于图标的显示和交互效果。
- _icons.scss
- 包含图标列表的样式定义,用于展示一系列图标。
- _image.scss
- 包含图像的样式定义,用于图像的布局和样式。
- _list.scss
- 包含列表的样式定义,用于无序列表和有序列表的样式。
- _row.scss
- 包含行布局的样式定义,用于创建响应式布局的行。
- _section.scss
- 包含章节和文章的样式定义,用于章节和文章的布局和样式。
- _table.scss
- 包含表格的样式定义,用于创建表格和表格单元格的样式。
- _tiles.scss
- 包含瓷砖布局的样式定义,用于创建响应式瓷砖布局。
- layout
- _footer.scss
- 包含页脚区域的样式定义,使用Flexbox布局,定义了页脚内容的排版和响应式调整。
- _header.scss
- 包含头部区域的样式定义,包括logo和导航菜单的样式,以及响应式调整。
- _main.scss
- 包含主内容区域的样式定义,主要为内边距的设置和响应式调整。
- _menu.scss
- 包含菜单的样式定义,特别是移动设备上的侧边栏导航菜单的显示和隐藏效果。
- _wrapper.scss
- 包含页面包装器的样式定义,用于设置页面内容的最大宽度和内外边距。
- libs
- _breakpoints.scss
- 包含断点功能的样式定义,用于响应式设计的媒体查询。
- _functions.scss
- 包含Sass函数的样式定义,提供了一系列用于处理数据的工具函数。
- _html-grid.scss
- 包含HTML网格布局的样式定义,用于创建灵活的网格系统。
- _mixins.scss
- 包含Sass混合宏的样式定义,提供了一系列可重用的样式片段。
- _vars.scss
- 包含全局变量的样式定义,如颜色、字体、尺寸等。
- _vendor.scss
- 包含第三方库的样式定义,用于添加浏览器前缀等。
- main.scss
- noscript.scss
`main.scss` 和 `noscript.scss` 是两个不同的SCSS(Sass)文件,它们在Web项目中扮演不同的角色:

### main.scss
- **主样式表**:`main.scss` 通常是一个项目的主样式文件,它作为整个样式表的入口点。在这个文件中,你会导入项目所需的所有其他SCSS文件和库。
- **模块化组织**:通过导入`libs`、`base`、`components`和`layout`等目录下的SCSS文件,`main.scss` 组织和管理项目的样式代码,使其模块化和结构化。
- **样式集成**:它确保所有样式都被正确编译和链接到一起,形成一个完整的CSS文件,该文件随后会被应用到项目的HTML页面中。
- **维护和更新**:由于所有样式都通过`main.scss`导入,更新和维护样式变得更加集中和方便。

### noscript.scss
- **非JavaScript环境样式**:`noscript.scss` 包含当JavaScript被禁用或不可用时应用的样式。这确保了即使在没有JavaScript支持的情况下,网站也能提供基本的样式和功能。
- **增强可访问性**:通过为不支持或禁用JavaScript的用户提供备用样式,`noscript.scss` 增强了网站的可访问性和用户体验。
- **样式回退**:这个文件可能包含一些回退样式,以确保在JavaScript不可用时,网站的某些部分仍然可以以一种优雅的方式展示。
- **特定条件样式**:`noscript.scss` 中的样式只会在`<body>`标签上应用`is-preload`类的特定条件下被激活,这通常与页面加载状态有关。

总的来说,`main.scss` 是整个项目样式的中心枢纽,而`noscript.scss` 则专注于在特定条件下(如JavaScript不可用)提供样式支持。这两个文件共同确保了项目的样式完整性和灵活性。

纯html/渲染 前后对比

纯HTML:

渲染后:

现在我们照着html5up-phantom做一个自己的:

1.html

先从index.html开始做,搭建纯html框架;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<!DOCTYPE html>
<!--
Html-Birth by 霜晴
opentap.cn | @霜晴
对着html5up-phantom照葫芦画瓢之作
-->
<html>
<head>
<title>霜晴避风港-新生</title>
<meta charset="utf-8" />
</head>
<body class="is-preload">
<!-- Wrapper-包装 -->
<div id="wrapper">

<!-- Header-头部 -->
<header id="header">
<div id="inner">

<!-- Logo -->
<a href="index.html" class="logo">
<span class="symbol"><img src="images/logo.png" alt="" /></span><span class="title">霜晴避风港-新生</span>
</a>

<!-- Nav-导航链接 -->
<nav>
<ul>
<li><a href="#menu">Menu-目录</a></li>
</ul>
</nav>

</div>
</header>

<!-- Menu-目录 -->
<nav id="menu">
<h2>Menu</h2>
<ul>
<li><a href="index.html">Home-主页</a></li>
<li><a href="about.html">About-关于</a></li>
</ul>
</nav>

<!-- Main-主要内容 -->
<div id="main">
<div class="inner">
<header>
<h1>欢迎来到霜晴避风港-新生。我希望可以通过这个工程掌握制作精美实用网页的能力。<br />
可以跳转到<a href="https://opentap.cn">我的博客</a></h1>
<p>... la ringrazio.</p>
</header>
<section class="tiles">
<!-- 瓷砖式色块 -->
<article class="style1">
<span class="image">
<img src="images/pic01.jpg" alt="" />
</span>
<a href="about.html">
<h2>About-关于</h2>
<div class="content">
<p>关于我-我是谁?我在哪?我要做什么?</p>
</div>
</a>
</article>
<!-- article class="style2"...照着上面可以创造更多瓷砖快-->
</section>
</div>
</div>

<!-- Footer-页脚 -->
<footer id="footer">
<div class="inner">
<section>
<h2>留言</h2>
<form method="post" action="#">
<!-- 一个文字输入框+一个邮箱输入框(分别占半字段空间)+一个文本区域(占一个字段空间)-->
<div class="fields">
<div class="field half">
<input type="text" name="name" id="name" placeholder="昵称" />
</div>
<div class="field half">
<input type="email" name="email" id="email" placeholder="Email" />
</div>
<div class="field">
<textarea name="message" id="message" placeholder="留言"></textarea>
</div>
</div>
<!-- 提交按钮 -->
<ul class="actions">
<li><input type="submit" value="Send" class="primary" /></li>
</ul>
</form>
</section>
<section>
<h2>Follow</h2>
<!-- 图标-通往不同平台的个人主页 -->
<ul class="icons">
<li><a href="#" class="icon brands style2 fa-github"><span class="label">GitHub</span></a></li>
</ul>
</section>
<!-- 版权声明 -->
<ul class="copyright">
<li>&copy; 霜晴. All rights reserved</li><li>Design: <a href="https://opentap.cn">霜晴避风港</a></li>
</ul>
</div>
</footer>

</div>

<!-- Scripts-脚本 -->
<!-- <script src="assets/js/jquery.min.js"></script>
<script src="assets/js/main.js"></script> -->

</body>
</html>

这是index.html,它现在长这样(对应上面的代码):

此时的文件结构是这样的:

1
2
3
4
5
6
7
html-birth

-images
-logo.png
-pic01.jpeg

-index.html
2.css

可以发现JS脚本对于网页是非常重要的。正好我们也发现了写Scripts脚本的位置。

我们从asserts/js/main.js入手。但我认为得先介绍一下jquery.min.js。

jQuery 是一个快速、小巧且功能丰富的 JavaScript 库。它由 John Resig 创建,并于 2006 年 1 月发布。jQuery 的设计宗旨是简化 HTML 文档遍历和操作、事件处理、动画和 Ajax。以下是 jQuery 的一些关键特点:

  1. 简化选择器:jQuery 提供了一个简洁的 API 来选择 HTML 元素,使得 DOM 操作更加直观和简洁。

    1
    2
    3
    // 使用 jQuery 选择元素
    $('#myId').css('background-color', 'blue');
    $('.myClass').hide();
  2. 事件处理:jQuery 提供了一个统一的方法来绑定事件处理器,无论在哪种浏览器上。

    1
    2
    3
    4
    // 绑定点击事件
    $('#myButton').click(function() {
    alert('Button clicked!');
    });
  3. 动画和效果:jQuery 允许你轻松地为元素添加动画效果。

    1
    2
    3
    4
    // 淡出效果
    $('#myElement').fadeOut();
    // 滑动效果
    $('#myElement').slideUp();
  4. Ajax:jQuery 提供了一个简单的方式来进行异步数据请求,使得从服务器获取数据和更新页面部分内容变得容易。

    1
    2
    3
    4
    // 使用 jQuery 发送 GET 请求
    $.get('/api/data', function(data) {
    $('#result').html(data);
    });
  5. 插件生态系统:jQuery 拥有一个庞大的插件生态系统,开发者可以创建和分享扩展 jQuery 功能的插件。

  6. 兼容性:jQuery 自动处理浏览器兼容性问题,这意味着你可以在不同的浏览器上使用 jQuery 而不需要担心兼容性问题。

  7. 链式调用:jQuery 允许链式调用,这意味着你可以在一个表达式中连续调用多个 jQuery 方法。

    1
    2
    // 链式调用
    $('#myElement').hide().addClass('hidden').fadeIn();
  8. 轻量级:尽管功能丰富,jQuery 的文件大小相对较小,压缩后的版本通常在 30KB 左右,这使得它在加载速度上具有优势。

jQuery 已经成为 Web 开发中非常流行的库之一,尽管随着现代浏览器原生 JavaScript API 的增强,一些 jQuery 的功能可以通过原生 JavaScript 实现,但 jQuery 仍然因其简洁的语法和广泛的兼容性而在许多项目中被使用。

让我们回到main.js。照着html5up-phantom的main.js做一个自己的main.js(假设我们真的懂js)