任务描述及目标
具体实现
按照要求搭出HTML框架,标签尽可能的语义化,从实例图中可以确定这个页面主要分为三块,即页头、主体、页脚,所以大框架是这样的
12345<body><div class="header"></div><div class="main"></div><div class="footer"></div></body>header
部分比较简单,logo用a
标签,导航用ul
>li
>a
。先把logo写到a
标签内,方便seo和阅读器识别,再用背景图片替换掉,具体实现如下:1<a href="#">小虎扑体育</a>123456.header > a {background: url("xhp_logo.png") no-repeat;width: 100px;height: 50px;text-indent: -999em; /*隐藏先前写入标签里的logo*/}
接着是导航栏部分,ul
标签向右浮动,使整体出现在header
的右部;li
标签左浮动,实现水平排列;间隔用margin
微调;设置ul
的height和line-height同时等于header
的高度可以实现垂直居中;最后设置hover效果
main
部分主要分为五个小块,其中最后一块以后会演变为侧栏,那么main
内部的结果应该是这样的1234567<div class="main"><div>第一篇文章</div><div>第二篇文章</div><div>图片集</div><div>最后一篇文章</div><div>侧栏</div></div>
每个小块内部基本结构大致为h1
+ h2
+ p
,另外再添加些img
、ol
、ul
、table
等元素;这里边p
段落开头的缩进可以用text-indent:2em来实现;对每个小块设置margin和padding来实现内外留白,通过css3的box-shadow属性可以实现阴影效果
1234
.article { box-shadow: 2px 2px 1px #999;/* 4个属性分别表示x轴阴影长度、y轴阴影长度、阴影模糊程度、阴影的颜色*/}
表单
表单里的所有内容都要包裹在form
标签内,针对单选按钮radio
和多选按钮checkbox
建议绑定label
标签的for属性,方便点选12345678<input type="radio" name="gender" id="man"><label for="man">男</label><input type="radio" name="gender" id="woman" checked="checked"><label for="woman">女</label><!--每个单项按钮,必须有一个相同的name属性(name="gender"),否则按钮无效绑定了label for="id"(对应input元素的id)后,点击label标签里的内容效果等同于点击单选或者多项按钮-->
实现表单内各行对齐排列,我的思路是给每行外面加一个div
,使各行在form
里成块状排列;然后针对单个div
,内部的结构大致是一个span
+ n个input
,因为都是行内元素,所以会排成一列,为了实现对齐效果,可以将span
的display设为inline-block,然后显性设置宽度,设置text-align右对齐
1234
<div class="form-group"> <span>请输入邮箱地址</span> <input type="text" placeholder="邮箱地址请按要求格式输入"><div>
123456
.form-group span { display: inline-block; width: 30%; margin-right: 20px; text-align: right; }
- footer部分非常简单,所以略过