09-CSS案例讲解:博雅互动

前言

CSS已经学了一些基础内容了,我们来讲解一个小案例吧。以博雅互动的官网首页举例。

版心

首页的版心如下:

09-CSS案例讲解:博雅互动 - 图1

这里我们要普及一个概念,叫“版心”。版心是页面中主要内容所在的区域。

比如说,网站左上角的logo,设计图给出的左边距是143像素,此时,我们千万不要以为,logo的左边距真的是143像素。因为设计图只是一个版心;而整个页面是处于浏览器的中间,浏览器的宽度是可以随时调整的。

我们量一下中间四个方形图的width,是1000px,所以,网页版心的宽度是1000px。

网页的结构

从结构上来看,网页分为头部(导航栏)、banner区、内容区、底部。

导航栏的制作

在此我们只讲基础知识的使用,不涉及浏览器的优化。

class==header这个div是顶部的通栏,我们在里面放一个1000px宽的div,作为通栏的版心,我一般把这个版心称为class=inner_c,c指的是center。

class=inner_c不需要给高,因为它可以被内容撑高。

现在我们需要在class=inner_c里放三个东西:左侧的logo、中间的导航栏、右侧的“加入我们”。

接下来我们开始做右侧的「加入我们」,「加入我们」的背景是带圆角的矩形,这个圆角,实现的方式有两种:要么切图,要么用CSS3实现(IE 7、IE 8不兼容)。我们暂时使用切图来实现。

我们最好把「加入我们」这个超链接<a>放到div里,然后设置div的margin和padding,而不是直接设置<a>的边距。

我们起个名字叫class=jrwm是没有问题的,这在工作当中很常见,如果写成class=join_us反倒很别扭。

暂时我们的做法是:

  • (1)给class=jrwm_box这个div里放一个class=jrwm的div。class=jrwm用来放绿色的背景图片。
  • (2)在class=jrwm里放一个超链接,并将超链接转为块级元素。

最终,导航栏的代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. body{
  12. font-size: 14px;
  13. font-family: "Microsoft YaHei","SimSun";
  14. height: 8888px;
  15. }
  16. .header{
  17. height: 58px;
  18. background-color: #191D3A;
  19. }
  20. /*版心*/
  21. .inner_c{
  22. width: 1000px;
  23. margin: 0 auto; /*让导航条、内容区域等部分的版心在父亲里居中*/
  24. }
  25. /*导航条的logo*/
  26. .header .logo{
  27. float: left;
  28. margin-right: 40px;
  29. }
  30. .header .nav{
  31. float: left;
  32. }
  33. .header .nav ul{
  34. list-style: none; /*去掉列表前面的圆点*/
  35. }
  36. .header .nav ul li{
  37. float: left;
  38. width: 100px;
  39. line-height: 58px; /*让行高等于这一行的高度,保证里面的文字垂直居中*/
  40. border-left: 1px solid #252947; /*每个li之间有间隔线*/
  41. }
  42. .header .nav ul li.last{
  43. border-right: 1px solid #252947;/*最后一个li的右边加间隔线*/
  44. }
  45. .header .nav ul li a{
  46. display: block; /*将超链接转为块儿,可以保证其霸占父亲的整行*/
  47. height: 58px;
  48. text-decoration: none; /*去掉超链的下划线*/
  49. color:#818496;
  50. text-align: center; /*让这个div内部的文本居中*/
  51. }
  52. .header .nav ul li a.current{
  53. color:white;
  54. background: #252947;
  55. }
  56. .header .nav ul li a:hover{
  57. color: white;
  58. background: #252947;
  59. }
  60. .header .jrwm_box{
  61. float: left;
  62. height: 58px;
  63. width: 100px;
  64. padding-left: 48px;
  65. padding-top: 12px;
  66. }
  67. /*放背景图片的div*/
  68. .header .jrwm_box .jrwm{
  69. height: 34px;
  70. background-image: url(images/jrwm.png);
  71. background-repeat: no-repeat;
  72. text-align: center; /*让这个div内部的超链接居中*/
  73. }
  74. .header .jrwm_box .jrwm a{
  75. display: block; /*将超链接转为块儿,可以保证其霸占父亲的整行*/
  76. line-height: 34px; /*让行高为背景图片的高度,可以保证超链接的文字在背景图片里垂直居中*/
  77. text-decoration: none; /*去掉超链的下划线*/
  78. color: white;
  79. }
  80. </style>
  81. </head>
  82. <body>
  83. <div class="header">
  84. <div class="inner_c">
  85. <div class="logo">
  86. <img src="images/logo.png " alt="">
  87. </div>
  88. <div class="nav">
  89. <ul>
  90. <li><a href="#" class="current">首页</a></li>
  91. <li><a href="#">博雅游戏</a></li>
  92. <li><a href="#">博雅新闻</a></li>
  93. <li><a href="#">关于我们</a></li>
  94. <li><a href="#">客服中心</a></li>
  95. <li class="last"><a href="#">投资者关系</a></li>
  96. </ul>
  97. </div>
  98. <div class="jrwm_box">
  99. <div class="jrwm">
  100. <a href="https://www.google.com/" target="_blank">加入我们</a>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </body>
  106. </html>

