博客列表 >0322作业-css基本语法、选择器及模块化开发

0322作业-css基本语法、选择器及模块化开发

千山暮雪
千山暮雪原创
2021年03月23日 17:03:27890浏览

一、样式的层叠及优先级

CSS样式分行内样式、内部样式、外部样式。行内样式的作用域为元素,内部样式作用域为当前文件,外部样式作用域为引用了该样式的文件。
优先级: 行内>内部>外部。如果优先级相同,样式按顺序执行,下面的会替换掉上面的样式。

CSS基本语法:
选择器 {
声明,分两部分
属性:值,。。。可以多个
}
选择器+声明=样式规则

选择器的优先级:!important > id > class > tag。!important只做为调试时使用,正常的线上不用!important,只用id、class、tag。多个id、class、tag优先级的计算方式:
一个id:1,0,0
一个class:0,1,0
一个tag:0,0,1
一个id:1,0,0
2个class:0,2,0
10个tag:0,0,10
低优先的不存在进制,有高优先的先对比高优先,相同后再对比低优先。如:0,1,0优先于0,0,10。

案例:class>tag

class > tag

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .header {color: green}
  8. h1 {color: red}
  9. </style>
  10. </head>
  11. <body>
  12. <h1 class="header" id="nav">Hello World!</h1>
  13. </body>
  14. </html>

案例:id>class>tag

id>class>tag

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. #nav { color: #1E9FFF}
  8. .header {color: green}
  9. h1 {color: red}
  10. </style>
  11. </head>
  12. <body>
  13. <h1 class="header" id="nav">Hello World!</h1>
  14. </body>
  15. </html>

二、前端组件样式的模块化开发实现

模块化通过把样式拆分为多个外部样式,同步开发,最后整合。
exp:外部样式css目录下创建了四个文件:
整合文件:index.css
头部模块:header.css
身份模块:main.css
脚部模块:footer.css
目录
各模块代码如下:

  1. index.css
    1. @import url(header.css);
    2. @import url(main.css);
    3. @import url(footer.css);
  2. header.css
    1. header {
    2. min-block-size: 3em;
    3. background-color: #A5A5A5;;
    4. }
  3. main.css
    1. main {
    2. min-block-size: 8em;
    3. background-color: #c5c5c5;
    4. }
  4. booter.css
    1. footer {
    2. min-block-size: 5em;
    3. background-color: #999999;
    4. }
    5.index.html
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <link rel="stylesheet" href="css/index.css">
    7. </head>
    8. <body>
    9. <header>头部</header>
    10. <main>身体</main>
    11. <footer>脚部</footer>
    12. </body>
    13. </html>

最终的效果:
模块化

三、选择器

选择器可分为三大类:简单选择器、上下文选择器、伪类选择器。

简单选择器

选择器名 符号 功能 示例
标签选择器 div,p,span 根据元素标签名称进行匹配 div {…}
群组选择器 , 同时选择多个不同类型的元素 h1,h2,h3{…}
通配符选择器 * 选择全部元素,不区分类型 * {…}
属性选择器 [] 根据元素属性进行匹配 *[…]
类选择器 . 根据元素 class 属性进行匹配 *.active {…}
id 选择器 # 根据元素 id 属性进行匹配 *#top {…}

上下文选择器

首先要分清楚元素在上下文中有哪些角色。
元素的四种角色:

  • 祖先元素:拥有子元素,孙元素等所有层级的后代元素
  • 父级元素:仅拥有子元素层级的元素
  • 后代元素:与其它层级元素一起拥有共同祖先元素
  • 子元素:与其它同级元素一起拥有共同父级元素
选择器名 符号 功能 示例
后代选择器 空格 选择当前元素的所有后代元素 div p, body *
父子选择器 > 选择当前元素的所有子元素 div > h2
同级相邻选择器 + 选择拥有共同父级且相邻的元素 li.red + li
同级所有选择器 ~ 选择拥有共同父级的后续所有元素 li.red ~ li

伪类选择器

以冒号:开头的称伪类,分很多种,有
结构伪类::first-child、:only-child、:nth-last-child(n)、。。。
表单伪类::enabled、:checked、:required、。。。
状态伪类::link、:active、:hover、。。。
文档伪类::root、:target、:lang、。。。
伪元素:::after、::before、::focus-visible、。。。
我们主要使用结构伪类

伪类选择器名 符号 功能 示例
不分组匹配 :first-child 匹配第一个子元素 div :first-child
:last-child 匹配最后一个子元素 div :last-child
:only-child 选择元素的唯一子元素 div :only-child
:nth-child(n) 匹配任意位置的子元素 div :nth-child(n)
:nth-last-child(n) 匹配倒数任意位置的子元素 div :nth-last-child(n)
分组匹配 :first-of-type 匹配按类型分组后的第一个子元素 div :first-of-type
:last-of-type 匹配按类型分组后的最后一个子元素 div :last-of-type
:only-of-type 匹配按类型分组后的唯一子元素 div :only-of-type
:nth-of-type() 匹配按类型分组后的任意位置的子元素 div :nth-of-type(n)
:nth-last-of-type() 匹配按类型分组后倒数任意位置的子元素 div :nth-last-of-type(n)

具体例子:
伪类示例
代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <style>
  8. .sport p:nth-last-of-type(2) {
  9. background-color: deeppink;
  10. }
  11. .sport li:nth-of-type(2) {
  12. background-color: darkblue;
  13. }
  14. .sport > div ul {
  15. list-style-type: none
  16. }
  17. .sport p {
  18. width: 3em;
  19. height: 2em;
  20. }
  21. /*p最后一个元素*/
  22. .sport p:last-of-type {
  23. background-color: red;
  24. }
  25. /*li最后一个元素*/
  26. .sport li:last-of-type {
  27. background-color: lightsalmon;
  28. }
  29. /*li第一个元素*/
  30. .sport li:first-child {
  31. background-color: green;
  32. }
  33. .sport {
  34. list-style-type: none;
  35. }
  36. .sport li {
  37. width: 3em;
  38. height: 2em;
  39. background-color: lightblue
  40. }
  41. </style>
  42. <body>
  43. <h3>运动</h3>
  44. <ul class="sport">
  45. <Li>蓝球</Li>
  46. <Li>足球</Li>
  47. <div>
  48. <h4>排球</h4>
  49. <ul>
  50. <li>水上排球</li>
  51. <li>沙滩排球</li>
  52. <li>室内排球</li>
  53. </ul>
  54. </div>
  55. <p>游泳</p>
  56. <p>铁人</p>
  57. <Li>长跑</Li>
  58. <p>快跑</p>
  59. <Li>划船</Li>
  60. </ul>
  61. </body>
  62. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议