Blogger Information
Blog 40
fans 0
comment 0
visits 16021
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
关于伪类选择器,选择器权重,以及box-sizing属性的课后练习。
飞天001
Original
246 people have browsed it

通过3月15日直播课程的学习,熟悉了选择器中的伪类选择器的应用,掌握了关于选择器权重的相关知识,以及box-sizing属性的实际用法和好处。

1. 伪类选择器

伪类选择器分类两种:一是结构伪类选择器,二是状态伪类选择器。

1.1 结构伪类

  • :nth-child()
  • :first-child
  • :last-child
  • :ntf-last-child()

    结构伪类实例

    1. /* 伪类选择器实例css */
    2. /* 用结构伪类中的:nth-child()实现精准控制某个元素 */
    3. .list > .item:nth-child(2){
    4. background-color:red;
    5. }
    6. .list > .item:nth-child(5){
    7. background-color: blueviolet;
    8. }
    9. /* 用结构伪类中的:first-child控制第一个元素 */
    10. .list > .item:first-child{
    11. background-color: blueviolet;
    12. }
    13. /* 用结构伪类中的:last-child控制最后一个元素 */
    14. .list > .item:last-child{
    15. background-color: chartreuse;
    16. }
    17. /* 用结构伪类中的:nth-last-child()控制从最后一个元素倒数的第某个元素 */
    18. .list > .item:nth-last-child(2){
    19. background-color: darkcyan;
    20. }
    21. .list > .item:nth-last-child(3){
    22. background-color: darkgoldenrod;
    23. }
    运行效果如下:

  1. /* 通过:nth-child(-n+3)实现控制前3个元素 */
  2. .list > .item:nth-child(-n+3){
  3. background-color: blue;
  4. }
  5. /* 通过:nth-last-child(-n+3)实现控制倒数前4个元素 */
  6. .list > .item:nth-last-child(-n+4){
  7. background-color: antiquewhite;
  8. }

运行效果如下:

  1. /* 通过:nth-child(n)实现控制所有元素 */
  2. .list > .item:nth-child(n){
  3. background-color: brown;
  4. }

运行效果如下:

  1. /* 通过:nth-child(n+3)实现控制从第3个元素开始的所有元素 */
  2. .list > .item:nth-child(n+3){
  3. background-color: bisque;
  4. }

运行结果如下:

  1. /* 通过:nth-last-child(n+5)实现控制倒数第5个元素开始的往前数所有元素 */
  2. .list > .item:nth-last-child(n+5){
  3. background-color: bisque;
  4. }

运行结果如下:

  1. /* 通过结构伪类:nth-child(2n)或者:nth-child(even)实现控制偶数元素 */
  2. .list > .item:nth-child(even){
  3. background-color: blueviolet;
  4. }

运行结果如下:

  1. /* 通过结构伪类:nth-child(2n+1)或者:nth-child(odd)实现对奇数元素的控制 */
  2. .list > .item:nth-child(odd){
  3. background-color: chocolate;
  4. }

运行结果如下:

  1. /* nth-child(an+b) 当a>=2时,固定间隔a-1,可以用偏移量b来进行微调,可正可负*/
  2. .list > .item:nth-child(3n+2){
  3. background-color: brown;
  4. }

运行结果如下:

1.2 状态伪类

  • :hover:鼠标悬停
  • enabled:有效控件
  • disabled:禁用控件
  • checked:选中控件
  • required:必填控件
  • focus:焦点控件
  • not():过滤掉某些元素
  • empty:空

状态伪类主要用于修饰链接和表单

  1. <form action="">
  2. <fieldset class="login">
  3. <div>
  4. <legend class="title">用户登录</legend>
  5. <label for="uname">用户名:</label>
  6. <input type="text" name="uname" id="uname">
  7. </div>
  8. <div>
  9. <label for="pwd">密 码:</label>
  10. <input type="password" name="pwd" id="pwd">
  11. </div>
  12. <div class="remember">
  13. <input type="checkbox">
  14. <label for="rem">记住我</label>
  15. </div>
  16. <button class="submit">提交</button>
  17. </fieldset>
  18. </form>

