JD m站自我解析理解
第一步:从首页着手
文档部分:应用的是H5默认文档开头 即:
head部分:放了一些相关的JS,title描述,然后就是meta表述了。比较有参考的如下
<meta name="author" content="m.jd.com">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> 禁止滚动,默认设备大小;
<meta http-equiv="Content-Type" content="text/html; charset=GBK"> 编码类型
<meta name="author" content="m.jd.com">
<meta name="apple-mobile-web-app-capable" content="yes"> 默认的工具栏
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
什么缓存之类的了
body部分:就是放内容的地方了;
第二步:内容区按块自我分析
首先是基本的CSS设置,
第一:清除边距,设置最大宽度640px,最小宽度300px;居中显示。默认的字体,给元素加一个vertical-align:baseline;为所有的元素设模型为 box-sizing:border-box等等。
依次下来:第一个就是一个a标签,看类型应该就是一个top顶部了,不过具体也没有什么样式。用的还是一个ID,或许是给后台留了一个接口吧。
第二:客户端首单满多少送多少,一直显示在顶部的一个通栏。
外层宽的100%,子级为320px(行内样式,因此应该是用JS控制的,这个宽度应该是判断大于max-width:那么就等于这个max-width)
内部放的就是各种浮动,然后外加各种行内样式。
第三:viewport部分
max-width:640px; min-width:320px; margin: 0 auto; padding: 0 5px;
第一块就是搜索,不过N的地方就是,人家JD把位置移动下来了,但是为了抓取,人家放了一个占位在那。(然后用了一个定位)
定位后,内部放一个jd-header,然后也就没哟什么特别的了,比较推荐的借鉴就是input里面用的是margin-top不是我们习惯用的padding
第三:快速导航
宽度为25% 并且为相对定位。内部加一个::after伪类,来实现考右的小竖线。
第四:楼层2
上半部也定时器,也没有什么特别的布局,挺简单的span出来的。
下部分,秒杀,用的也就是百分比33.3%,然后加了一个左边框,margin-left:-1px; 反正所有的都是box-sizing:border-box;因此不用担心撑开之类的。
布局呢,考虑的也不用那么多,就是能正常显示的就不用管了,靠其它的来显示就可以。
第五:金秋风暴
比较有特色想法的是,标题部分。左边的小红竖条是一个::before来实现的,是一个width:3px; background:red;的背景色。
下面图片这块的部分,做的真的不错。竟然没有看出来用个什么方法,但经过测试发现,一定是在改变窗口尺寸的时候做了处理。用的也不是flex属性,也没有看到JS有什么改动。不过有理由相信它应该就是JS控制。左边的高度等于右边两张图高度总和。
第六:主题馆
这个用的方法非常好,背景图片就是一个图片,上面切换的图片是放在一个相对定位高度为1px的盒子里。
第七:猜你喜欢
这个地方也有一个地方用的很好,就是他没有用table但是他把元素用了display:table; display:table-cell;的形式,模拟了table。
然后也就没有什么了,首页就这样的过去了。好多不懂的,看是也懂了好多。看别人写的东西,一点好处就是,学到对方很多的思维与方法。好的去学,不好的去发现去避免。
JD m站自我解析理解的更多相关文章
- 图形解析理解 css3 之倾斜属性skew()
1.作用 改变元素在页面中的形状2.语法 属性:transform 函数: 1.skew(xdeg) 向横向倾斜指定度数 x取值为正,X轴不动,y轴逆时针倾斜一定角度 x取值为负,X轴不动,y轴顺时针 ...
- 函数(定义、参数、return、变量、作用域、预解析)
一.函数定义 1.方式一 function 函数名(参数){ 函数体 }——————函数声明的方法 function fn(a){ console.log(a); }: 2.方式二 ...
- 悟透JavaScript(理解JS面向对象的好文章)
引子 编程世界里只存在两种基本元素,一个是数据,一个是代码.编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力. 数据天生就是文静的,总想保持自己固有的本色:而代码却天生活泼,总想改变这个 ...
- http协议请求规则与dotNet的解析
请求方法URI协议/版本 请求的第一行是"方法URL议/版本":GET/sample.jsp HTTP/1.1 以上代码中"GET"代表请求方法,"/ ...
- PULL解析学习
学习过程 安卓中有三种对XML解析的方式,这个众所周知,DOM,SAX,PULL 其中被推荐的方法是PULL,说是非常简单,但从一开始接触就觉得比较迷惑,总是云里雾里的感觉,甚至在自己写出了一个能 ...
- 深入理解MAGENTO – 第九章 – 数据集合瓦瑞恩
本来,作为一个PHP程序员,如果你想攒一组变量的相关你有一个选择,古老的 阵列 . 尽管共享一个地址的名称与C存储器的阵列,一个PHP数组是一种通用的字典可变数组索引像数值对象结合行为的影响. 在其他 ...
- 【自编教材】16万8千字的HTML+CSS基础 适合从0到1-可收藏
[图片链接有点小问题,这几天更新,敬请期待!] 目 录 第一章HTML基础 1.1 HTML简介和发展史 1.1.1 什么是HTML 1.1.2 HTML的发展历程 1.1.3 web标准 1.2 开 ...
- .NET C#操作文件系统数据的常用方法总结 part1
目录导航 1.0开启文件隐藏属性 1.1开启文件夹只读属性 1.2输出子文件夹路径 1.3统计文件数目 1.4批量重命名文件 1.5分割文件 1.6拼接文件 1.7读取用逗号分割的值 1.8读写压缩数 ...
- tornado框架&三层架构&MVC&MTV&模板语言&cookie&session
web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado这样的框架. 有一些框架则只包含业务逻辑处理, 例如Django, bottle, flask这些框架, 它们的使 ...
随机推荐
- 更新k8s镜像版本的三种方式
一.知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作,本文主要介绍更新介绍的三种方法 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-c ...
- Bitcoin挖矿
目录 为什么要挖矿? 比特币挖矿 为什么要挖矿? 增加恶意行为的成本 增加记账权力,获取相应的奖励 比特币挖矿 每开采210000个区块,挖矿奖励减半 2009年1月-2012年11月,奖励50BTC ...
- 【MOOC EXP】Linux内核分析实验二报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [操作系统是如何工作的] 教学内 ...
- 2017-2018 第一学期201623班《程序设计与数据结构》-第9&10周作业问题总结
一.作业内容 第8周作业 http://www.cnblogs.com/rocedu/p/7484252.html#WEEK08 第9周作业 http://www.cnblogs.com/rocedu ...
- Java运算符、switch、数组、排序
1.Java的运算符,分为四类:算数运算符.关系运算符.逻辑运算符.位运算符 运算符例子:22.25(十进制转化为二进制,8421码)0010 0010 (22)0010 0101 (25) 位运算符 ...
- do
http://www.cnblogs.com/xdp-gacl/p/3791993.html http://blog.sina.com.cn/s/blog_95c8f1ac010198j2.html
- JS开发之CommonJs和AMD/CMD规范
CommonJS是主要为了JS在后端的表现制定的,他是不适合前端的,AMD(异步模块定义)出现了,它就主要为前端JS的表现制定规范. 在兼容CommonJS的系统中,你可以使用JavaScript开发 ...
- SMS
SMS:(Short Messaging Service)手机短信服务 . 一种存储和转发服务,短消息并不是直接从发送人发送到接收人,而始终通过 SMS 中心进行转发的.如果接收人处于未连接状态(可能 ...
- node之文件的下载
/** * 文件的下载 */ let express = require('express'); let app = express(); app.get('/',(req,res)=>{ re ...
- CMS垃圾回收过程
1.总体介绍: CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合.在启动JVM参数加上 ...