导航栏的效果如下:

09-CSS案例讲解:博雅互动 - 图2

banenr图

因为涉及到 js 的内容,这里先不讲内容区域轮播图的效果。

我们首先在导航条和banner图之间加一道墙,即class=cl,然后采用隔墙法对其设置clear: both;的属性。

然后设置banner的背景图片属性,添加banner图。

内容区域的制作

导航栏+banner+内容区域的完整代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. /*清除浮动的影响*/
  12. .cl{
  13. clear: both;
  14. }
  15. body{
  16. font-size: 14px;
  17. font-family: "Microsoft YaHei","SimSun";
  18. height: 8888px;
  19. }
  20. .header{
  21. height: 58px;
  22. background-color: #191D3A;
  23. }
  24. /*版心*/
  25. .inner_c{
  26. width: 1000px;
  27. margin: 0 auto; /*让导航条、内容区域等部分的版心在父亲里居中*/
  28. }
  29. /*导航条的logo*/
  30. .header .logo{
  31. float: left;
  32. margin-right: 40px;
  33. }
  34. .header .nav{
  35. float: left;
  36. }
  37. .header .nav ul{
  38. list-style: none; /*去掉列表前面的圆点*/
  39. }
  40. .header .nav ul li{
  41. float: left;
  42. width: 100px;
  43. line-height: 58px; /*让行高等于这一行的高度,保证里面的文字垂直居中*/
  44. border-left: 1px solid #252947; /*每个li之间有间隔线*/
  45. }
  46. .header .nav ul li.last{
  47. border-right: 1px solid #252947;/*最后一个li的右边加间隔线*/
  48. }
  49. .header .nav ul li a{
  50. display: block; /*将超链接转为块儿,可以保证其霸占父亲的整行*/
  51. height: 58px;
  52. text-decoration: none; /*去掉超链的下划线*/
  53. color:#818496;
  54. text-align: center; /*让这个div内部的文本居中*/
  55. }
  56. .header .nav ul li a.current{
  57. color:white;
  58. background: #252947;
  59. }
  60. .header .nav ul li a:hover{
  61. color: white;
  62. background: #252947;
  63. }
  64. .header .jrwm_box{
  65. float: left;
  66. height: 58px;
  67. width: 100px;
  68. padding-left: 48px;
  69. padding-top: 12px;
  70. }
  71. /*放背景图片的div*/
  72. .header .jrwm_box .jrwm{
  73. height: 34px;
  74. background-image: url(images/jrwm.png);
  75. background-repeat: no-repeat;
  76. text-align: center; /*让这个div内部的超链接居中*/
  77. }
  78. .header .jrwm_box .jrwm a{
  79. display: block; /*将超链接转为块儿,可以保证其霸占父亲的整行*/
  80. line-height: 34px; /*让行高为背景图片的高度,可以保证超链接的文字在背景图片里垂直居中*/
  81. text-decoration: none; /*去掉超链的下划线*/
  82. color: white;
  83. }
  84. .banner{
  85. height: 465px;
  86. background: url(images/banner.jpg) no-repeat center top;
  87. }
  88. .content{
  89. padding-top: 50px;
  90. }
  91. .content .product{
  92. height: 229px;
  93. border-bottom: 1px solid #DBE1E7;
  94. }
  95. .content .product ul{
  96. list-style: none;
  97. }
  98. .content .product ul li{
  99. float: left;
  100. width: 218px;
  101. margin-right: 43px;
  102. }
  103. .content .product ul li.last{
  104. margin-right: 0;
  105. width: 217px;
  106. }
  107. .content .product ul li img{
  108. width: 218px;
  109. height: 130px;
  110. }
  111. .content .product ul li.last img{
  112. width: 217px;
  113. }
  114. .content .product ul li h3{
  115. text-align: center;
  116. line-height: 38px;
  117. font-size: 14px;
  118. font-weight: bold;
  119. }
  120. .content .product ul li p.djbf{
  121. text-align: center;
  122. line-height: 16px;
  123. }
  124. .content .product ul li p.djbf a{
  125. font-size: 12px;
  126. color:#38B774;
  127. text-decoration: none;
  128. background:url(images/sanjiaoxing.png) no-repeat right 5px;
  129. padding-right: 12px;
  130. }
  131. </style>
  132. </head>
  133. <body>
  134. <div class="header">
  135. <div class="inner_c">
  136. <div class="logo">
  137. <img src="images/logo.png " alt="">
  138. </div>
  139. <div class="nav">
  140. <ul>
  141. <li><a href="#" class="current">首页</a></li>
  142. <li><a href="#">博雅游戏</a></li>
  143. <li><a href="#">博雅新闻</a></li>
  144. <li><a href="#">关于我们</a></li>
  145. <li><a href="#">客服中心</a></li>
  146. <li class="last"><a href="#">投资者关系</a></li>
  147. </ul>
  148. </div>
  149. <div class="jrwm_box">
  150. <div class="jrwm">
  151. <a href="https://www.google.com/" target="_blank">加入我们</a>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. <!-- 在导航条和banner之间隔一堵墙 -->
  157. <div class="cl"></div>
  158. <div class="banner"></div>
  159. <!-- 内容区域 -->
  160. <div class="content inner_c">
  161. <div class="product">
  162. <ul>
  163. <li>
  164. <p><img src="images/pro1.jpg" alt="" /></p>
  165. <h3>BPT宣传片</h3>
  166. <p class="djbf">
  167. <a href="#">点击播放</a>
  168. </p>
  169. </li>
  170. <li>
  171. <p><img src="images/pro2.jpg" alt="" /></p>
  172. <h3>BPT宣传片</h3>
  173. <p class="djbf">
  174. <a href="#">点击播放</a>
  175. </p>
  176. </li>
  177. <li>
  178. <p><img src="images/pro3.jpg" alt="" /></p>
  179. <h3>BPT宣传片</h3>
  180. <p class="djbf">
  181. <a href="#">点击播放</a>
  182. </p>
  183. </li>
  184. <li class="last">
  185. <p><img src="images/pro4.jpg" alt="" /></p>
  186. <h3>BPT宣传片</h3>
  187. <p class="djbf">
  188. <a href="#">点击播放</a>
  189. </p>
  190. </li>
  191. </ul>
  192. </div>
  193. </div>
  194. </body>
  195. </html>

