01-CSS基础练习:JD首页的制作(顶部和底部)

前言

京东是典型的电商类网站,学习这个网站的制作比较有价值。我们准备用WebStorm进行开发。

京东首页的截图为:http://img.smyhvae.com/20180119_1653.jpgarrow-up-right

页面规划:新建一个空的工程

我们首先新建一个空的工程:

CSS初始化(基本样式)

京东网站有一些基本样式,在各个页面中都要用到:(将这些基本样式copy到css.base里面去)

base.css中的公共的部分:

上方代码解释:

(1)清除浮动的方式:

这是如今比较流行的清除浮动的方式。比如小米官网就是采用的这种。

(2)其他属性:

我们给fieldset, img,input,button等标签设置了outline-style:none,意思去掉轮廓(比如去掉输入框外面的蓝边框,去掉之后,蓝色没有了,但是黑色依然存在)。去掉的原因是:首先,轮廓不好看;其次,在google浏览器和在火狐浏览器上,渲染的效果不同。

img标签中,我们通过vertical-align:middle属性去掉图片底侧默认的3像素空白缝隙,还有一种方法可以达到效果,那就是display: block

h1,h2,h3,h4,h5,h6设置font-size:100%是因为:h标签在每个浏览器中显示的大小不一致,设置此属性则表示,让它们都和父亲一样大

(3)一些小标记

s是删除线,iem是斜体。我们经常用它们做一些小装饰、小图标。

引入css文件

base.css初始化之后,我们需要在html文件中引入它。引入外部样式表的方式如下:(stylesheet指样式表)

效果如下:

注意,base.css和index.css的书写顺序不能颠倒,因为是按照书写顺序,从上往下进行加载的。

Favicon 小图标

Favicon 图标指的是箭头处这个小图标:

官网链接https://www.jx.com/favicon.icoarrow-up-right可以下载这个小图标。

我们把favicon.ico图片放到工程文件的根目录,通过下面这种方式进行加载:

注意,shortcut icon是Favicon的专有名词,不能改成别的单词。

代码位置:

顶部导航的制作

我们先制作下面这个部分,它位于网站的最顶部:

顶部导航栏的html结构如下:(直接放在body标签下)

顶部导航栏需要加入的css样式如下:(放到base.css中)

css代码解释:

(1)整个的顶部导航栏是一个shortcut:

然后将左侧的文字设置为左浮动,右侧的文字设置为右浮动。

(2)完成左侧部分的文字。

(3)右侧部分文字的结构:ul中放了九个li,用来存放文字。代码快捷键是ul>li*9(符号>是包含的关系)。

需要注意的是,“登录”和“注册”是同一个里面的两个<a>。它们是一个整体,所以要放到同一个li里。

(4)文字中间的间隔线:

上图所示,我们发现,每个li之间都有1像素宽、12像素高的间隔线,这个也是用li做的。

(5)增加文字右侧的小三角。

(6)在手机京东这个li中增加手机小图标,这里用到了css精灵图。

京东顶部导航条的工程文件如下:

http://download.csdn.net/download/smyhvae/10214943arrow-up-right

顶部banner图

接下来我们只做顶部的banner图,效果如下:

也就是上图中“1元抢宝”的那个位置。

涉及到的html代码如下:

在base.css中涉及到的css代码如下:

代码解释:

重点是close-banner这个class,也就是右上角的那个X。这里用到了子绝父相,注意,设置相对定位的父亲是tb这个class,因为要考虑到网页缩放的情况。

.close-banner:hover这个属性里,我们设置的背景图的定位是bottom,意思是,保证精灵图和父亲的底边贴齐,就不用使用像素的方式对精灵兔图进行定位了。

搜索框

搜索框的UI如下:

上图中,包含了四个部分:

  • 左侧的logo

  • 中间的搜索框

  • 右侧的购物车

  • 热搜文字(中间搜索框的下方)

我们在WebStorm中输入.search-logo+.search-input+.search-car+.search-moreA,然后按tab键,就可以补齐代码:

相关的html代码如下:

相关的css代码如下:

对于这四个部分,我们依次来讲解。

为了便于SEO,需要给图片这个超链接加上文字,然后设置文字的缩进为text-indent: -9999px;

2、搜索栏

“搜索”按钮:当我们把鼠标放在“搜索”上的时候, 发现鼠标变成了小手,这里是用到了cursor属性。

cursor有如下属性值:

3、购物车

购物车里包含了四个元素:一个文字,三个图标。

为了让文字“我的购物车”这个<a>上下方向居中,我们给<a>标签的行高line-height为父亲的高度。

另外,“我的购物车”这四个字并不是水平居中的,于是,我们可以给它一个左侧的padding,而不用给右侧padding。

另外三个小图标可以用绝对定位来做。

右上角的小图标(圆角矩形):它的红色背景不是图片,而是用border-radius属性画的圆角矩形

圆角矩形border-radius有下面几种画法:

搜索框下方的热搜文字

热搜文字的功能性并不强,仅仅使用几个超链接<a>标签即可(每个 a 之间用margin隔开)。不需要像别的导航栏那样,在ul里放li,在li里放a。

注意,每个 a 之间是用margin隔开,不是用padding隔开;否则的话,鼠标点击中间的空白处也会出现跳转。

顶部导航条+顶部banner+搜索框的工程文件如下:

http://download.csdn.net/download/smyhvae/10218022arrow-up-right

slogen:口号

要求实现的效果如下:

上图可以看到,这里要实现的效果是:无论浏览器如何移动,要保证第二个slogen的左侧位于浏览器的正中间。这是可以用到绝对定位的知识。

html的代码如下:

class=slogen指的是整个slogen区域。item表示四个口号中相同的部分。

css的代码如下;

我们给item设置left: 50%;,确保每个item移到了父亲的正中间。然后每个item各自移动相应的距离即可实现。

最下方的购物指南&区域覆盖

需要实现的效果如下:

上图中,需要实现的内容包括两个部分:左侧的购物指南和右侧的区域覆盖(我把这两个部分用红线隔开了)。

购物指南

需要使用的布局如下:

这里的重点是要量出dt和dd的行高。

html代码如下:

因为这片区域是浮动的,我们要通过clearfix这个class清除浮动,防止其被覆盖。

css代码如下:

区域覆盖

html代码如下:

css代码如下:

注意这里将精灵图设置为背景时,用到的定位属性是left bottom,意思是保证精灵图的左侧跟父亲左侧贴齐,下方和父亲下方贴齐。这样做的话,就不用通过像素来进行定位了。

最底部

最底部的效果如下:

如上图所示,它包含了三个部分。

涉及到的html代码如下:

涉及到的css代码如下:

你去京东官网看看,发现最最底部的文字竟然是图片:

总结

以上全部内容,最终实现的效果如下:

对应的工程文件如下:

Last updated