PS:这样起标题大家爱看么,还是都独立成篇比较好?哪个颜值高的给评论下呗🙃...
项目篇
@Web项目的一般研发流程
@获得设计效果图
由于是直接山寨美团,美团妹子的微信我一个也没有,此处我们只要自行截图并处理一下,以得到美术效果图了。
浏览器截图
- 使用 Chrome浏览器 打开 美团并缓慢地一撸到底,然后进行完整页面截图
- 浏览器会自动下载截图,在文件夹中找到这张图片
- 发现美团页面使用的是 单列通栏布局 (参考资料:常见页面布局)
校正截图尺寸
- 我们页面上右键检查打开控制台,在Elements选项卡下能够看到页面的HTML布局,从body开始逐渐向下筛查找到页面主体部分,左侧我们看到其宽度为1190像素,记下这个数据;
- 打开PS,将前面的截图拖入,ctrl+r打开标尺
- 设置一下PS:在窗口菜单下勾选显示 信息面板,然后按下图所示设置一下信息面板;
-
按ctrl+加号或减号,将视图缩放到合适尺寸,从左侧标尺拖拽出纵向辅助线,分别对应到主体内容的左右边界;
-
使用选区工具,框选出任意矩形选区,但其左右边界应对齐上一步中的辅助线,在右侧的信息面板中我们可以看到选区的宽度为1488像素,这就是截图中主体内容的宽度了!
-
我们发现1488px这一页面截图的宽度与页面的实际内容宽度1190px并不吻合,截图尺寸要大于实际页面尺寸,因此我们需要对截图进行一下图像缩小,其缩放比例为1190/1488;
-
PS菜单中图像-图像尺寸,打开下面的面板,查看当前图像尺寸
-
将尺寸等比缩小到宽度为1578*1190/1488=1,261.98≈1263像素,因此
- 现在我们的内容宽度基本为1190像素了!ctrl+s保存图片(怕操作不好建议对原始截图事先备份一下)
- 至此,我们完美得到 “设计效果图” 😎~
@PS整体布局分析
页面可以整理理解为页头宽(100%),内容与页脚窄(1190像素)的T字型布局,因此我们可以将大的页面布局拆分如下:
@页面切分实现
我们来做基本页面拆分,代码实现如下:
HTML
<body>
<!-- 页头 -->
<div class="header">页头</div>
<!-- banner -->
<div class="banner">BANNER</div>
<!-- 猫眼电影 -->
<div class="movie">猫眼电影</div>
<!-- 民宿推荐 -->
<div class="minsu">民宿推荐</div>
<!-- 猜你喜欢 -->
<div class="likes">猜你喜欢</div>
<!-- 美团导航 -->
<div class="navi">美团导航</div>
<!-- 友情链接 -->
<div class="links">友情链接</div>
<!-- 页脚 -->
<div class="footer">页脚</div>
</body>
下面我们根据类名给这堆破盒子插入样式!
<style>
/* 清除默认margin和padding */
* {
margin: 0;
padding: 0;
}
/* 所有div */
div {
font-size: 50px;
/* 文字水平居中 */
text-align: center;
}
/* 页头 */
.header {
/* 与页面等宽 */
width: 100%;
/* 高度与行高相等时 文字会垂直居中 */
height: 197px;
line-height: 197px;
/* 背景色 */
background-color: red;
}
/* 后面的大块div的共性:组合选择器 */
.banner,
.movie,
.minsu,
.likes,
.navi,
.links,
.footer {
/* 固定宽度 */
width: 1190px;
/* 左右居中 */
margin: 0 auto;
}
/* 每个盒子的颜色和高度不尽相同 */
.banner {
height: 447px;
line-height: 447px;
background-color: green;
}
.movie {
height: 382px;
line-height: 382px;
background-color: blue;
}
.minsu {
height: 774px;
line-height: 774px;
background-color: red;
}
.likes {
height: 841px;
line-height: 841px;
background-color: green;
}
.navi {
height: 330px;
line-height: 330px;
background-color: blue;
}
.links {
height: 610px;
line-height: 610px;
background-color: red;
}
.footer {
height: 141px;
line-height: 141px;
background-color: green;
}
</style>
就可以啦!页面运行效果如下:
帅爆了!今天的实操代码到此结束!下课!
基础篇
严肃点!以下是今天代码中涉及到的布局知识!
@基础概念
HTML
- 全写为HyperTextMarkupLanguage,直译为 超文本标记语言
- 言下之意明明一段字符代码,浏览器在显示(渲染)时却能形成很炫的效果,因此它是“超级文本”;
- HTML语言的基本元素是标签/元素;
- 每个标签都有其特定的语义,特定的属性,浏览器能够根据标签的语义和属性,按约定方式去绘制特定的效果;
<div class="minsu">民宿推荐</div>
- 在上面的HTML代码中
div就是标签名,我们注意到它是成对出现的,class="minsu"是它的一个属性; - HTML语言中有狠多标签和属性,每个标签名具体是何含义(语义),每个属性具体代表什么,浏览器应该怎么理解和渲染这些标签和属性,是有一整套标准的,即 W3C标准;
CSS
- 全称CascadingStyleSheets,直译为层叠样式表;
- 是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言;
- CSS文件扩展名为 .css;
- 通过使用CSS我们可以大大提升网页开发的工作效率;
- CSS3现在已被大部分现代浏览器支持,而下一版的 CSS4 仍在开发中。
W3C
- W3C 指万维网联盟(World Wide Web Consortium)
- W3C 创建于1994年10月,由 Tim Berners-Lee 创建;
- W3C 的工作是对 web 进行标准化,创建并维护 WWW 标准,用于规范浏览器对HTML和CSS的渲染行为;
- W3C 是一个会员组织,其会员包括微软、苹果、谷歌...不一一列举了,凡是造浏览器的厂商都是会员;
- W3C 标准被称为 W3C 推荐(W3C 规范)
- “推荐”而非强制,但上一个不响应“推荐”的浏览器已经被其亲妈所抛弃了,即微软抛弃IE的故事;
@HTML常用标签
div标签
- 语义就是分块(division),常用于页面大块划分
- 每个div标签在页面中独占一行
@HTML常用属性
class类
- class属性定义了元素的类名;
- CSS可以根据类名去定义一套样式,物以类聚,所有具有相同类名的标签/元素都将天下乌鸦一般黑,获得相同的样式;
- 例如上面的案例中我们给一个div元素添加了类名名曰
banner,在CSS样式(style)中,我们为其设置了元素高度、文本行高、背景色等样式,那么所有class为banner的元素都将具有这几个相同样式;
<div class="banner">BANNER</div>
.banner {
height: 447px;
line-height: 447px;
background-color: green;
}
@CSS选择器
标签选择器
- 选中所有特定的标签并同意添加样式
/* 标签选择器 选中所有div */
div {
...
}
类选择器
- HTML标签上有属性
class="xxx"时,CSS可以通过.xxx{具体样式}的方式来定位到所有具有该类名的元素,统一给它们添加相同的样式; - 例如上面的
.banner
通配符选择器
- 选中所有元素并统一添加样式!
* {
...
}
群组选择器
- 通过逗号隔开的方式,一次性选中一堆选择器(可以是标签选择器、类选择器、通配符选择器以及我们后续会学的各种复杂选择器),并给命中的元素统一添加样式;
.banner,
.movie,
.minsu,
.likes,
.navi,
.links,
.footer {
...
}
选择器权重
- 大家应该已经注意到了,标签选择器、类名选择器、通配符选择器常常会同时命中同一目标!
- 下面的例子中,类名为header的div元素会同时被三个选择器命中,如果这三个选择器的样式发生冲突的话,这个元素到底该听谁指挥呢?
* {...}
div {...}
.header {...}
- 为解决这个问题,W3C就提出了选择器权重这一概念!
- 多个选择器同时作用于相同元素且样式冲突的情况下,权重大的具有更高优先级;
- 因此本例中通配选择器-标签选择器-类名选择器的权重分别为0-1-10,样式冲突的情况下类名选择器会起作用;
- 后续随着我们的选择器种类越来越多、越来越复杂,相互交织和冲突的机会越来越多,我们在整体进行布局规划时就要尽量保持结构清晰、逻辑清晰!
@盒子模型
理论基础
- 如图,我们把任何一个元素都看成是摆在页面上的一个盒子;
- content部分是盒子中内容的宽高;
- border部分是盒子的边框;
- padding部分是内容距离边框的距离,我们称为内边距;
- margin部分是盒子边框距离相邻元素或页面边界的距离,我们称为外边距;
- 所以一个元素盒子真正在页面中占据的尺寸为:内容宽高 + 内边距 + 边框粗细 + 外边距;
demo
demos/002/盒模型.html
<!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>Document</title>
<style>
/*
该元素盒子实际占用宽度
=内容宽 + 左右内边距 + 边框 + 左右外边距
=200 + 20 + 10 + 5 = 235px
该元素盒子实际占用高度
=内容高 + 上下内边距 + 边框 + 上下外边距
=100 + 20 + 10 + 5 = 135px
*/
.box {
/* 内容宽高 */
width: 200px;
height: 100px;
/* 内边距 */
padding: 20px;
/* 边框 */
border: 10px solid black;
/* 外边距 */
margin: 5px;
/* 背景色 */
background-color: red;
}
</style>
</head>
<body>
<div class="box">
哥是一个盒子
</div>
</body>
</html>
盒子模型是页面布局的基础性概念,大家这里先有一个初步了解,后续我们还将持续用到它,深入它!
@今日样式详解
/* 当前盒子的内容宽度与父元素等宽 */
width: 100%;
/* 内容宽度 */
width: 1190px;
/* 当前盒子中的内容高度 */
height: 197px;
/* 字号为50像素,即每个字符恰好填满一个50像素见方的正方形 */
font-size: 50px;
/* 文字水平居中 */
text-align: center;
/*
文字在行高内垂直居中
因此想要让文字内容在盒子里垂直居中时
我们通常将行高设置的与内容高度一致
*/
line-height: 197px;
/* 盒子外边距0 */
margin: 0;
/* 盒子与内容的内边距为0 */
padding: 0;
/* 盒子的背景颜色:覆盖内容宽高 + 内边距 */
background-color: red;
项目源码
☛ 8大实战项目通透Web前端开发 FE8Max-2301
“这不需要测试,肯定是好的,不必担心!”