代码解释:

(1)导航栏,左侧的logo:

错误的写法:

可能会有人直接将img标签作为logo的布局:

  1. <div class="logo">
  2. <img src="images/logo.png " alt="">
  3. </div>

然后将img的样式设置为:

  1. .header .logo{
  2. float: left;
  3. margin-right: 40px;
  4. }

这样写虽然视觉效果上达到了,但是搜索引擎是搜不到图片的,不利于SEO。

正确的写法:

正确的写法是将超链接作为logo的布局,里面放入文字(文字可以被SEO):

  1. <h1 class="logo">
  2. <a href="#">
  3. 博雅互动-世界上最好的游戏公司
  4. </a>
  5. </h1>

然后将logo设置为背景图

  1. .header .logo{
  2. float: left;
  3. padding-left: 12px;
  4. margin-right: 39px;
  5. width: 174px;
  6. height: 58px;
  7. }
  8. .header .logo a{
  9. display: block;
  10. width: 174px;
  11. height: 58px;
  12. background:url(images/logo.png) no-repeat;
  13. text-indent: -999em;
  14. }

由于搜索引擎是搜不到图片的,所以一定要把“博雅互动”这几个文字加上去,然后通过text-indent缩进的属性把文字赶走到视线以外的地方。这是做搜索引擎优化的一个重要的技巧。

另外,背景要放在里层的a标签里,不要放在外层的h1标签里。假设背景图放在h1里,那么不管h1的padding有多大,背景图的位置都不会变。

(1)内容区域,“点击播放”右侧的小三角形:

我们在“点击播放”的右侧放了一个三角形。这个很有技巧。

09-CSS案例讲解:博雅互动 - 图3

代码截取如下:

  1. .content .product ul li p.djbf a{
  2. font-size: 12px;
  3. color:#38B774;
  4. text-decoration: none;
  5. background:url(images/sanjiaoxing.png) no-repeat right center;
  6. padding-right: 12px;
  7. }

上方代码中,我们在第6行给“点击播放”这个超链接加一个右padding(很关键),然后在第5行把小三角这个背景图放在右padding的位置,就能达到想要的视觉效果。

(2)导航栏+banner+内容区域的效果如下:

09-CSS案例讲解:博雅互动 - 图4

工程文件如下:

我的公众号

想学习更多技能?不妨关注我的微信公众号:千古壹号(id:qianguyihao)。

扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:

09-CSS案例讲解:博雅互动 - 图5