Blogger Information
Blog 15
fans 0
comment 0
visits 10408
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS-01选择器与语法
移动用户-7131521
Original
786 people have browsed it
  1. 实例演示选择器的优先级,id,class,tag; 2. 实例演示前端组件样式模块化的原理与实现; 3. 实例演示常用伪类选择器的使用方式,并用伪类来模块化元素组件(例如表单或列表) —>

#关于CSS选择器以及语法

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明,格式如下:

  • TAG选择器:标签 { 属性; }
  • 类选择器:.class值{属性;}
  • id选择器:#idz值{属性;}
  • 后代元素选择器:只要是后代元素就会被作用 格式如下:
    div 标签A{属性; }释义:div容器下 指定标签A内的子级元素都会生效, 非div以外的A标签就不会生效, 仅限定div下的A标签
  • 子元素选择器:父元素与子元素见加一个>,只有父子关系时,子元素才会被作用,孙子元素无效 如下:
    div>span{ color: red; }
  • 伪类选择器:通过冒号来定义,它定义了元素的状态,如点击按下,点击完成等,通过伪类可以为元素的状态修改样式,简单理解 就是css内置类css内部本身赋予它一些特性和功能,也就是你不用再class=…或id=…你就可以直接拿来使用,当然你也可以改变它的部分属性比如:a:link{color:#FF0000;}
    伪类用于定义元素的特殊状态。例如,它可以用于:
    设置鼠标悬停在元素上时的样式;为已访问和未访问链接设置不同的样式;设置元素获得焦点时的样式
  • { }大括号内可以设置多个属性,每个属性需要;分号隔开,通过选择器设定属性

CSS选择id ,class,tag优先级

关于优先级:id选择器是最高的 我们可以设置为权重为100,类选择器其次 权重为10, 标签选择器权重最低 为1
通常的css优先级比较可转化为数值大小的比较,如:#list 和.list以及tag ,其优先级为:100> 10>1具体可以代码如下:

  1. <head>
  2. <style>
  3. #list {
  4. background-color: red;
  5. }
  6. .list {
  7. background-color: #fff;
  8. }
  9. li {
  10. background-color: lightblue;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <div>
  16. <li id="list" class="list">hello,world</li>
  17. </div>
  18. </body>
  19. </html>

最终运行结果背景颜色是红色 如图:
css选择器优先级

前端组件样式模块化的原理与实现

小白原理:通常一个网站是由html css 与js共同实现的, 比较复杂的网站那么html页面也是比较复杂的,可读性不雅观,同时个人开发效率低,这个时候我们需要用到组件样式模块化进行开发,比如将html页面中的 css代码和js代码都分开到来个文件夹中,A部门写CSS代码,B部门写JS代码, 最后由C部门写HTML代码 ,并且直接导入A和B部门的代码直接拿过来用 这样多人协同短时间就可以构建一个完整的结构复杂的网站 ,举个例子,正常情况下我们会这样写:

  1. <html>
  2. <head>
  3. <style>
  4. h1 {
  5. background-color: red;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <div>
  11. <h1>hello,world</h1>
  12. </div>
  13. </body>
  14. </html>

其中h1 { background-color: red; } 是CSS选择器,接下来我们可以单独建立一个后缀是css文件,专门存放style样式表,方便后续直接调用 如下图:
css样式表
这样我们可以把选择器部分抽出来到css文件中,后续我们可以直接通过 @import url(这里传入css文件);命令导入css文件即可同样的效果 写法如下:

  1. <html>
  2. <head>
  3. <style>
  4. @import url(style.css);
  5. <!--注意这里,如果当前文件在某个目录下需要传入路径-->
  6. </style>
  7. </head>
  8. <body>
  9. <div>
  10. <h1>hello,world</h1>
  11. </div>
  12. </body>
  13. </html>

css文件中设置的颜色是lightblue浅蓝色,我们可以看下运行效果如图:
效果图

三,关于CSS伪类选择器的原理和使用方式

伪类选择器简单理解 是虚拟的class选择器 主要用结构伪类 用来选择子元素的, 需要有父元素作为查询的结构伪类选择器 代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>伪类选择器</title>
  8. <style>
  9. /* 结构伪类:选择子元素,要有一个父元素作为起点 * /
  10. <!--注意这里,当前list类中的限定li标签选择第三个列表,li也可以不写 空格默认为后代选择器,*代表所有标签, 建议写上标签限定,另外注意的点就是伪类选择器都是: 冒号开头 -->
  11. .list > li:nth-child(0n + 3) {
  12. @import url(style.css);
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <ul class="list">
  18. <li>item1</li>
  19. <li>item2</li>
  20. <li>item3</li> 这是被伪类选择器的标签
  21. <li>item4</li>
  22. <h6>item5<h6>
  23. <li>item6</li>
  24. </ul>
  25. </body>
  26. </html>

这样我们就直接选择中了第三个标签了,不过这样的写法可读性不够直观,这里我们推荐分组伪类结构选择器,推荐使用还是上述代码,我们改动下选择器 代码如下:
.list > li :nth-of-type(3){ @import url(style.css); }
这里我们就可以选择li标签下第三个, 如果想要选择h6标签的选择器呢,我们直接替换li,代码如下:
.list > h6 :nth-of-type(1){ @import url(style.css); }
其中第一个和最后一个是有快捷语法的,效果和上面是一样的,代码如下:
.list > li :last-of-type(1){ 注意这里 nth替换为last即可 @import url(style.css); } 倒数第一个 li元素
.list > li :first-of-type(1){ 注意这里 nth替换为first即可 @import url(style.css); } 正数第一个 li元素

四,组件化思想与伪类选择器实战

关于伪类选择器组件化,只要获取到某个元素的组件入口 也就是给父元素的class值,然后在根据子元素位置,使用伪类选择器就可以选择任何一个元素 代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>组件化编程</title>
  8. <style>
  9. /* 只要获取到页面中某个元素组件的入口,再根据子元素的位置,
  10. 在使用伪类就可以选择任何一个元素 */
  11. /* 选择首页 */
  12. .menu :first-of-type {
  13. background-color: lightblue;
  14. }
  15. /* 获取下载 */
  16. .menu :last-of-type {
  17. background-color: yellow;
  18. }
  19. /* 获取视频 */
  20. .menu :nth-last-of-type(2) {
  21. background-color: green;
  22. }
  23. /* 获取提交按钮 */
  24. .login :last-of-type {
  25. background-color: seagreen;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <nav class="menu">
  31. <a href="">首页</a>
  32. <a href="">视频</a>
  33. <a href="">下载</a>
  34. </nav>
  35. <hr />
  36. <form action="" style="display: grid; gap: 1rem" class="login">
  37. <input type="text" placeholder="UserName" />
  38. <input type="password" placeholder="password" />
  39. <input type="email" placeholder="email" />
  40. <button>提交</button>
  41. </form>
  42. </body>
  43. </html>

同理,我们可以把<style>这部分单独打包成css文件命名为style.css 代码如下:

  1. /* 只要获取到页面中某个元素组件的入口,再根据子元素的位置,
  2. 在使用伪类就可以选择任何一个元素 */
  3. /* 选择首页 */
  4. .menu :first-of-type {
  5. background-color: lightblue;
  6. }
  7. /* 获取下载 */
  8. .menu :last-of-type {
  9. background-color: yellow;
  10. }
  11. /* 获取视频 */
  12. .menu :nth-last-of-type(2) {
  13. background-color: green;
  14. }
  15. /* 获取提交按钮 */
  16. .login :last-of-type {
  17. background-color: seagreen;
  18. }

vscode文件格式是这样的,如下图:
组件化
下一步,我们利用组件化思维直接导入css文件即可,代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>组件化编程</title>
  8. <style>
  9. @import url(style.css); 注意这里导入上面的css文件
  10. </style>
  11. </head>
  12. <body>
  13. <nav class="menu">
  14. <a href="">首页</a>
  15. <a href="">视频</a>
  16. <a href="">下载</a>
  17. </nav>
  18. <hr />
  19. <form action="" style="display: grid; gap: 1rem" class="login">
  20. <input type="text" placeholder="UserName" />
  21. <input type="password" placeholder="password" />
  22. <input type="email" placeholder="email" />
  23. <button>提交</button>
  24. </form>
  25. </body>
  26. </html>

最终运行的结果都是一样的 结果如下图:

感谢,如有不足,欢迎指定

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post