diff --git a/00-前端工具/01-Sublime Text在前端中的使用.md b/00-前端工具/01-Sublime Text在前端中的使用.md index 9c2ef4d..e3dc319 100644 --- a/00-前端工具/01-Sublime Text在前端中的使用.md +++ b/00-前端工具/01-Sublime Text在前端中的使用.md @@ -55,7 +55,7 @@ - [GitHub链接](https://github.com/pichillilorenzo/JavaScript-Completions) -在google上搜关键字"sublime javascript complete"找到的。另外还搜到一个[SublimeAllAutocomplete](https://github.com/alienhard/SublimeAllAutocomplete) +在google上搜关键字"sublime javascript complete"找到的。另外还搜到一个[SublimeAllAutocomp lete](https://github.com/alienhard/SublimeAllAutocomplete) ### JS代码格式化:JsFormat @@ -67,6 +67,33 @@ +### 代码快速生成 + + +(1)`>`符号的技巧: + + +输入`ul>li*9`,然后按tab键,生成的代码如下;(符号`>`是包含的关系) + +```html +
+
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
  • a
  • +
    + +``` + + + + + ## sublime text 快捷键 diff --git a/00-前端工具/WebStorm的使用.md b/00-前端工具/WebStorm的使用.md new file mode 100644 index 0000000..be99dba --- /dev/null +++ b/00-前端工具/WebStorm的使用.md @@ -0,0 +1,183 @@ + + + +## WebStorm的简单设置 + +#### 1、主题修改 + +可能大家会觉得软件的界面不太好看,我们可以换一下主题。选择菜单栏“File--settings--apperance--theme”,主题选择Darcula: + +![](http://img.smyhvae.com/20180118_1600.png) + +#### 2、导入第三方主题 + +系统提供的两种主题可能都不太好看,我们可以进入网站来获取第三方主题,这里推荐两个主题,大家二选一即可: + +- [Sublime](https://github.com/y3sh/Intellij-Colors-Sublime-Monokai) + +- [Material](https://github.com/ChrisRM/material-theme-jetbrains) + +![](http://img.smyhvae.com/20180118_1636.png) + +![](http://img.smyhvae.com/20180118_1637.png) + +上图中,在网站中将主题下载之后,是一个jar包。那怎么导入到WebStorm呢? + +别着急,回到WebStorm,选择菜单栏“ File-Import Settings”,将下载好的jar包导入即可。 + + + +#### 3、代码字体修改 + +选择菜单栏“File--settings--Editor--Font”: + +![](http://img.smyhvae.com/20180118_1627.png) + +上图中,点击红框部分,然后弹出如下界面: + +![](http://img.smyhvae.com/20180118_1628.png) + +我们在上图中修改代码的字体。 + +修改完之后发现 WebStorm 的一些默认字体(比如侧边栏的工程目录的字体)并没有发生变化,如果想改的话,也可以改(我个人一般是不改的)。 + + + +#### 4、关闭更新 + +如下图所示: + +![](http://img.smyhvae.com/20180118_1646.png) + +#### 5、快捷键习惯的修改 + + + + +#### 7、配置代码的自动提示 + + +### 新建一个空的项目 + +配置完成后,可以开始新建一个项目文件夹(站点),项目通常包含如下内容: + +- 首页:index.html + +- 样式:css文件夹 + - index.css + - 相同样式:全局样式、公共样式。起名为:base.css(基本样式)或者 global.css (全局样式) + +- 图片:images文件夹、文件 + +- 特效:js文件夹、js文件 + +**步骤如下:** + +新建一个空的项目: +![](http://img.smyhvae.com/20180118_1720.png) + +然后新建一个html文件: + +![](http://img.smyhvae.com/20180118_1602.png) + +新建一个空的文件夹,命名为`css`: + +![](http://img.smyhvae.com/20180118_1725.png) + +然后在这个css文件夹中,新建样式表:(比如index.css\base.css) + +![](http://img.smyhvae.com/20180118_1730.png) + +最后新建一个images文件夹,用于存放土片。这样的话,一个基本的项目结构就搭建好了: + +![](http://img.smyhvae.com/20180118_1733.png) + +接下来,开始运用起你们的前端知识吧。 + + + +## 使用技巧 + + + +#### 多光标编辑 + +我们可以按住鼠标不松手,选中多个光标,然后同时编辑: + + +#### 随时在浏览器中看代码效果 + +20180118_1658.png + +如上图所示,我们可以点击右上角的浏览器图标,在各个浏览器中看效果。 + + +#### 实时查看颜色 + +写代码时如果想输入颜色,会自动提示颜色的预览。 + +![](http://img.smyhvae.com/20180118_1702.png) + +点击最左侧的颜色预览,还能弹出调色板: + +![](http://img.smyhvae.com/20180118_1710.gif) + + + + + + +## tab键的代码补齐 + + +(1)在html文档中,输入`div*10`,弹出的效果如下: + +```html +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +``` + + + +(2)在html文档中,输入如下部分: + +``` +.search-logo+.search-input+.search-car+.search-moreA +``` + +按tab键后,弹出的效果如下: + +```html + +
    +
    +
    +``` + +你看,京东的搜索框就包含了这几个div: + +20180122_1045.png + + + +## 常用快捷键 + +#### 标签环绕 + +输入一段字符后,按住`Ctrl + Alt + T`,可以用标签将这段字符环绕: + +![](http://img.smyhvae.com/20180118_1719.gif) + + + + + + diff --git a/01-html/01-html标签图文详解(一).md b/01-html/01-html标签图文详解(一).md index 45fb424..5fd634f 100644 --- a/01-html/01-html标签图文详解(一).md +++ b/01-html/01-html标签图文详解(一).md @@ -14,7 +14,7 @@ - 排版标签:`

    `     `

    `     ```
    `     `
    `     `
    `     `
    `
     - 字体标记:`

    `    ``    ``    ``    ``    `` - 超链接 -- 图片标签 +- 图片标签 @@ -32,7 +32,7 @@ web标准介绍: web标准总结: -- 结构标准:相当于人的身体。html就是用来制作网页的。 +- 结构标准:相当于人的身体。html就是用来制作网页的。 - 表现标准: 相当于人的衣服。css就是对网页进行美化的。 - 行为标准: 相当于人的动作。JS就是让网页动起来,具有生命力的。 @@ -84,7 +84,7 @@ PS:「浏览器内核」也就是浏览器所采用的「渲染引擎」,渲 **作用**:HTML是负责描述文档**语义**的语言。 -**注意**:HTML语言不是一个编程语言(有编译过程),而是一个**标记语言**(**没有编译过程**),HTML页面直接由浏览器解析执行。 +**注意**:HTML语言不是一个编程语言(有编译过程),而是一个**标记语言**(**没有编译过程**),HTML页面直接由浏览器解析执行。 @@ -102,11 +102,11 @@ html是一个纯本文文件(就是用txt文件改名而成),用一些标 - 错误答案:给文字加粗、加黑、变大。 - + ### 2、HTML的历史 ![html中标签发展趋势.png](http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html166440-5b780bdc6b80a5fb.png) - + 我们专门来对XHTML做一个介绍。 **XHTML介绍:** @@ -259,7 +259,7 @@ PS:后缀名不能决定文件格式,只能决定打开文件打开的方式 (6)XHTML文档开头必须要有DTD文档类型定义 - + ### 2、HTML的基本语法特性 @@ -319,7 +319,7 @@ HTML标签通常是成对出现的(**双边标记** Document - + ``` @@ -334,7 +334,7 @@ HTML标签通常是成对出现的(**双边标记** Document - + ``` @@ -405,7 +405,7 @@ HTML5中极大的简化了DTD,也就是说HTML5中就没有XHTML了(W3C自 头标签都放在头部分之间。包括:``、`<base>`、`<meta>`、`<link>` - `<title>`:指定整个网页的标题,在浏览器最上方显示。 - - `<base>`:为页面上的所有链接规标题栏显示的内容定默认地址或默认目标。 + - `<base>`:为页面上的所有链接规标题栏显示的内容定默认地址或默认目标。 - `<meta>`:提供有关页面的基本信息 - `<body>`:用于定义HTML文档所要显示的内容,也称为主体标签。我们所写的代码必须放在此标签內。 - `<link>`:定义文档与外部资源的关系。 @@ -426,7 +426,7 @@ HTML5中极大的简化了DTD,也就是说HTML5中就没有XHTML了(W3C自 <title>Document - + ``` @@ -518,7 +518,7 @@ title也是有助于SEO搜索引擎优化的。 Document - + ``` @@ -586,7 +586,7 @@ title也是有助于SEO搜索引擎优化的。 HTML标签是分等级的,HTML将所有的标签分为两种: -- **文本级标签**:p、span、a、b、i、u、em。文本级标签里只能放**文字、图片、表单元素**。 +- **文本级标签**:p、span、a、b、i、u、em。文本级标签里只能放**文字、图片、表单元素**。(a标签里不能放a和input) - **容器级标签**:div、h系列、li、dt、dd。容器级标签里可以放置任何东西。 @@ -759,7 +759,7 @@ This
    is a para
    graph with line breaks 属性: - `color="红色"`或`color="#ff00cc"`或`color="new rgb(0,0,255)"`:设置字体颜色。 设置方式:单词 \ #ff00cc \ rgb(0,0,255) - - `size`:设置字体大小。 取值范围只能是:1至7。取值时,如果取值大于7那就按照7来算,如果取值小于1那就按照1来算。如果想要更大的字体,那就只能通过css样式来解决。 + - `size`:设置字体大小。 取值范围只能是:1至7。取值时,如果取值大于7那就按照7来算,如果取值小于1那就按照1来算。如果想要更大的字体,那就只能通过css样式来解决。 设置:用’+2’代表值是5 或直接给值 - `face="微软雅黑"`:设置字体类型。注意在写字体时,“微软雅黑”这个字不能写错。 举例: @@ -821,7 +821,29 @@ http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html_13.png) |³|立方3(上标3)|`³`| -
    +### 一些小标签/小标记 + +- ``:下划线标记 + +- ``或``:中划线标记(删除线) + +- ``或``:斜体标记 + +效果: + +![Paste_Image.png](http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html_15.png) + + + +上面的这几个标签,常用于做一些小装饰、小图标。比如: + +20180118_2340.png + +这张图中,我们通过查看京东网站的代码发现,箭头处的小图标都是用的标签``。 + + +div的主要目的是用来布局,而小装饰却可以用来 + ### 粗体标签``或``(已废弃) @@ -829,16 +851,6 @@ http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html_13.png) ![Paste_Image.png](http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html_14.png) -### 下划线标记 `` 中划线标记``(已废弃) - -
    - -### 斜体标记 ``或``(已废弃) - -效果: - -![Paste_Image.png](http://7sby7r.com1.z0.glb.clouddn.com/2015-10-01-cnblogs_html_15.png) -
    ### 上标`` 下标`` @@ -1007,7 +1019,7 @@ img是自封闭标签,也称为单标签。 ```html - + ``` diff --git a/02-CSS/01-CSS属性:字体属性和文本属性.md b/02-CSS/01-CSS属性:字体属性和文本属性.md index 3cb3c91..7d3ee3a 100644 --- a/02-CSS/01-CSS属性:字体属性和文本属性.md +++ b/02-CSS/01-CSS属性:字体属性和文本属性.md @@ -75,7 +75,7 @@ p{ font-size:50px; /*字体大小*/ line-height: 30px; /*行高*/ font-family:幼圆,黑体; /*字体类型:如果没有幼圆就显示黑体,没有黑体就显示默认*/ - font-style:italic ; /*斜体*/ + font-style:italic ; /*italic表示斜体,normal表示不倾斜*/ font-weight:bold; /*粗体:属性值写成bolder也可以*/ font-variant:small-caps; /*小写变大写*/ } @@ -103,12 +103,28 @@ p{ font-family:"宋体"; ``` -上面这三个属性,我们可以使用一行代码来实现:(字号 font-size、行高 line-height、字体 font-family) +是否加粗属性以及上面这三个属性,我们可以连写:(是否加粗、字号 font-size、行高 line-height、字体 font-family) + +格式: + ``` - font: 14px/24px “宋体”; + font: 加粗 字号/行高/ 字体 + ``` +举例: + +``` + font: 400 14px/24px “宋体”; +``` + +PS:400是nomal,700是bold。 + +上面这几个属性可以连写,但是有一个要求,font属性连写至少要有**字号和字体**,否则连写是不生效的(相当于没有这一行代码)。 + + + **2、字体属性的说明:** (1)网页中不是所有字体都能用,因为这个字体要看用户的电脑里面装没装,比如你设置: @@ -181,7 +197,7 @@ CSS样式中,常见的文本属性有以下几种: - `letter-spacing: 0.5cm ;` 单个字母之间的间距 - `word-spacing: 1cm;` 单词之间的间距 - - `text-decoration: underline;` 字体修饰:**underline下划线**、line-through中划线、overline上划线 + - `text-decoration: none;` 字体修饰:none去掉下划线、**underline下划线**、line-through中划线、overline上划线、 - `text-transform: lowercase;` 单词字体大小写。uppercase大写、lowercase小写 - `color:red;` 字体颜色 - `text-align: center;` 在当前容器中的对齐方式。属性值可以是:left、right、center(**在当前容器的中间**)、justify diff --git a/02-CSS/02-CSS属性:背景属性.md b/02-CSS/02-CSS属性:背景属性.md index 5851a6b..95d437a 100644 --- a/02-CSS/02-CSS属性:背景属性.md +++ b/02-CSS/02-CSS属性:背景属性.md @@ -218,6 +218,8 @@ PS:padding的区域也是有背景图的。 比如说,`right center`表示将图片放到右边的中间;`center center`表示将图片放到正中间。 +比如说,`bottom`表示图片的底边和父亲**底边贴齐**(好好理解)。 + 位置属性有很多使用场景的。我们来举两个例子。 场景1:(大背景图) diff --git a/02-CSS/07-浮动.md b/02-CSS/07-浮动.md index fa9358a..71184e6 100644 --- a/02-CSS/07-浮动.md +++ b/02-CSS/07-浮动.md @@ -223,6 +223,8 @@ css中一共有三种手段,使一个元素脱离标准文档流: 上图中,我们发现:**div挡住了p,但不会挡住p中的文字**,形成“字围”效果。 +总结:**标准流中的文字不会被浮动的盒子遮挡住**。(文字就像水一样) + 关于浮动我们要强调一点,浮动这个东西,为避免混乱,我们在初期一定要遵循一个原则:**永远不是一个东西单独浮动,浮动都是一起浮动,要浮动,大家都浮动。** diff --git a/02-CSS/08-CSS属性:定位属性.md b/02-CSS/08-CSS属性:定位属性.md index d76eee6..b1b5479 100644 --- a/02-CSS/08-CSS属性:定位属性.md +++ b/02-CSS/08-CSS属性:定位属性.md @@ -333,7 +333,7 @@ p将无视父亲的padding,在border内侧为参考点,进行定位: 我们知道,如果想让一个**标准流中的盒子居中**(水平方向看),可以将其设置`margin: 0 auto`属性。 -可如果盒子是绝对定位的,此时已经脱标了,如果还想让其居中,可以这样做: +可如果盒子是绝对定位的,此时已经脱标了,如果还想让其居中(位于父亲的正中间),可以这样做: ```
    diff --git a/03-JavaScript/03-JavaScript语法基础:if语句&for循环&函数.md b/03-JavaScript/03-JavaScript语法基础:if语句&for循环&函数.md index 8fa2cc7..0c34624 100644 --- a/03-JavaScript/03-JavaScript语法基础:if语句&for循环&函数.md +++ b/03-JavaScript/03-JavaScript语法基础:if语句&for循环&函数.md @@ -20,7 +20,7 @@ if语句的结构体:(格式) } ``` -if语句也成为“选择语句”、“条件判断语句”,我们通过下面的图片来解释。 +if语句也成为“选择语句”、“条件判断语句”。 ### 多分支的if语句 diff --git a/04-前端基础练习/01-CSS基础练习:JD首页的制作(顶部和底部).md b/04-前端基础练习/01-CSS基础练习:JD首页的制作(顶部和底部).md new file mode 100644 index 0000000..1242710 --- /dev/null +++ b/04-前端基础练习/01-CSS基础练习:JD首页的制作(顶部和底部).md @@ -0,0 +1,941 @@ + + + + + + +## 前言 + +京东是典型的电商类网站,学习这个网站的制作比较有价值。我们准备用WebStorm进行开发。 + + +### 页面规划:新建一个空的工程 + +我们首先新建一个空的工程: + + +![](http://img.smyhvae.com/20180118_1733.png) + + + + + + +### CSS初始化(基本样式) + + +京东网站有一些基本样式,在各个页面中都要用到:(将这些基本样式copy到css.base里面去) + +base.css中的公共的部分: + +```css +@charset "UTF-8"; +/*css 初始化 */ +html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin:0; padding:0; } +fieldset, img,input,button { border:none; padding:0;margin:0;outline-style:none; } /*去掉边框、去掉轮廓(比如输入框外面的蓝边框)*/ + +/*去掉列表前面的圆点*/ +ul, ol { + list-style: none; +} +input { padding-top:0; padding-bottom:0; font-family: "SimSun","宋体";} /*字体一般是指定这两个*/ +select, input { vertical-align:middle;} +select, input, textarea { font-size:12px; margin:0; } +textarea { resize:none; } /*禁止文本输入框在右下角拖拽(因为拖动后会调整输入框大小)*/ +img {border:0; vertical-align:middle; } /* 去掉图片底侧默认的3像素空白缝隙*/ +table { border-collapse:collapse; } +body { + font:12px/150% Arial,Verdana,"\5b8b\4f53"; /*\5b8b\4f53指的是宋体*/ + color:#666; + background:#fff +} + +/*start:清除浮动【推荐此方式进行清除浮动】。左浮动和右浮动都清除了,盒子刚好达到闭合的状态*/ +.clearfix:before, .clearfix:after { + content: ""; + display: table; +} + +.clearfix:after { + clear: both; +} + +.clearfix { + *zoom: 1; /*IE/7/6*/ +} +/*end:清除浮动*/ + +a {color:#666; text-decoration:none; } /*去掉超链接的下划线*/ +a:hover{color:#C81623;} /*鼠标悬停时的颜色*/ +h1,h2,h3,h4,h5,h6 {text-decoration:none;font-weight:normal;font-size:100%;} /*font-size:100% 的意思是:让它们和父亲一样大,避免在不同的浏览器中显示大小不一致*/ +s,i,em{font-style:normal;text-decoration:none;} /*去掉i标签和em的斜体,取消s标签的删除线*/ +.col-red{color: #C81623!important;} + +/*公共类*/ +.w { /*版心(可视区)。需要专门提取出来 */ + width: 1210px; + margin: 0 auto; +} + +.fl { + float: left +} + +.fr { + float: right +} + +.al { + text-align: left +} + +.ac { + text-align: center +} + +.ar { + text-align: right +} + +.hide { + display: none +} +``` + + + +上方代码解释: + +(1)**清除浮动**的方式: + +```css +.clearfix:before, .clearfix:after { + content: ""; + display: table; +} + +.clearfix:after { + clear: both; +} + +.clearfix { + *zoom: 1; /*IE/7/6*/ +} +``` + +这是如今比较流行的清除浮动的方式。比如小米官网就是采用的这种。 + +(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`是删除线,`i`和`em`是斜体。我们经常用它们做一些小装饰、小图标。 + + +### 引入css文件 + +base.css初始化之后,我们需要在html文件中引入它。引入外部样式表的方式如下:(`stylesheet`指样式表) + +```html + +``` + + +效果如下: + +![](http://img.smyhvae.com/20180118_2002.png) + + +注意,**base.css和index.css的书写顺序不能颠倒**,因为是按照书写顺序,从上往下进行加载的。 + + +### Favicon 小图标 + + +Favicon 图标指的是箭头处这个小图标: + +![](http://img.smyhvae.com/20180118_2013.png) + + +官网链接可以下载这个小图标。 + +我们把`favicon.ico`图片放到工程文件的根目录,通过下面这种方式进行加载: + +```html + +``` + +注意,`shortcut icon`是Favicon的专有名词,不能改成别的单词。 + +代码位置: + + + +![](http://img.smyhvae.com/20180118_2020.png) + + +## 顶部导航的制作 + + +我们先制作下面这个部分,它位于网站的最顶部: + +![](http://img.smyhvae.com/20180118_2040.png) + +顶部导航栏的html结构如下:(直接放在body标签下) + +```html + +
    + +
    + +
    +
    送至:北京 + +
    +
    + +
    +
      +
    • + 你好,请登录    + 免费注册 +
    • +
    • +
    • 我的订单
    • +
    • +
    • 我的京东 + +
    • +
    • +
    • 京东会员
    • +
    • +
    • 企业采购
    • +
    • +
    • + + 手机京东 + +
    • +
    • +
    • + 关注京东 + +
    • +
    • +
    • + 客户服务 + +
    • +
    • +
    • + 网站导航 + +
    • +
    +
    +
    + +
    + + +``` + +顶部导航栏需要加入的css样式如下:(放到base.css中) + + +```css +/*顶部导航start*/ +.shortcut { + height: 30px; + line-height: 30px; + background-color: #f1f1f1; +} + +.dt, +.shortcut .fore { + padding: 0 20px 0 10px; + position: relative; +} + +.dt i, +.fore i { + font: 400 15px/15px "宋体"; + position: absolute; + top: 13px; + right: 3px; + height: 7px; + overflow: hidden; + width: 15px; +} + +.dt s, +.fore s { + position: absolute; + top: -8px; + left: 0; +} + +.fr li { + float: left; + padding: 0 10px; +} + +.fr .line { + width: 1px; + height: 12px; + background-color: #ddd; + margin-top: 9px; + padding: 0; +} + +.shortcut .tel-jd { + padding: 0 20px 0 25px; +} + +.tel { + position: absolute; + width: 15px; + height: 20px; + background: url(../images/sprite.png) no-repeat; + left: 5px; + top: 5px; +} +/*顶部导航end*/ + +``` + +css代码解释: + +(1)整个的顶部导航栏是一个shortcut: + +```css +.shortcut { + height: 30px; + line-height: 30px; + background-color: #f1f1f1; +} +``` + + +然后将左侧的文字设置为左浮动,右侧的文字设置为右浮动。 + + +(2)完成左侧部分的文字。 + + +(3)右侧部分文字的结构:ul中放了九个li,用来存放文字。代码快捷键是`ul>li*9`(符号`>`是包含的关系)。 + +需要注意的是,“登录”和“注册”是同一个
  • 里面的两个``。它们是一个整体,所以要放到同一个li里。 + + +(4)文字中间的间隔线: + +![](http://img.smyhvae.com/20180119_1503.png) + +上图所示,我们发现,每个li之间都有`1像素宽、12像素高的间隔线`,这个也是用li做的。 + + +(5)增加文字右侧的小三角。 + +(6)在`手机京东`这个li中增加手机小图标,这里用到了css精灵图。 + + +京东顶部导航条的工程文件如下: + + + + + +## 顶部banner图 + +接下来我们只做顶部的banner图,效果如下: + +20180122_1020.png + +也就是上图中“1元抢宝”的那个位置。 + +涉及到的html代码如下: + + +```html + + + + +``` + +在base.css中涉及到的css代码如下: + +```css +/*topbanner start*/ +.topbanner { + background-color: #8A25C6; +} +.close-banner { + position: absolute; + right:0; + top:5px; + width: 19px; + height: 19px; + background: url(../images/close.png) no-repeat; +} +.close-banner:hover { + background-position:bottom; +} +.tp{ + position: relative; +} +/*topbanner end*/ + +``` + +代码解释: + +重点是`close-banner`这个class,也就是右上角的那个`X`。这里用到了子绝父相,注意,设置相对定位的父亲是`tp`这个class,因为要考虑到网页缩放的情况。 + + +`.close-banner:hover`这个属性里,我们设置的背景图的定位是bottom,意思是,保证精灵图和父亲的底边贴齐,就不用使用像素的方式对精灵兔图进行定位了。 + + + +## 搜索框 + +搜索框的UI如下: + + +![](http://img.smyhvae.com/20180122_1301.png) + + +上图中,包含了四个部分: + +- 左侧的logo + +- 中间的搜索框 + +- 右侧的购物车 + +- 热搜文字(中间搜索框的下方) + +我们在WebStorm中输入`.search-logo+.search-input+.search-car+.search-moreA`,然后按tab键,就可以补齐代码: + +```html + +
    +
    +
    +``` + + +相关的html代码如下: + +```html + +
    + +
    + +``` + + +相关的css代码如下: + +```css +/*search部分start*/ +.search-logo { + float: left; + width: 362px; + height: 60px; + padding: 20px 0; +} +.search-logo a { + width: 270px; + height: 60px; + display: block; + text-indent: -9999px; + background: url(../images/logo.png) no-repeat; +} +.search-input { + float: left; + height: 36px; + padding-top: 25px; +} +.search-input input { + float: left; + width: 450px; + height: 32px; + padding-left: 4px; + font: 400 14px/32px "microsoft yahei"; + color: rgb(153, 153, 153); + border: 2px solid #B61D1D; + border-right: 0; +} +.search-input button { + width: 82px; + height: 36px; + color: #fff; + float: left; + font: 400 16px/36px "微软雅黑"; + background-color: #B61D1D; + cursor: pointer; + /*cursor: pointer; 变成小手*/ + /*cursor: text; 变成光标*/ + /*cursor: move; 变成四角箭头*/ + /*cursor: default; 变成小白*/ +} +.search-car { + float: right; + width: 96px; + height: 34px; + line-height: 34px; + padding-left: 43px; + position: relative; + margin: 25px 65px 0 0; + border: 1px solid #DFDFDF; + background-color: #F9F9F9; +} +.icon1 { + position: absolute; + top: 9px; + left: 18px; + width: 18px; + height: 16px; + background: url(../images/tel.png) no-repeat 0 -58px; +} +.icon2 { + position: absolute; + right: 10px; + color: #999; + /*font-family: "SimSun";*/ + font: 13px/34px "SimSun"; +} +.icon3 { + position: absolute; + top: -5px; + /*left: 0;*/ + width: 16px; + height: 14px; + background-color: #C81623; + line-height: 14px; + text-align: center; + color: #fff; + border-radius: 7px 7px 7px 0; /*画圆角矩形*/ +} +.search-moreAlink { + float: left; + width: 530px; + height: 28px; + line-height: 28px; +} +.search-moreAlink a { + margin-right: 8px; +} +/*search部分end*/ +``` + + +对于这四个部分,我们依次来讲解。 + +### 1、左侧的logo + +为了便于SEO,需要给图片这个超链接加上文字,然后设置文字的缩进为`text-indent: -9999px;`。 + +### 2、搜索栏 + +“搜索”按钮:当我们把鼠标放在“搜索”上的时候, 发现鼠标变成了小手,这里是用到了`cursor`属性。 + +`cursor`有如下属性值: + +```css + cursor: pointer; /*变成小手*/ + cursor: text; /*变成光标*/ + cursor: move; /*变成四角箭头*/ + cursor: default; /*变成默认的箭头*/ +``` + +### 3、购物车 + +购物车里包含了四个元素:一个文字,三个图标。 + +为了让文字“我的购物车”这个``上下方向居中,我们给``标签的行高line-height为父亲的高度。 + +另外,“我的购物车”这四个字并不是水平居中的,于是,我们可以给它一个左侧的padding,而不用给右侧padding。 + +另外三个小图标可以用绝对定位来做。 + +右上角的小图标(圆角矩形):它的红色背景不是图片,而是用`border-radius`属性画的**圆角矩形**。 + +圆角矩形`border-radius`有下面几种画法: + +``` + border-radius: 宽/高一半; + border-radius: 50%; + border-radius: 0.3em; + border-radius: 左上角 右上角 右下角 左下角; +``` + +### 搜索框下方的热搜文字 + +热搜文字的功能性并不强,仅仅使用几个超链接``标签即可(每个 a 之间用margin隔开)。不需要像别的导航栏那样,在ul里放li,在li里放a。 + +注意,每个 a 之间是用margin隔开,不是用padding隔开;否则的话,鼠标点击中间的空白处也会出现跳转。 + +顶部导航条+顶部banner+搜索框的工程文件如下: + + + +## slogen:口号 + +要求实现的效果如下: + +![](http://img.smyhvae.com/20180122_1630.gif) + +上图可以看到,这里要实现的效果是:无论浏览器如何移动,要保证第二个slogen的左侧位于浏览器的正中间。这是可以用到绝对定位的知识。 + +html的代码如下: + +```html + +
    + + + + + + + + + + + + +
    + +``` + +`class=slogen`指的是整个slogen区域。item表示四个口号中相同的部分。 + +css的代码如下; + +```css +/*底部的口号 start*/ +.slogen { + height: 54px; + padding: 20px 0; + background-color: #f5f5f5; + position: relative; + margin-bottom: 15px; +} + +.item { + width: 302px; + position: absolute; + top: 20px; + left: 50%; +} + +.slogen1 { + margin-left: -608px; +} + +.slogen2 { + margin-left: -304px; +} + +.slogen3 { + margin-left: 2px; +} + +.slogen4 { + margin-left: 304px; +} + +/*底部的口号 end*/ +``` + +我们给item设置`left: 50%;`,确保每个item移到了父亲的正中间。然后每个item各自移动相应的距离即可实现。 + + +## 最下方的购物指南&区域覆盖 + +需要实现的效果如下: + +![](http://img.smyhvae.com/20180122_1726.png) + + +上图中,需要实现的内容包括两个部分:左侧的购物指南和右侧的区域覆盖(我把这两个部分用红线隔开了)。 + + +### 购物指南 + +需要使用的布局如下: + +![](http://img.smyhvae.com/20170704_1727.png) + + +这里的重点是要量出dt和dd的行高。 + +html代码如下: + + +```html + + +
    + +``` + +因为这片区域是浮动的,我们要通过`clearfix`这个class清除浮动,防止其被覆盖。 + +css代码如下: + +```css +/*购物指南等 start*/ +.footer-shopping { + margin-top: 16px; /*和上方保持距离*/ +} +.footer-shopping dl{ + float: left; + width: 200px; +} +dl.last-dl { + width: 100px; +} +.footer-shopping dt{ + height: 34px; + font: 400 16px/34px "microsoft yahei"; +} +.footer-shopping dd{ + line-height: 20px; +} +/*购物指南等 end*/ +``` + +### 区域覆盖 + +html代码如下: + +```html +
    +

    京东自营覆盖区县

    +

    京东已向全国2654个区县提供自营配送服务,支持货到付款、POS机刷卡和售后上门服务。

    + 查看详情 > +
    +``` + + + +css代码如下: + + +```css +/*覆盖区域 start*/ +.coverage { + float: left; + width: 186px; + height: 169px; + margin-right: 60px; + padding-left: 17px; + background: url(../images/china.png) no-repeat left bottom; +} + +.coverage h3 { + height: 34px; + font: 400 16px/34px "microsoft yahei"; +} + +.coverage p { + padding-top: 8px; +} +.coverage a { + float: right; +} +/*覆盖区域 end*/ +``` + +注意这里将精灵图设置为背景时,用到的定位属性是`left bottom`,意思是保证精灵图的左侧跟父亲左侧贴齐,下方和父亲下方贴齐。这样做的话,就不用通过像素来进行定位了。 + + + + + + +## 最底部 + +最底部的效果如下: + +![](http://img.smyhvae.com/20180122_1909.png) + + + +如上图所示,它包含了三个部分。 + + +涉及到的html代码如下: + +```html + + + + + +``` + + +涉及到的css代码如下: + +```css + +/*最底部start*/ +.footer-bottom { + margin-top: 20px; + text-align: center; /*让文字在容器中水平方向居中*/ + padding: 20px 0 30px; + border-top: 1px solid #E5E5E5; +} + +.footer-bottom .footer-about a{ + margin: 0 10px; +} + +.footer-copyright { + padding: 10px 0; +} + +.footer-bottom-img a { + margin: 0 5px; +} +/*最底部end*/ +``` + +你去京东官网看看,发现最最底部的文字竟然是图片: + +![](http://img.smyhvae.com/20180122_1912.png) + + +## 总结 + +以上全部内容,最终实现的效果如下: + +![](http://img.smyhvae.com/20180122_1920.png) + + +对应的工程文件如下: + +- [2018-01-22-前端基础练习-JD顶部导航.rar](http://download.csdn.net/download/smyhvae/10218487) + diff --git a/README.md b/README.md index 365195c..8cf7877 100644 --- a/README.md +++ b/README.md @@ -37,26 +37,9 @@ - [03-JavaScript语法基础:if语句&for循环&函数](./03-JavaScript/03-JavaScript语法基础:if语句&for循环&函数.md) - - - - - - - - - - - - - - - - - - - - +## 前端基础练习 + +- [01-CSS基础练习:JD首页的制作(顶部和底部)](./04-前端基础练习/01-CSS基础练习:JD首页的制作(顶部和底部).md) diff --git a/推荐链接.md b/推荐链接.md index 6e1ed00..23745b6 100644 --- a/推荐链接.md +++ b/推荐链接.md @@ -66,6 +66,11 @@ +###2017-01-19 + +- [一个三年工作经验的软件工程师的经验之谈](http://www.cnblogs.com/lovesong/p/5721828.html) + +