整体介绍
项目起步准备 页面顶部的开发 1)页面顶部的开发 2)字体图标的使用 3)使用CSS制作菜单 页面中部的开发 1)大Banner的布局 2)垂直菜单开发 3)新鲜甩尾部分开发 4)机酒自由行部分开发 5)当地玩乐部分开发 6)公共类的使用 7)过渡和变形在实战中的应用 页面底部开发
项目起步准备
分析设计图
分析出大致所需技术、页面布局构成和页面效果动画等,比如菜单栏、导航条、栏目、、banner图和页脚等布局特点,交互时的效果以及可以用CSS公共类实现的标题等 从普通到特殊,分析每个大盒子的共性,作为公共类,防止复用,再分析其中的特殊点,作为自己根据实际书写
文件夹创建
项目文件夹名应要求为英文名,不能使用中文
image图片文件夹、index.html文件、css与js文件夹
html基本骨架搭建
注意写好meta标签中keywords、description关键描述信息,增加搜索权重,做好SEO优化 浏览器能自动智能识别中文标点符号
样式表相关准备
reset.css
清除浏览器默认复位,用来作为项目整体复位,body标签和p标签有margin属性和padding属性,需要清除,标题标签会自动加粗,需要清除以及ul和li标签是有小圆点的,也需要清除,自己写会考虑不周,使用别人写好的进行复位
yahoo工程师的yui reset 注意粘贴留下版权信息,商业许可使用
base.css
存放一些公共类,防止复用 比如清除浮动、原子类还有一些常见操作 原子类一般不使用,影响代码观感 常见操作有文本居中、盒子居中等操作也可以写进来,若个别需要要改变时,可以层叠掉属性
每个网页都有版心(大盒子),也可以添加到公共类中
my.css
自己编写的css
页面顶部开发
嵌套两个盒子,一个做背景色,一个居中
有菜单栏、导航条、logo属于页面顶部,可以放入一个大盒子中,使用header标签对 从整体盒子site-head开始,从共性到个性出发,整体盒子设置了公共类.center-wrap属性,故只需设置里面每个小盒子的高即可,由表及里,先设置整体的高,然后设置菜单栏、导航条以及logo的高,同理,每个小盒子的背景色、浮动布局等等也是属于自己的个性
菜单栏
菜单栏文字
盒子标签为topbar,注意超级链接不会从盒子继承颜色,比如再topbar里设置颜色虽然能改变文字颜色,但加了a href超级链接标签后,颜色会改变,所以需要对a标签进行后代选择
分清局部与全局的作用范围,是对盒子里内容起作用,比如垂直居中,还是对某个标签起作用
浮动的结构部分需要拆分为两个盒子,左浮动与右浮动 注意这里需要严格区分子代,因为后续需要添加二级菜单,所以避免影响,需要严格选择子代
.site-head .topbar .shortcut-links ul li
改为.site-head .topbar .shortcut-links > ul > li
分析是使用padding还是margin向右踹开?后续要添加倒三角展开菜单,所以需要绝对定位,要使用padding浮在菜单中,所以字与字之间用margin 根据现象一步步更改,从局部认识到全局,才能全局的统筹规划
展开菜单制作
使用三个盒子制作展开菜单符号 使用绝对定位设置盒子的位置,并在浏览器调试出数据填写
蓝色部分改为白色,其它两种颜色改为背景色即可
导航栏
调用公共类center-wrap,继续添加个性 使用列表语义,class定义展开菜单制作的标签相同值,作为祖先元素 展开菜单为倒三角,通过border-top-color制作
logo栏
继续添加盒子,使用公共类,添加自己的个性设置
搜索按钮和搜索框分开设置,注意靠近搜索按钮的方向特殊,比如没有圆角,就要分别设置,从一般到特殊区分开来, btn在a标签中不能设置宽高,所以要转成行内块 注意算好账,边框也有高度
字体图标的使用
阿里巴巴旗下iconfont-阿里巴巴矢量图标库
添加到购物车,一起下载代码,根据demo提示使用即可,注意路径可能更改 多在浏览器进行调试修改即可
记住使用要加入iconfont标签
CSS制作菜单
菜单栏制作二级菜单
分析菜单能够覆盖住页面,所以需要使用绝对定位 因为绝对定位脱离标准文档流,不会对其他元素产生影响,所以才能覆盖住页面 如果绝对定位的两个盒子,可以设置z-index属性z-index:9999进行压盖,数值大会压盖数值小的
小技巧:可以使盒子带上颜色在浏览器中调试,完成后删掉即可
先隐藏菜单,然后点击倒三角才出现
使用display:none
属性,隐藏元素,然后使用hover标签,添加display:block
即可出现
注意:二级菜单如果与导航条之间有缝隙,当鼠标下移,会无法使二级菜单悬停,解决方法一是上移使其缝隙为零,但如果给的图是有缝隙的情况,我们需要使用大盒子层叠小盒子的方法,原理是加一个隐藏的大盒子使其与导航条无缝连接,在加上我们的盒子,二级菜单就能一直悬停了。
自顶向下挤一个盒子下来即可(蓝色盒子)
导航条制作二级菜单
分析有全部两字,应该是定义列表,使用dd、dt标签
使用公共类即可,在定义个性标签
页面中部的开发
大Banner的布局
分析banner图片占满屏幕,设置width:100% 但我们发现,缩小网页时图片也跟着缩小,会导致无法容纳里面的内容
我们只要限制最小宽度为版心宽度即可 使用min-width
拖动滚动条,发现顶部没有了,说明没考虑到,需要给菜单栏、导航条、logo加上min-width属性
注意,接下来banner上的元素高度需要使用百分比形式,不能设为具体数值,因为上面的几个元素是等分banner图片的,如果设置为具体数值,一旦缩放,就会乱套,这是间接经验
继续添加nav盒子,这几个均分的盒子一看就是无序列表,里面的内容是定义列表,上文也有类似提到过 这些盒子元素因为也要居中,所以要添加center-wrap公共类,而且压盖在banner图上,所以绝对定位,子绝父相,还要设置好top值、left值等 只要有压盖,第一时间想到绝对定位
父盒子一定要设置100% 子盒子在设置百分比均分,否则height为0
接下来设置左右按钮,仔细观察可知,左右按钮在版心外(上面的橙色盒子)
可以使用上图方法调试观察盒子的出现 使用css精灵技术定位左右按钮即可 左右按钮属于子绝父绝,父盒子是版心,左右按钮在版心外,所以left、right值为负
垂直菜单开发
左边垂直菜单
分析:上面设置了弹性伸缩,高度为百分比即保持height:16.6%,所以也需要绝对定位,而且里面多行文本也需要垂直居中,绝对定位是最好方法 养成先分析在做的习惯,以免出现大问题,此处不像上面的二级菜单布局,要分析清楚,否则浪费时间精力,理论指导实践,实践也反过来丰富理论 里面的文本内容是定义列表
这时候要加上边框线 border-bottom
记得要取消最后一行的边框线,使用last-child 然后使用before添加首头的小图标 注意使用共性与个性方法
右边垂直菜单
分析:右侧菜单宽度不变,高度伸缩变化 在添加一个大盒子,一个显示,其它隐藏 display:none
热门广告
使用无序列表
装进一个大盒子清除浮动,以免产生影响,因为可以形成BFC,一个独立容器,既能不影响别人,自己也不受影响 浮动里面小盒子后如果最后一个盒子掉下去,一般是因为最后一个li没有设置margin-right:0
因为我们计算时将最后一个元素的间隔也算进去,所以父盒子没有足够宽度,浮动的盒子自然掉下去
新鲜甩尾部分
第四个和第八个会掉下去,所以我们要把这两个的margin-right去除,使用高级选择器nth-child(4n)
标题和右边小字左浮动,查看浏览器是被其它图片挤上来,是浮动上来的,所以要让标题与右边小字形成盒子,变成BFC独立容器 在公共类有clearfix,一开始已经写好
图片选中有阴影,使用hover
机酒自由行部分
标题左浮动和右浮动 下面部分就看成一个大盒子,上面左浮动和下面是列表 和上面一样,先版心居中 清除浮动
机酒自由行和上面新鲜甩尾等同样样式,为h2和em标签,所以添加共性标签cotent-part,共性管理
注意提出来的em标签记得不要再右边浮动标题使用了,因为已经提为公共类 去掉标题右边最后一个的margin-right,然后浏览器可以调节使其刚好在一行
可以从外到里,先搞好布局(带上颜色),在做里面内容 先从大盒子出发,如版心,再实现里面的每一个小盒子 先分析再动手,分析应该使用什么
绝对定位使遮罩部分文字覆盖在图片中
不要用opacity设置透明度,而是用rgba
加上padding这些可能会使宽高超过,可以宽高减去padding,或者加上
box-sizing: border-box;
使用公共类后,可以根据要求用相同属性不同值层叠
如果相对定位的图片(非子图片)没设置宽高,那么top/left等定位值失效
更多图片是渐变色设置,右箭头继续使用字体图标
当地玩乐部分
先做大盒子,背景有个颜色,使用和机酒自由行一样的共性 使用共性的地方: 将jjzyx改为content-part,这是共性,共性的地方有nav部分以及more-grid部分 而且观察此部分的more-grid不在ul>li标签里。所以为了形成公共类,需要删掉此后代选择标签 记得也要清除浮动 计算设置三个盒子,左浮动并排显示
学会一步步从浏览器调试,浏览器样式里有写好的标签,可以自己调节
特色当地体验部分
继续使用content-part标签,初始化 从现象找出共性,每个卡片样式相同,只要设置好其中一个卡片样式就行 卡片样式由外到内,从大盒子到子盒子,层级推进 为了保持评分都在最下一行,把这个语句所在盒子设置高度即可
最世界·深度旅行和跟团/半自助游部分开发
仔细观察版式,和上面一部分机酒自由行的布局一样,所以机酒自由行作为公共类复用,新增标签common-style作为共性使用 在样式表中将.jjzyx换为common-style形成公共类复用 然后根据页面形成的差异再设置个性即可
过渡和变形在实战中的应用
实现公共特效,比如图片放大效果,防止图片溢出边框。加overflow:hidden;
属性
会溢出边框的就添加此属性
发现放大的图片会盖住机酒自由行中的tag标签,所以添加z-index属性值,加9999,
为右箭头添加蹦跳动画,观察发现触碰边框就触发动画,但是发现有些位置无法点击,所以需要把a标签先转为块级元素,可以设置动画display:block
并集选择器:
<li class="big-grid havehover">
.big-grid.havehover xxx
页面底部开发
同理设置个大盒子 记得添加clearfix清除浮动 先设置好字体部分,为图标留出空位
然后使用:before插入,继续使用精灵技术 使用共性与个性,个性就是图片不同 返回顶部按钮固定定位即可