第七篇(2) CSS(二)

本篇主要包含两部分内容:小米商城讲解 和 CSS样式补充。

第七章 CSS(二)

 

3.1 讲解:小米商城头部页面

练习题参考源代码提取地址:

  1. 链接: https://pan.baidu.com/s/11IX2NAxdo2yvBYdhy-ME-Q
  2. 提取码: yqeq

注意:由还没有讲 background属性,所以 logo 部分可暂用图片实现。

3.2 CSS样式

本节继续学习CSS常见样式。

3.2.1 border 边框

用于给标签设置边框。

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>CSS学习</title>
  6. <style>
  7. div{
  8. height:40px;
  9. width:400px;
  10. margin-top:10px;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <divstyle="border:1px solid #333333;"></div>
  16. <divstyle="border:1px solid #333333;"></div>
  17. <divstyle="border:2px solid #333333;"></div>
  18. <divstyle="border:1px dotted red;"></div>
  19. <divstyle="border:1px dotted goldenrod;"></div>
  20. <divstyle="border:3px dotted goldenrod;border-right:0"></div>
  21. </body>
  22. </html>

扩展border-radius也可以设置圆角边框。

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>CSS学习</title>
  6. <style>
  7. div {
  8. height:40px;
  9. width:400px;
  10. margin-top:10px;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <divstyle="border:2px solid #333333;border-radius: 10px;"></div>
  16. <divstyle="border:1px solid #333333;border-bottom-right-radius: 20px;"></div>
  17. <divstyle="border:1px solid #333333;border-bottom-right-radius: 20px;border-top-left-radius: 20px;"></div>
  18. <divstyle="border:1px solid #333333;width: 100px;height: 100px;border-radius: 30px;"></div>
  19. <divstyle="border:2px solid red;width:80px;height:80px;border-radius:50%;"></div>
  20. </body>
  21. </html>
练习:实现小米商城闪购

仅需要实现布局及顶部变宽即可,内部细节不需要实现。

3.2.2 background 背景

background用于设置标签背景,关于background的常用功能有:

  • background-color,设置背景颜色
  • backgroud-imgage,设置背景图片
  • background-repeat,背景图片如何重复
  • background-postion,背景图片位置

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>CSS学习</title>
  6. <style>
  7. .search {
  8. display:inline-block;width:40px;height:40px;
  9. border:1px solid #9d9d9d;
  10. background-image: url("https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_sousuo1.adc352a.png");
  11. background-size:16px16px;
  12. background-repeat:no-repeat;
  13. background-position:50%50%;
  14. }
  15. .car {
  16. display:inline-block;width:32px;height:32px;
  17. border:1px solid #9d9d9d;
  18. background-image: url("https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_5.png");
  19. background-repeat:no-repeat;
  20. background-position:-105px-110px;
  21. }
  22. .phone {
  23. display:inline-block;width:24px;height:24px;
  24. border:1px solid #9d9d9d;
  25. background-image: url("https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_5.png");
  26. background-repeat:no-repeat;
  27. background-position:-154px-176px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <aclass="search"></a>
  33. <aclass="car"></a>
  34. <aclass="phone"></a>
  35. </body>
  36. </html>

小米商城中的logo是基于背景图片实现。

3.2.3 cursor 光标

cursor指鼠标放在标签上之后显示的形状。

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>CSS学习</title>
  6. </head>
  7. <body>
  8. <ahref="#">你是谁?</a>
  9. <div>我是你永远的得不到的爸爸。</div>
  10. <divstyle='cursor: pointer;'>我去你麻辣个鸡。</div>
  11. <divstyle='cursor: help;'>你是个傻吊吗?。</div>
  12. <divstyle='cursor: move;'>不,我是个傻爹?。</div>
  13. </body>
  14. </html>

3.2.5 position 定位

position用于对屏幕上的标签进行定位,定位相关知识点可以分为两种:

  • position:fixed,生成绝对定位的元素,相对于浏览器窗口进行定位。例如最常见的广告位和返回顶部,都是基于它来实现。

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>CSS学习</title>
    6. <style>
    7. body{
    8. margin:0;
    9. }
    10. .back-top{
    11. width:45px;
    12. height:45px;
    13. border:1px solid #dddddd;
    14. background-color: white;
    15. position:fixed;
    16. right:2px;
    17. bottom:100px;
    18. font-size:12px;
    19. text-align: center;
    20. color:#757575;
    21. }
    22. .back-top img{
    23. display: block;
    24. width:20px;
    25. margin:3pxauto;
    26. }
    27. </style>
    28. </head>
    29. <body>
    30. <divstyle="height:48px;background-color: black"></div>
    31. <divstyle="height:500px;background-color:#f5f5f5;"></div>
    32. <divstyle="height:500px;background-color: white;"></div>
    33. <divstyle="height:500px;background-color:#f5f5f5;"></div>
    34. <divclass="back-top">
    35. <imgsrc="https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_backtop.png"alt="">
    36. 回顶部
    37. </div>
    38. </body>
    39. </html>
  • position:absolute ,生成绝对定位的元素,相对于特定第一个父元素进行定位,常与position:relative结课使用。例如:想要让某标签相对某指定标签位置显示。

     

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>小米商城</title>
    6. <linkrel="shortcut icon"href="img/favicon.ico">
    7. <style>
    8. body {
    9. margin:0;
    10. font:14px/1.5HelveticaNeue,Helvetica,Arial,MicrosoftYahei,HiraginoSans GB,Heiti SC,WenQuanYiMicroHei, sans-serif;
    11. }
    12. .container {
    13. width:1190px;
    14. margin:0auto;
    15. }
    16. .left {
    17. float: left;
    18. }
    19. .right {
    20. float: right;
    21. }
    22. .header {
    23. height:40px;
    24. line-height:40px;
    25. background-color:#333;
    26. color:#b0b0b0;
    27. font-size:12px;
    28. }
    29. .header .menus ul {
    30. list-style: none;
    31. padding:0;
    32. margin:0;
    33. }
    34. .header .menus ul li {
    35. float: left;
    36. }
    37. .header .menus a,.header .account a,.header .car a {
    38. text-decoration: none;
    39. display:inline-block;
    40. padding:05px;
    41. }
    42. .header .menus .app {
    43. position: relative;
    44. }
    45. .header .menus .app .download {
    46. padding:10px;
    47. background-color: white;
    48. border:1px solid #dddddd;
    49. position: absolute;
    50. left:5px;
    51. top:40px;
    52. }
    53. .header .menus .app .download img {
    54. display: block;
    55. width:80px;
    56. height:80px;
    57. }
    58. .header .menus .app .download div {
    59. margin-top:5px;
    60. line-height:20px;
    61. text-align: center;
    62. }
    63. .header .car a {
    64. display:inline-block;
    65. height:40px;
    66. padding:015px;
    67. margin-left:20px;
    68. background-color:#424242;
    69. }
    70. </style>
    71. </head>
    72. <body>
    73. <divclass="header">
    74. <divclass="container">
    75. <divclass="menus">
    76. <ul>
    77. <li><a>小米商城</a></li>
    78. <li><a>MIUI</a></li>
    79. <li><a>IoT</a></li>
    80. <li><a>云服务</a></li>
    81. <liclass="app">
    82. <a>下载app</a>
    83. <divclass="download">
    84. <imgsrc="https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_20130809170025.png"alt="">
    85. <div>快来扫码下载</div>
    86. </div>
    87. </li>
    88. <li><a>规则协议</a></li>
    89. </ul>
    90. </div>
    91. <divclass="car right"><a>购物车(0)</a></div>
    92. <divclass="account right">
    93. <a>登录</a>
    94. <a>注册</a>
    95. <a>消息通知</a>
    96. </div>
    97. <divstyle="clear: both;"></div>
    98. </div>
    99. </div>
    100. </body>
    101. </html>

总结:如果在使用absolute定位时,找不到特定的父级标签,absolute根据整个页面大小的进行定位。

  • fixed,只能根据浏览器窗口进行定位,将标签固定在浏览器窗口的某个位置。
  • absolute,可结合relative实现相对定位;也可单独使用,将标签固定页面的某个位置。
扩展应用:后台管理布局

position中的定位也常用于后台管理布局。

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>CSS学习</title>
  6. <style>
  7. body {
  8. margin:0;
  9. }
  10. .header {
  11. height:48px;
  12. background-color:#499ef3;
  13. }
  14. .body .menu{
  15. position:fixed;
  16. top:48px;
  17. left:0;
  18. bottom:0;
  19. width:220px;
  20. border-right:1px solid #dddddd;
  21. overflow: scroll;
  22. }
  23. .body .content{
  24. position:fixed;
  25. top:48px;
  26. right:0;
  27. bottom:0;
  28. left:225px;
  29. /* 超出范围的话,出现滚轮 */
  30. overflow: scroll;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <divclass="header"></div>
  36. <divclass="body">
  37. <divclass="menu"></div>
  38. <divclass="content"></div>
  39. </div>
  40. </body>
  41. </html>
练习:小米商城扫码&返回顶部

3.2.4 opacity 透明度

给标签设置透明度,例如:常见的加载、登录框等显示都是基于它实现。

实现思路:

  • 基于z-index属性把页面分为三层:最底层是文章、中间层是黑色遮罩、最上层是登录框。

  • 为中间的黑色遮罩设置透明度,否则无法看到最底层,透明度值范围:0~1,越大越不透明,例如:

    1. filter:alpha(opacity=50);/* IE */
    2. -moz-opacity:0.5;/* 老版Mozilla */
    3. -khtml-opacity:0.5;/* 老版Safari */
    4. opacity:0.5;/* 支持opacity的浏览器*/
案例:对话框示例代码

  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. body{
  8. margin:0;
  9. }
  10. .container{
  11. width:980px;
  12. margin:0auto;
  13. }
  14. .header{
  15. height:48px;
  16. background-color:#499ef3;
  17. }
  18. .shade{
  19. position:fixed;
  20. top:0;
  21. bottom:0;
  22. left:0;
  23. right:0;
  24. background-color: black;
  25. opacity:0.7;
  26. }
  27. .login{
  28. width:400px;
  29. height:300px;
  30. background-color: white;
  31. border:1px solid #dddddd;
  32. position:fixed;
  33. top:60px;
  34. left:50%;
  35. margin-left:-200px;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <divclass="header"></div>
  41. <divclass="body">
  42. <divclass="container"style="text-align: center">
  43. <imgsrc="https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_big_girl.png"alt="">
  44. </div>
  45. </div>
  46. <!--遮罩层-->
  47. <divclass="shade"></div>
  48. <!--登录框-->
  49. <divclass="login">
  50. <h2style="text-align: center">用户登录</h2>
  51. </div>
  52. </body>
  53. </html>

3.2.6 hover 伪类

hover伪类作用:当鼠标放在标签上时,可以能够设置一些样式。

  • 示例1:鼠标放在标签上方,标签特殊显示。

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>小米商城</title>
    6. <linkrel="shortcut icon"href="img/favicon.ico">
    7. <style>
    8. body {
    9. margin:0;
    10. font:14px/1.5HelveticaNeue,Helvetica,Arial,MicrosoftYahei,HiraginoSans GB,Heiti SC,WenQuanYiMicroHei, sans-serif;
    11. }
    12. .left {
    13. float: left;
    14. }
    15. .container {
    16. width:980px;
    17. margin:0auto;
    18. }
    19. .header {
    20. height:40px;
    21. line-height:40px;
    22. background-color:#333;
    23. color:#b0b0b0;
    24. font-size:12px;
    25. }
    26. .header .menus ul {
    27. list-style: none;
    28. padding:0;
    29. margin:0;
    30. }
    31. .header .menus ul li {
    32. float: left;
    33. }
    34. .header .menus a{
    35. text-decoration: none;
    36. display:inline-block;
    37. padding:05px;
    38. color:#b0b0b0;
    39. }
    40. .header .menus a:hover{
    41. color: white;
    42. background-color:#424242;
    43. }
    44. </style>
    45. </head>
    46. <body>
    47. <divclass="header">
    48. <divclass="container">
    49. <divclass="menus left">
    50. <ul>
    51. <li><ahref="#">小米商城</a></li>
    52. <li><ahref="#">MIUI</a></li>
    53. <li><ahref="#">IoT</a></li>
    54. <li><ahref="#">云服务</a></li>
    55. </ul>
    56. </div>
    57. <divstyle="clear: both;"></div>
    58. </div>
    59. </div>
    60. </body>
    61. </html>
  • 示例2:鼠标放在标签上方,显示额外菜单。

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>小米商城</title>
    6. <linkrel="shortcut icon"href="img/favicon.ico">
    7. <style>
    8. body {
    9. margin:0;
    10. font:14px/1.5HelveticaNeue,Helvetica,Arial,MicrosoftYahei,HiraginoSans GB,Heiti SC,WenQuanYiMicroHei, sans-serif;
    11. }
    12. .container {
    13. width:1190px;
    14. margin:0auto;
    15. }
    16. .left {
    17. float: left;
    18. }
    19. .right {
    20. float: right;
    21. }
    22. .header {
    23. height:40px;
    24. line-height:40px;
    25. background-color:#333;
    26. color:#b0b0b0;
    27. font-size:12px;
    28. }
    29. .header .menus ul {
    30. list-style: none;
    31. padding:0;
    32. margin:0;
    33. }
    34. .header .menus ul li {
    35. float: left;
    36. }
    37. .header .menus a,.header .account a,.header .car a {
    38. text-decoration: none;
    39. display:inline-block;
    40. padding:05px;
    41. }
    42. .header .menus .app {
    43. position: relative;
    44. }
    45. .header .menus .app .download {
    46. padding:10px;
    47. background-color: white;
    48. border:1px solid #dddddd;
    49. position: absolute;
    50. left:5px;
    51. top:40px;
    52. display: none;
    53. }
    54. .header .menus .app .download img {
    55. display: block;
    56. width:80px;
    57. height:80px;
    58. }
    59. .header .menus .app .download div {
    60. margin-top:5px;
    61. line-height:20px;
    62. text-align: center;
    63. }
    64. .header .car a {
    65. display:inline-block;
    66. height:40px;
    67. padding:015px;
    68. margin-left:20px;
    69. background-color:#424242;
    70. }
    71. .header .menus .app:hover .download{
    72. display: block;
    73. }
    74. </style>
    75. </head>
    76. <body>
    77. <divclass="header">
    78. <divclass="container">
    79. <divclass="menus">
    80. <ul>
    81. <li><a>小米商城</a></li>
    82. <li><a>MIUI</a></li>
    83. <li><a>IoT</a></li>
    84. <li><a>云服务</a></li>
    85. <liclass="app">
    86. <a>下载app</a>
    87. <divclass="download">
    88. <imgsrc="https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_20130809170025.png"alt="">
    89. <div>快来扫码下载</div>
    90. </div>
    91. </li>
    92. <li><a>规则协议</a></li>
    93. </ul>
    94. </div>
    95. <divclass="car right"><a>购物车(0)</a></div>
    96. <divclass="account right">
    97. <a>登录</a>
    98. <a>注册</a>
    99. <a>消息通知</a>
    100. </div>
    101. <divstyle="clear: both;"></div>
    102. </div>
    103. </div>
    104. </body>
    105. </html>

3.2.7 after 伪元素

after伪元素作用:在自己内部标签底部设置元素。

  • 示例1:在标签后面设置文字。

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>CSS学习</title>
    6. <linkrel="shortcut icon"href="img/favicon.ico">
    7. <style>
    8. li:after{
    9. content:'戴帽子';
    10. color: green;
    11. font-weight:500;
    12. }
    13. </style>
    14. </head>
    15. <body>
    16. <ul>
    17. <li>王宝强</li>
    18. <li>陈羽凡</li>
    19. <li>贾乃亮</li>
    20. </ul>
    21. </body>
    22. </html>
  • 示例2:在标签后添加标签,解决float脱离文档流的问题,不用再额外手动添加标签了。
    学习after伪元素之后,再处理脱离文档流的问题时候,只需要为父标签应用 clearfix样式即可(严重推荐)。

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>CSS学习</title>
    6. <style>
    7. .clearfix:after{
    8. content:'';
    9. display: block;
    10. clear: both;
    11. }
    12. .row{
    13. background-color: pink;
    14. }
    15. .item{
    16. float: left;
    17. width:100px;
    18. height:50px;
    19. border:1px solid red;
    20. }
    21. </style>
    22. </head>
    23. <body>
    24. <divclass="row clearfix">
    25. <divclass="item"></div>
    26. <divclass="item"></div>
    27. </div>
    28. <divstyle="background-color: goldenrod;"class="clearfix">
    29. <divstyle="float: left;">向左走</div>
    30. <divstyle="float: right;">向右走</div>
    31. </div>
    32. </body>
    33. </html>

3.3 今日作业

实现小米商城首页所有功能(无需实现最底部功能)。

http://www.mi.com

posted @ 2021-05-08 16:02  风hua  阅读(77)  评论(0编辑  收藏  举报