html/css/淘猫网
参考淘宝首屏布局
做网页时的笔记整理,有些意识流。。
GitHub源地址:https://github.com/0rainge/taobaoHomePageDemo
1. demo展示
2. 涉及的问题
- title目的
- Css样式引入(style link 行间样式)
- css选择器,权重问题
- 滚动条问题
- 快捷键
- display
- 浮动
- 居中
- 文字竖直居中
- 盒模型
- 伪类与伪元素
- 背景图片background
- 定位:position/relative/fixed
- 盒模型的margin和padding
- form
- 背景颜色的渐变 linear-gradient
- 圆角:border-radius
- overflow
- input样式处理 outline/padding/text-indent
- 文字环绕图片
- 雪碧图
- 盒模型的转换
- 背景定位
3. 笔记整理
第0步:布局
0.1 布局划分
先实现结构,后实现样式。
整个页面分为五部分:顶部导航栏,顶部搜索栏,中部横向导航栏,中部图片内容展示区,右侧信息服务区域,细化如下
0.2 布局过程
设置div
通配符选择器 初始化样式
1 | *{ |
宽度高度都占满整屏幕
宽度设置占满浏览器,设置父级document-html,body,wrapper 基于父级定位
1 | html,body{ |
直接设置wrapper高度,将会被内容区撑开
做样式是从外往里面实现:根据结构的嵌套关系从外往里
架构上:加上CSS结构,条理,定位比较快,分块加注释
根据class层级选中导航条的wrap部分
子集div
最外面的区域整条100% 文字内容区域是局中的子集,有
1 | .wrapper .top-nav-wrap{ |
高度包含导航条和广告的高度
当水平超过100%就会出现横向的滚动条
内容区域超出浏览器宽度就会出现横向的滚动条
.wrapper .top-nav-wrap{
width: 100%;
height: 105px ;
background-color: red;
border: 10px solid #000000;
}
滚动条问题消失:
横向滚动条消失x
overflow-x: hidden;
给body加上;
如果没有-x 横向竖向都消失了;也不会向下滚屏
宽度100%的父集内有一个子集局中显示
0.3 注意事项
问题:
.wrapper .top-nav-wrap(有空格)和.wrapper.top-nav-wrap(没有空格)有什么区别?
有空格:选中的是子元素,没有空格:选中的是通过两个class并列的
拿到字体颜色
如何看高度:
97+24:height97 padding-top24
导航条部分 不占100% 屏幕大于的时候做居中处理的,大范围的展示区 ,2和3中有导航条 缩小部分没有横向滚动条
下面两栏实现左右局中:
1 | margin: 0 auto; |
第1步:顶部导航栏和广告栏
1.1导航条
1.1.1 导航条展示
1.1.2 导航条实现思路
分析:
首先有一个父级包含广告和导航条,然后有一个导航条自己的父级和广告的父级,父级100% 图片有固定的宽度做了局中处理,广告有a标签或者div
导航条的样式如何实现:
上一个div没有高度和宽度
导航栏实现:左侧有一组小列表,右侧有一排小列表,并列的 span a ,左边一组 右边一组 左右 ul li 无序列表 ,左侧3个li 登录注册算一个 右侧7个li
1.1.3 导航条注意事项
小三角符号用 iconfont 字体图库
![image]
快捷键
选中后control+D进行批量操作
control + ? 开启注释
竖着排列 ul是块级元素 ul水平并列,左侧ul在左侧 右侧ul在右侧:左侧ul在左侧浮动 右侧ul在右侧浮动,讲ul中的li标签变成水平的 行级元素/行级块元素 display 浮动 :将ul中的li浮动,包含两个ul 左右两个宽高,局中处理:宽度的临界值是1190px
浮动:脱离文档流,碰到上一个浮动元素停止
!!!坑:类名多加一个空格就会无法识别
把所有的元素水平横过来:
1 | .wrapper .top-nav-wrap .top-nav ul li{ |
用ul的浮动跑到左侧和右侧 ,再用ul li中的浮动 让ul把竖着的块级元素变成水平的
处理文字样式,文字包含到了导航栏的a标签
文字竖直居中:文字行高=父级的高度
文字的行高 line-height
盒模型:标准盒模型和IE模式下的盒模型
细节的问题hover 伪类 鼠标覆盖
input search区域有伪元素
因为可能的命名冲突和权重问题,最好写选择器的时候把层级关系写上
单独选中而非批量li
所有的背景图片有大小的范围
让背景图片先出现 再以背景图片不同的class类名 替换成不同的图片
背景图片有一个相同的类名,并且都是span标签
需要具有固定宽高,水平排列行级块元素
选中独立的class名剔除
display inline block的对齐方式 竖直的对齐方式默认是bottom 设置居中对齐
vertical-align: middle;
1.2广告条
1.2.1 广告条展示
1.2.2 广告条实现思路
广告实现:
1 | <div class="ad-wrap "> |
1.2.3 广告条注意事项
广告条长度固定,多余部分换成相同颜色的背景
第2步:搜索框部分
2.1 搜索框展示
2.2 搜索框实现思路
架构:
1 | <div class="search-wrap "> |
padding把内容区域撑开
固定高度和宽度:1190
大于居中处理,小于做滚动条(over flow)超出滚动条消失
本来是3个块级元素div:竖直排列改为水平——行级块元素/浮动
基于下水平线进行对齐
2.3 搜索框注意事项
定位:
position: relative;
相对于自身的位置向上 top -10
相对定位 绝对定位 相对浏览器 默认值
一缩小浏览器/发生改动之后有变化
为什么: 要知道是相对谁进行定位
relative——相对自身(默认值?)进行定位
absolute——相对最近的有定位(除了默认的都行:relative absolute fixed)的父级进行定位
一般:想要被定位的元素——父级设为relative 自身设为absolute 然后通过top值等进行控制定位
基础有应用很多
盒模型的margin和padding
margin 外边距
paddign 内边距
两个a标签以背景图片的方法出现
form表单
ul li 通过表格横过来
处于pannel的上面
浮动元素脱离文档流 不能主动撑开父级,可以手动增加
利用绝对定位:基于search panel
跑到右边:
position: absolute;
top: 0;
right: 0;
查看动作的颜色,手动触发伪类
渐变色
background: linear-gradient(to right,#ff9000 0, #ff5000 100% )
CSS3的内容
input的格式 outline
i标签引入的字体
标签的背景图片
多个选择器并列
1 | .wrapper .search-wrap .search-con .search-box .magnifier, |
第3步:中间导航条
3.1 中部导航条展示
3.2 中间导航条注意事项
h2 后面跟了三个ul 标签
缩小到一定程度会有一栏标签消失:媒体查询——子适应
一组消失比较方便
鼠标覆盖时头上出现小动画:伪元素
.wrapper .screen-nav .screen-nav-con ul li :hover::before
伪类和伪元素
伪元素只有两个:before和after,真实的添加一个元素(可以用伪元素来清除浮动)
伪类有很多:hover,可以看成是触发的一个状态
第4步:内容标签图片展示区域
两栏 上下 三栏 轮播图+图片展示
浮动 伪类 居中
文字属性:line-height text-aligin font-size font-wight
文字环绕图片
.wrapper .screen-box .main .main-bottom .content a img{
float: left;
}
图片浮动之后脱离了当前的文档流 但是没有脱离之前的文本流
第5步:右侧信息服务区域
包括:登录,信息展示区域,论坛信息展示区域,模块信息展示区域,APP信息展示区域
登录,信息论坛等5部分
- 雪碧图
- 盒模型的转换
- 背景定位
雪碧图:通过调整背景图片调整性能
设置了宽度之后 text-align
1 | .wrapper .screen-box .col-right .member .member-head p a span { |
盒模型转换
因为左右两边设置了8px的padding值
width: 100%;
padding: 0 8px;
把标准模式下的盒模型转换为IE模式下的盒模型
标准模式下的盒模型:width+padding
IE模式下的盒模型:width(里面有padding)
1 | box-sizing: border-box; |
选中a标签下的 .active 类
.wrapper .screen-box .col-right .notice .title li a.active
注意没有空格!
让文字下面的线变长:
padding: 0 2px;
1 |
|
受盒模型影响 边框+内容区域大于总区域,溢出:
把标准模式下的盒模型 content-box
转移成IE模型下的盒模型 border-box
inline-block 既可以设置宽高 又可以设置 text-align: center 进行居中
position 默认:距离左侧和上侧的距离