1.状态伪类中的焦点控件:focus

  1. /* 状态伪类实例 */
  2. div>input{
  3. border: none;
  4. border-bottom: 1px solid gray;
  5. }
  6. /* :focus焦点类实现点击触发焦点后,input文本框边框加上红色 */
  7. .login :focus{
  8. outline: 1px solid red;
  9. border-bottom: none;
  10. }

实现效果如下

2.状态伪类中的必填控件::required

首先在表单中input文本框中加入必填属性

<input type="text" name="uname" id="uname" required>

在css中加入:required

  1. /* 状态伪类实例 */
  2. div>input{
  3. border: none;
  4. border-bottom: 1px solid gray;
  5. }
  6. /* :focus焦点类实现点击触发焦点后,input文本框边框加上红色 */
  7. .login :focus{
  8. outline: 1px solid red;
  9. border-bottom: none;
  10. }
  11. .login :required{
  12. background-color: aqua;
  13. }

实现效果如下:

3.状态伪类中的选中控件:checked

  1. .login input:checked + label{
  2. color: blue;
  3. }

实现效果如下:

4.状态伪类中的鼠标悬停::hover

  1. .login>.submit:hover{
  2. background-color: brown;
  3. color: white;
  4. cursor: pointer;
  5. }

执行效果如下:

2. 选择器权重

元素 = 标签 + 属性
原子选择器:标签(tag)+类(class)+id
权重大小:
tag:1, class:10, id:100

权重需要累加

<h2 class="title" id="header">php中文网</h2>

  1. /* 类class的 权重是10,字体颜色为红色*/
  2. .title{
  3. color: red;
  4. }

效果如下

  1. /* 类class:title 权重是10,
  2. id:header 的权重是100,权重高于,title,因此字体显示蓝色blue
  3. */
  4. #header{
  5. color: blue;
  6. }
  7. .title{
  8. color: red;
  9. }

执行效果如下:

  1. * class:title 权重是10,
  2. id:header 的权重是100,h2是标签,权重是1. h2#header总共权重是101,为最高权重,因此字体显示绿色green
  3. */
  4. h2#header{
  5. color: green;
  6. }
  7. #header{
  8. color: blue;
  9. }
  10. .title{
  11. color: red;
  12. }

执行效果如下:

  1. * 在类.title加了!important为最高权重,因此显示字体为红色
  2. */
  3. h2#header{
  4. color: green;
  5. }
  6. #header{
  7. color: blue;
  8. }
  9. .title{
  10. color: red!important;
  11. }

执行效果如下:

3.盒模型 中的box-sizing属性

添加一个盒子<div class="box"></div>
css代码如下:

  1. /* 宽度设置为100px,高度设置为50px,但是实际的盒子大小是122*72
  2. 宽度是:100+20+2,高度是50+20+2 是加上边框border和内边距padding后的结果*/
  3. .box{
  4. width: 100px;
  5. height: 50px;
  6. border: 1px solid red;
  7. padding: 10px;
  8. }

这是因为盒子大小计算方法的属性box-sizing的默认值是content-box
content-box计算方法是:盒子大小需要设置的宽高加上边框+内边距.
border-box计算方法是:盒子大小直接以设置的widthheight为准.

  1. /* 宽度设置为100px,高度设置为50px,因为box-sizing的值是:border-box
  2. 所以盒子大小就是100*50
  3. */
  4. .box{
  5. width: 100px;
  6. height: 50px;
  7. border: 1px solid red;
  8. padding: 10px;
  9. box-sizing: border-box;
  10. }

通过这次直播课程,掌握了结构伪类和状态伪类两种伪类选择器使用方法,熟悉了选择器权重的知识,懂得了box-sizing属性值的运用.

Correcting teacher:PHPzPHPz

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