结构伪类选择器

根据元素在HTML中的结构关系查找元素

    选择器              说明

  E:first-child{}      匹配父元素中的第一个子元素,并且是E元素

  E:last-child{}      匹配父元素中的最后一个子元素,并且是E元素

  E:nth-child(n){}     匹配父元素中第n个子元素,并且是E元素

  E:nth-last-child(n){}   匹配父元素中倒数第n个子元素,并且是E元素

n的注意点:

  1.n为:0、1、2、3、4、5、6、......

  2.通过n可以组成常见公式

    功能      公式

    偶数     2n、even

    奇数    2n+1、2n-1、odd

   找到前五个    -n+5

 找到从第五个往后    n+5

    /* 偶数 */
    /* li:nth-child(2n) { */
    /* 奇数 */
    /* li:nth-child(2n+1) { */
    /* 找到前3个 */
    /* li:nth-child(-n+3) { */
    /* 4的倍数 */
    /* li:nth-child(4n) { */
伪元素:一般页面中的非主体内容可以使用伪元素
区别:(1)元素:HTML设置的标签
   (2)伪元素:由CSS模拟出的标签效果
种类:  伪元素          作用
     ::before    在父元素内容的最前面添加一个伪元素
        ::after      在父元素内容的最后添加一个伪元素
必须设置content属性才能生效,伪元素默认是行内元素(content: '内容';)
  <!-- 伪元素:通过CSS创建标签,装饰性的不重要的小图 -->
  <!-- 找父级,在这个父级里面创建子级标签 -->
标准流就是标签默认的排列方式(文档流)
冗余就是重复的意思

浮动

浮动早期的作用:图文环绕

浮动现在的作用:网页布局

代码:float:left/right;

特点:浮动元素会脱离标准流(简称:脱标),在标准流中不占位置;浮动比标准流高半个级别,可以覆盖标准流的元素;浮动找浮动,下一个浮动元素会在上一个浮动元素后面浮动

浮动元素特殊显示效果:一行显示多个,可以设置宽高

/* 浮动:在一行排列,宽高生效 ---浮动后的标签具备行内块特点 */
  /* CSS书写顺序:浏览器执行效率会更高
  1.浮动 / display
  2.盒子模型:margin border padding 宽度高度背景色
  3.文字样式 */
    /* 如果父级的宽度不够,子级会自动换行 */
    /* 第四个li和第八个li右侧间距清除 */
    .right li:nth-child(4n) {
      margin-right: 0;
    }
清除浮动:清除浮动带来的影响(如果子元素浮动了,此时子元素不能撑开标准流的块级父元素)
方法1:直接设置父元素高度(简单粗鲁,方便、但是有些布局中不能固定父元素高度,如:新闻列表,京东推荐模块)
方法2:额外标签法(在父元素内容的最后添加一个块级元素,给添加的块级元素设置clear: both)(会在页面中添加额外,会让页面的HTML结构变得复杂)
方法3:单伪元素清除法(用伪元素替代了额外标签)(和额外标签法原理一样)
基本写法:
.clearfix::after {
      content: '';
      /* 伪元素添加的标签是行内的,要求是块 */
      display: block;
      clear: both;
      /* 为了兼容性 */
      height: 0;
      visibility: hidden;
    }
特点:项目中使用,直接给标签加类即可清除浮动
方法4:双伪元素清楚法
/* .clearfix::before作用:解决外边距塌陷问题
 外边距塌陷:父子标签,子级加margin会影响父级的位置 */
    /* 清除浮动 */
    .clearfix::before,
    .clearfix::after {
      content: '';
      display: table;
    }
    /* 真正清楚浮动的标签 */
    .clearfix::after {
      clear: both;
    }
特点:项目中使用,直接给标签加类即可清除浮动
方法5:给父元素设置overflow: hidden; (直接给父元素设置)方便

随机推荐

  1. iOS设备和模块解耦-方案对比

     问题: 第一点,我们的设备之间,通过设备类型进行区分,然后分别跳转到不同的界面.导致不同设备会对同一个类别进行操作. 就会造成代码耦合,后续对类别进行增删改就会导致并行开发中容易出现代码冲突或者代码 ...

  2. CentOS7.6下安装MySql和Redis

    安装的MySQL为5.7版本1.下载安装官方的Yum Repository [root@localhost ~]# wget http://dev.mysql.com/get/mysql57-comm ...

  3. 【Shell】DBeaver Enterprise Edition 5.1.1 Download

    DBeaver Enterprise Edition 5.1.1 Download mkdir -p /opt/downloads/dbeaver/dbeaver-ee-5.1.1 mkdir -p ...

  4. SpringBoot 启动报循环依赖问题

    问题现象 Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating b ...

  5. react-router V6踩坑

    useRoutes() may be used only in the context of a <Router> component.需要将BrowserRouter放到外层,放到APP ...

  6. 7、Taylor公式(泰勒公式)通俗+本质详解

    参考:https://zhuanlan.zhihu.com/p/392808684 1.比较通俗地讲解一下泰勒公式是什么. 泰勒公式,也称泰勒展开式.是用一个函数在某点的信息,描述其附近取值的公式.如 ...

  7. QSS学习

    padding:内边距 margin:外边距用法

  8. (0409) Pycharm 的设置--参数设置(运行.py文件带参数,例如argument) 比如: demo.py -prj xxx

    1)  https://www.cnblogs.com/yksgzlyh/p/10221960.html 点击"Run"菜单下的"Edit Configurations. ...

  9. 《Makefile中变量的高级用法:变量的替换引用、变量的嵌套使用》

    高级使用方法有两种:第一种是变量的替换引用,第二种是变量的嵌套引用. 第一种用法经常用到,第二种用法我们很少使用.我们应该尽量避免使用变量的嵌套引用,在必须使用时,嵌套的层数越少越好.因为这种方法表达 ...

  10. js 自定義event

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...