css基础复习

CSS复习

文章目录

CSS 基础认知

  1. CSS 叫 层叠样式表, 用来 给html页面修改样式。 可以让页面更美观

​ 语法:
在这里插入图片描述

  1. 三种样式表的对比:

在这里插入图片描述



CSS 基本选择器

基本选择器我们主要讲解: 标签选择器、类选择器、id选择器、通配符选择器


标签选择器

语法是: 标签名 { 样式属性;}

结构是:

<p>我是一个段落</p>
<p>我是一个段落</p>
<p>我是一个段落</p>

样式的写法:

 p {
      /* 文字颜色 */
      color: red;
      /* 文字大小 */
      font-size: 20px;
 }

注意: 标签选择器是选择当前页面里面的所有一类标签,比如选择页面中所有的段落标签,不是选其中一个。


类选择器

样式点的定义, 结构类(class)调用

css样式:

.red {
      color: red;
 }

html结构:

<span class="red">大牌5折购</span>
<span>开学季</span>
<span>放学季</span>
<span>休学季</span>
<span>开学季</span>

注意:

1.所有标签上都有class属性,class属性的属性值称为类名(类似于名字)

2.类名可以由数字、字母、下划线、中划线组成,但不能以数字或者中划线开头

3.一个标签可以同时有多个类名,类名之间以空格隔开

4.类名可以重复,一个类选择器可以同时选中多个标签


id选择器

使用方法跟类非常的相似。 样式 #定义, 结构 id调用

css:

 #last {
    color: blue;
}

html:

<div>我是div</div>
<div>我是div</div>
<div id="last">我是div</div>

和类选择器的区别:(使用次数上)

  1. 类选择器相当于人的名字, 可以重复, 可以多次使用。
  2. ID选择器相当于人的身份证,不阔以重复使用, 只能使用一次。 唯一的。

注意: 以后开发中,我们写样式,首先考虑用类选择器。


通配符选择器

作用:选中所有的标签

CSS:

 * {
   color: red;
 }

html:

<body>
    <div>我是div</div>
    <p>我是段落</p>
    <h2>标题</h2>
</body>

注意:

特殊情况下才使用,不要迷恋他



字体和文本样式

文字大小 font-size

 /* 文字大小 */
 font-size: 18px;

注意:文字大小前往不要忘记加单位。


文字加粗 font-weight

有两组设置:

字体不加粗:

font-weight: normal;
font-weight: 400;

字体加粗:

font-weight: bold;
font-weight: 700;

注意: 我们更提倡使用 数字来表示, 注意不要跟单位哦~~~~

让span 加粗的写法:

span {
    font-weight: 700;
}

让标题不加粗的写法:

h2 {
    font-weight: 400;
}

文字不倾斜 font-style

让em或者i标签里面的文字不倾斜的写法:

 em {
   font-style: normal;
}

字体连写 font

  1. 语法规范,必须按照swsf的写法,不能颠倒
font: 字体样式  字体加粗  字体大小  字体
  1. 字体大小和什么字体是不能省略的. font-size 和font-family 是不能省略的。否则连写失效。

首行缩进 text-indent

可以实现文本的缩进效果

 p {
     /* text-indent: 20px; */
     text-indent: 2em;
     /* 1em 就是当前一个文字的大小 单位 相对单位 */
}

文本修饰 text-decoration

  div {
            /* 下划线 */
            /* text-decoration: underline; */
            /* 上划线 */
            /* text-decoration: overline; */
            /* 删除线 (贯穿线) */
            /* text-decoration: line-through; */
        }
        /* 鼠标经过a的时候 */
        a:hover {
            color: orange;
            /* 显示下划线 */
            text-decoration: underline;
        }
<div> 折扣 </div>
<a href="#"> 小米 </a>

水平对齐 text-align

.box {
    width: 400px;
    height: 400px;
    background-color: pink;
    /* 可以让div盒子里面的内容水平居中 */
    text-align: center;
    /* 让div盒子在浏览器水平居中 */
    margin: 0 auto;
}

注意:

/* 可以让div盒子里面的内容水平居中 /
text-align: center;
/
让div盒子在浏览器水平居中 */
margin: 0 auto;


行高 line-height

  1. 如果行高等于盒子的高度,则里面的单行文字会垂直居中
  2. 如果行高大于盒子的高度,则里面的单行文字会垂直偏下
  3. 如果行高小于盒子的高度,则里面的单行文字会垂直偏上
/* 行高等于高度,则可以让单行文字垂直居中 */
line-height: 400px;
font: 16px/28px '黑体';

给body 添加 1.5倍行高 是什么意思呢?

​ 让body 里面所有的子元素有个默认行高。 比如 body { line-height: 1.5 }

子元素 文字大小的 1.5倍 比如当前div 的字体大小是 16 那么当前元素默认的行高就是: 1.5 * 16 = 24 px

body这样写的好处是什么呢?

文字大的,那我们的行高就大, 文字小的,那么行高就小, 目的是阅读文字比较舒服。


Chrome 调试工具

非常好用。 帮助我们测试的。

场景1:
在这里插入图片描述

如果出现了黄色感叹号,并且被划掉了,则这句代码一定有错误。

在这里插入图片描述

单词拼写错误。

场景2:

在这里插入图片描述

最大的可能是 类名拼写错误。



选择器进阶

作用: 找标签


后代选择器

  • 作用: 选择所有的后代标签, 儿子, 孙子,重孙子…
  • 选择器语法:选择器1 选择器2 { css }
  • 写法: 用空格
 .header a {
     font-size: 14px;
     color: #333;
 }

html:

<div class="header">
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
</div>

子代选择器

  • 作用: 选择亲儿子标签, 亲儿子选择器
  • 选择器语法:选择器1 > 选择器2 { css }
  • 写法: >
/* 子代选择器,只选亲儿子 */
.box>span {
    color: red;
}

html:

 <div class="box">
     <span>儿子</span>
     <span>儿子</span>
     <span>儿子</span>
     <span>儿子</span>
     <p>
         <span>孙子</span>
         <span>孙子</span>
         <span>孙子</span>
         <span>孙子</span>
     </p>
 </div>

注意: 特殊情况下使用,当我们后面使用的时候在复习,当前只需要认出这是子代选择器即可。


并集选择器

  • 作用: 选中多组标签设置相同的样式

  • 选择器语法:选择器1 , 选择器2 { css }

  • 写法: 逗号

  • em,
    i {
        font-style: normal;
    }
    

交集选择器

  • 作用: 既选中是某个标签又选中对应的类

  • 选择器语法:选择器1选择器2 { css }

  • 写法: 连着写 div.box

    /* 交集选择器  既是又是 */
    p.one {
        color: red;
    }
    
    <div class="one">我是div</div>
    <p class="one">我是段落</p>
    <p class="one">我也是</p>
    <p>我也是段落</p>
    

伪类选择器

  • 作用: 鼠标悬停状态
  • 选择器语法:选择器 :hover { css }
  • 写法 :hover



属性选择器

属性选择器: 根据元素的属性来选择器元素

在这里插入图片描述

比如:把禁用按钮鼠标样式改为禁用

 /* 必须是button这类元素 同时这个button必须带有disabled属性 */
button[disabled] {
    cursor: not-allowed;
}

html

<button>+</button>
<button disabled>-</button>

权重: 类、伪类、属性选择器 都是 10 所以上面这个 写法是 11 button[disabled]

可以根据属性值来选择 不同的元素

 input[type=submit] {
     color: red;
}

这样只选择提交按钮

html

<input type="reset" value="重置">
<input type="submit" value="提交">



结构伪类选择器


结构伪类选择器介绍:

1. 是因为他根据html的结构来选择标签的,比如选择 第1个,比如选择第5个,比如选择 2.4.6个等等。
2. 因为是 : 冒号 所以是 伪类。

好处:

  1. 选择方便了,可以省去了很多的 类选择器, 这个是CSS3新增的选择器。

常见结构伪类选择器

在这里插入图片描述

注意:

类选择器、属性选择器、伪类选择器,权重为 10

比如css:

 /* 第一个孩子,并且是小li */
ul li:first-child {
    background-color: red;
}

/* 最后一个孩子,并且是小li */
ul li:last-child {
    background-color: red;
}

/* 选择第2个孩子  选第几个孩子,n 就是 几 */
ul li:nth-child(5) {
    background-color: red;
}

html:

 <ul>
     <li>第1个小li</li>
     <li>第2个小li</li>
     <li>第3个小li</li>
     <li>第4个小li</li>
     <li>第5个小li</li>
     <li>第6个小li</li>
     <li>第7个小li</li>
     <li>第8个小li</li>
</ul>

效果:

在这里插入图片描述

nth-child(n)

  1. n 可以是数字, 数字是几,就选择第几个孩子。

    ul li:nth-child(6) { }  选择第6个孩子
    
  2. n 还可以是 关键字 比如 odd even

/* 关键词  even 偶数  odd 奇数*/

ul li:nth-child(even) {
    background-color: skyblue;
}

ul li:nth-child(odd) {
    background-color: pink;
}

在这里插入图片描述

注意:

  1. nth-child(1) === first-child {}
  2. nth-child(8) === last-child {}
  3. nth-child 不能完全替代 first和 last-child 因为很多情况下,我们不知道有多少个孩子。
  1. n 还可以是 公式。
    • n 是从 0开始 012345…
    • 2n 是 偶数
    • 2n + 1 是 奇数
    • -n+3 选择前面3个
    • n+3 从第3个(包含第三个)往后面选
/* 3. 公式  n 默认从 0开始  0123456*/
/* ul li:nth-child(2n) {
background-color: pink;
} */
/* ul li:nth-child(-n+3) {
background-color: pink;
} */

ul li:nth-child(n+3) {
    background-color: pink;
}

伪元素

::before

  1. 他是一个盒子,是用css创建出来的。
  2. 他是一个行内元素,直接设置宽高无效。
  3. 他是一个孩子。 .box::before{} 这个 before伪元素是box 的一个子元素(孩子)
  4. 他是放到box盒子内容的最前面

::after

  1. 他是一个盒子,是用css创建出来的。
  2. 他是一个行内元素,直接设置宽高无效。
  3. 他是一个孩子。 .box::after{} 这个 after伪元素是box 的一个子元素(孩子)
  4. 他是放到box盒子内容的最后面
 /* 伪元素  before .... 之前 */
.box::before {
    /* 必须要写的属性 content */
    content: '我是';
    background-color: purple;
    width: 100px;
    height: 100px;
}

/* 伪元素  after .... 之后 */
.box::after {
    /* 必须要写的属性 content */
    content: '你呢?';
    background-color: skyblue;
    width: 100px;
    height: 100px;
}

before 和 after 必须有 content 属性

before 在内容的前面,after 在内容的后面

before 和 after 创建一个元素,但是属于行内元素。

因为在 dom 里面看不见刚才创建的元素,所以我们称为伪元素

伪元素和标签选择器一样,权重为 1



背景


背景色

  • background-color (bgc)

  • 半透明盒子的写法:

    .box {
        width: 200px;
        height: 200px;
        /* background-color: pink; */
        /* transparent 透明的  默认的  */
        /* background-color: transparent; */
        /* 半透明的写法 */
        background-color: rgba(0, 0, 0, .1);
        /* alpha  的取值范围是  0~1  */
    }
    

背景图

  • background-image: url() (bgi)

  • /* 背景不要忘了加 url */
    background-image: url(./images/logo-mi2.png);
    
    

    注意: 语法格式,一定要写 url ()


背景图平铺 background-repeat

  • background-repeat (bgr)
    在这里插入图片描述

    /* 背景不平铺 */
    background-repeat: no-repeat;
    /* background-repeat: repeat-x; */
    /* background-repeat: repeat-y; */
    
    

背景位置

  • background-position (bgp)

    1. 可以使用方位名词

      • 默认的是左上角对齐
      • 如果只写一个值,则另外一个值是默认是 center
      • 方位名词两个值没有顺序, left center 和 center left 等价的。
      /* 背景位置 */
      /* background-position: 0 0;  x  y  */
      /* 方位名词  left  right center */
      /* top 上  center 中 bottom */
      /* background-position: left center; */
      background-position: center left;
      /* background-position: right bottom; */
      /* background-position: center center; */
      /* 如果只写一个值,则另外一个值默认是 center */
      /* background-position: left; */
      /* background-position: top; */
      /* background-position: center; */
      
      
    2. 可以写精确单位

      注意:

      1. 如果跟的是精确的单位,则第一个值一定是 x, 第二个值一定是 y 。
      2. 也可以一个跟的精确单位,一个跟方位名词,但是也是有顺序的。
         /* 2. 可以利用精确单位 */
      /* background-position: x坐标 y坐标; */
      /* background-position: 10px 20px; */
      /* background-position: 20px 10px; */
      /* 距离左侧是 40px ,垂直是 居中对齐 */
      background-position: 40px center;
      
      

背景复合属性

  • background: 背景色 背景图 背景图平铺 背景图位置;

    注意:

    1. 他们是没有顺序的,但是我们提倡按照这个顺序写。背景色 背景图 背景图平铺 背景图位置
    2. 他们中间用 空格 隔开
 background: rgba(255, 0, 255, .1) url(./images/11.png) no-repeat 400px center;


插入图片和背景图片

什么时候时候插入图片,什么时候使用背景图片。

  1. 插入图片

    比如广告图片,比如产品类(手机、平板等等)的图片这些都用插入图片。 因为经常更换,img 更换方便

  2. 背景图片

​ 超大的背景图片,作为背景显示 比如 1920宽, 超小的装饰类的图片,都可以使用背景。

logo 经常使用背景来做。

  1. 移动位置

    插入图片只能通过内外边距,或者定位来移动。

    但是,背景图片非常灵活,通过 background-position 来移动


显示模式

根据标签不同的特点,我们可以把标签分成不同的种类。主要分为: 块级元素、行内元素、行内块元素


块元素 (block)

  • 特点

    • 独占一行
    • 设置宽高生效
    • 宽度默认是父级的100%
  • 转换写法 : display: block

     div {
         width: 300px;
         height: 100px;
         background-color: pink;
         /* display 显示 */
         /* block 块 */
         text-align: center;
         /* 可以让块级元素水平居中 */
         margin: 0 auto;
    }
    
    

比如: h、p、div、 ul 等等


行内元素(inline)

  • 特点

    • 一行显示多个
    • 设置宽高不生效
    • 尺寸和内容一样大
  • 转换写法 : display: inline;

    比如: span、a、em 、strong等等


行内块(inline-block)

  • 特点
    • 一行显示多个
    • 设置宽高生效
  • 转换写法: display: inline-block
  • 代表 input、 textarea 、 img 、 td 等等

【注】

  1. 块级元素里面可以放任何的元素。
  • p 里面一定不能放div , 我们 p h 这些 文字类的标签里面尽量不要放块级元素。
  1. 行内元素里面只能放行内元素。
  • a 可以放任何元素。 但是吐血建议,转换为块级元素。
  • 但是a里面不能再嵌套a标签



CSS 三大特性

了解三大特性可以让我们对CSS 特点有更好的了解。 可以解决很多的疑惑问题。

三大特性分别是:

  1. 继承性
  2. 层叠性
  3. 优先级

继承性

继承性: 子元素继承父元素的一些样式。

注意: 不是所有的样式都继承,比如宽度和高度就不继承,继承的是一些 文字类的样式。比如:

在这里插入图片描述

特殊情况:

  • 链接 有默认的 蓝色。 相当于 浏览器默认 加了一句话 a { color: blue;}
  • 其实继承了颜色,但是被浏览器默认样式给覆盖了。
  • h标题系列有默认的文字大小,继承会失效。

层叠性

同一级别: 冲突遵循的原则: 就近原则。 远亲不如近邻。

div {
    color: red;
    color: blue;
}

div {
    color: skyblue;
    font-size: 12px;
}

如果样式冲突,则会覆盖,后面覆盖前面。

如果样式不冲突,则叠加,同时加上相关样式。

长江后浪推前浪,前浪死在沙滩上


优先级

选择器公式:

继承 < 通配符 < 标签选择器 < 类选择器 < id 选择器 < 行内样式表 < important (重要的)

  • 继承的权重是 0 ,写样式已经写到执行的标签上去。

各个选择器的权重

  • 标签选择器: 0,0,0,1 简单记忆 1
  • 类选择器 : 0,0,1,0 简单记忆 10
  • id选择器 : 0,1,0,0 简单记忆就是 100
  • 行内样式表: 1,0,0,0 简单记忆就是 1000
  1. 复合选择器权重会叠加: div p 后代选择器: 0001 + 0001 = 0002
  2. 不会有进位的情况,比如 0,0,0, 10
  3. 如果选择器权重相同,则执行就近原则(层叠)

权重叠加计算

权重计算题解题步骤:

  1. 先判断选择器是否能直接选中标签,如果不能直接选中 → 是继承,优先级最低 → 直接pass
  2. 通过权重计算公式,判断谁权重最高

注意点:

实际开发中选择标签需要精准,尽量避免多个选择器同时选中一个标签的情况,不要自己难为自己


(操作)调试工具查错流程

在这里插入图片描述



盒子模型


边框

边框有三部分组成:
在这里插入图片描述

边框的连写方式:

/* border: 粗细  样式 颜色  */
/* border: 1px solid red; */
border: 1px solid red;

可以只给一个方向的边框:

left 左 right 右 top 上 bottom 下

border-left: 1px solid red; 左边框

border-right: 1px solid red; 右边框

border-top: 1px solid red; 上边框

border-bottom: 1px solid red; 下边框

input {
    width: 520px;
    height: 58px;
    font-size: 25px;
    /* 取消文本框默认的边框 */
    border: 0;
    /* 取消文本框默认的轮廓线 */
    outline: 0;
    border-bottom: 1px solid #e7e7e7;
    background: url(./img/fdj.png) no-repeat left center;
}

input:hover {
    border-bottom: 1px solid #ff6700;
}
<input type="text" placeholder="搜一搜">

padding 内边距

内边距是控制: 内容和边框之间的距离

在这里插入图片描述

比如:

 .box {
     width: 200px;
     height: 200px;
     background-color: pink;
     /* 内边距  padding*/
     /* 只写一个值, 上下左右都是 10px */
     /* padding: 10px; */
     /* padding 两个值  上下 是 10 左右是 20 */
     /* padding: 10px 20px; */
     /* 上是 10 左右是 20  下是 30 */
     /* padding: 10px 20px 30px; */
     /* 上 10  右 20  下 30  左 40 */
     /* padding: 10px 20px 30px 40px; */

}

如果只改动一侧的内边距

左内边距 padding-left: 20px;

右内边距 padding-right: 20px;

注意:

盒子的实际大小 = content(内容) + padding (内边距) + margin (外边距)

调整盒子大小:

  1. 手动内减模式 : 手动更改 width / height 的大小
  2. 自动内减模式: box-sizing: border-box

案例:新浪导航案例

<style>
    * {
        margin: 0;
        padding: 0;
    }

    .nav {
        height: 40px;
        background-color: rgb(255, 255, 255);
        border: 0;
        border-top: 4px solid rgb(255, 133, 0);
        border-bottom: 1px solid rgb(237, 238, 240);
    }

    .nav a {
        display: block;
        float:  left;
        height: 40px;
        padding: 0 15px;
        color: rgb(76, 76, 76);
        text-decoration: none;
        font-size: 16px;
        text-align: center;
        line-height: 40px;
    }

    .nav a:hover {
        color: #fe8400;
        background-color: #edeef0;
    }
</style>

<div class="nav">
    <a href="javascript:;">新浪导航</a>
    <a href="javascript:;">新浪导</a>
    <a href="javascript:;">新浪</a>
    <a href="javascript:;">新浪导航</a>
</div>

margin 外边距

  1. 让一个块级的盒子水平居中方法:
    • 必须是块级盒子,有宽度
    • 让盒子左右的外边距改为auto 即可。
  • margin: 0 auto;
  1. 清除浏览器元素默认的内外边距
* {
    margin: 0;
    padding: 0;
}

这样可以让浏览器默认的风格统一。


外边距折叠

外边距合并现象只发生在 垂直 的盒子 外边距。

  1. 上下的兄弟盒子。

    • 块级元素,上下两个盒子同时指定上下外边距,则会出现外边距合并的问题,以最大的那个外边距为准。

    • 比如:

    • .box1,
      .box2 {
          width: 200px;
          height: 200px;
          background-color: pink;
      }
      
      .box1 {
          margin-bottom: 100px;
      }
      
      .box2 {
          margin-top: 50px;
      }
      
    • 最后的结果是: 两个盒子的上下间距是 100px。

    • 解决方案是避免,只给其中的一个盒子外边距拉开距离即可。

  2. 上下的嵌套关系盒子(父子)- 塌陷

    • 如果给子盒子一个margin-top 则会把父盒子一起带下来,我们称为塌陷现象。
    • 解决方案:
      • 给父元素 加 padding-top 或者 border-top 可以解决
      • 给父元素 加 overflow:hidden
      • 给子元素转换为行内块元素
      • 给子元素加 浮动 、定位
      • 其实,可以直接给父元素加 padding-top: 100px;

    注意:

    1. 行内元素 我们只能给左右的内外边距,不要给上下的内外边距。
    2. 如果非得要给,请转换为块级元素或者行内块元素。
/* 3. 公式  n 默认从 0开始  0123456*/
/* ul li:nth-child(2n) {
background-color: pink;
} */
/* ul li:nth-child(-n+3) {
background-color: pink;
} */

ul li:nth-child(n+3) {
    background-color: pink;
}



标准流

网页布局: 需要 标准流 + 浮动 + 定位

标准流:又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素

常见标准流排版规则:

1.块级元素:从上往下,垂直布局,独占一行

2.行内元素 或 行内块元素:从左往右,水平布局,空间不够自动折行


浮动


我们为啥需要浮动?

我们想把多个块级元素放到同一行上。 打破标准流的限制。

浮动原来做图文混排效果,现在主要用来做网页布局的。


浮动语法

只有左浮动和右浮动。

float: left;
float: right;

浮动特点

1.浮动元素会脱标,在标准流中不占位置

2.浮动元素比标准流高出半个级别,可以覆盖标准流中的元素

3.浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动

4.浮动元素会受到上面元素边界的影响

5.浮动元素有特殊的显示效果:① 一行可以显示多个 ② 可以设置宽高

注意点:

浮动的元素不能通过text-align:center或者margin:0 auto


清除浮动

原因: 在父级元素没有给定高度是,主要靠子级元素来撑开标准流的父级元素,如果子级元素设置了浮动,就不再是标准流,也就不占位置,那父级元素就无法被撑开,这样就会影响到下面网页的布局

解决方法:

​ 1、给父级元素设置高度

​ 2、额外标签法

​ 在父级元素内容的最后添加一个块级元素,属性设置为clear:both

​ 3、单伪元素清除法 ——用伪元素替代了额外标签

.clearfix::after {
	content: '';
	display: block;
	clear: both;
	/*补充代码,在网页中看到伪元素*/
	height: 0;
    visibility: hidden;
}

4、双伪元素清除法

.clearfix::before,
.clearfix::after {
	content: '';
	display: block;
	
}
.clearfix::after {
	clear: both;
}

5、给父元素设置overflow : hidden

直接给父元素设置 overflow : hidden,但是多出来的部分会被切掉



定位


相对定位——relative

语法

position: relative;
top: 100px;
left: 100px;

特点

  1. 相对于自己原来的位置移动的

  2. 不脱标。 保留位置的。

  3. 加了相对定位的盒子通过 top left 移动距离 和 普通的盒子使用margin移动位置有什么区别?

    • 普通的margin 移动距离会影响下面盒子,把其他盒子挤走。
    • 而相对定位的盒子通过top 移动,则不会影响其余的盒子。

绝对定位——absolute

语法

/*1. 绝对定位 */
position: absolute;
/* 2. 偏移 */
top: 10px;
left: 10px;

特点

  1. 以最近一级带有定位的父级为准来移动距离。(static除外)
  2. 脱标。完全不占位置。
  3. 绝对定位的使用场景: 可以盖住任何盒子。

绝对定位和浮动(脱标)的注意点:

  1. 如果盒子本身没有宽度, 加了浮动和绝对定位,则宽度改为内容的宽度。经常加 100%。
  2. 任何元素添加了浮动和绝对定位(固定定位),则不需要模式转换,就可以直接给宽度和高度。

绝对定位的盒子水平垂直居中
  1. 走父盒子宽度/高度的一半 left : 50%; top: 50%;

  2. 往左/ 往上 走小盒子(自己盒子) 宽度 / 高度的一半 margin-left: xxxpx; margin-top: xxxpx;

     /* float: left; */
    position: absolute;
    /* 走父盒子宽度和盖度的一半 */
    left: 50%;
    top: 50%;
    /* 往左侧走自己(小盒子)宽度和高度的一半 */
    margin-left: -100px;
    margin-top: -15px;
    width: 200px;
    height: 30px;
    background-color: purple;
    

固定定位——fixed

语法

position: fixed;
bottom: 0;
right: 0;
width: 50px;
height: 200px;
background-color: pink;

特点

  1. 以浏览器的可视区来移动距离的
  2. 脱标的。完全不占位置

粘性定位——sticky

目标:保留原有位置 + 根据情况固定在屏幕上

特点:

1、不脱标,按照标准流布局

2、当屏幕滚动到某一个位置后,会固定在屏幕上

3、至少要指定一个边偏移属性



圆角边框

语法

 border-radius: 50px;

注意:

  1. 后面的值是半径

  2. 让正方形变为圆的算法: 宽或者高度的一半 或者 border-radius: 50%;

    /* 让正方形变为圆的算法: 宽或者高度的一半 */
    /* border-radius: 100px; */
    /* border-radius: 50%; */
    
  3. 胶囊的做法:

     border-radius: 25px;
    
    

    必须是像素,宽度或者高度的一半,较小值的那个。


圆角边框多个值的写法

border-radius:  左上角  右上角  右下角  左下角;   顺时针

.box {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* border-radius: 10px; */
            /* 后面的值是半径 */
            /* 让正方形变为圆的算法: 宽或者高度的一半 */
            /* border-radius: 50%; */
            /* border-radius: 10px 20px 30px 40px; */
            border-radius: 0 50%;
        }

        .box2 {
            width: 300px;
            height: 50px;
            border: 1px solid purple;
            /* border-radius: 50%; */
            border-radius: 25px;
        }

        .box3 {
            width: 50px;
            height: 300px;
            border: 1px solid purple;
            /* border-radius: 50%; */
            border-radius: 25px;
        }



定位叠放次序

z-index: 1;

注意点:

  1. 数字越大,层级约靠上。
  2. 只有定位的元素才有这个属性。
  3. 数字后面不跟单位。 font-weight: 400;
  4. 数字是整数。 可以是 负数 可以是 0 可以是正数 比如 1.2.3.4
  5. 默认值是 auto 。 就是跟父级一样大。

更改定位元素的层级

1、标准流、浮动、定位元素之间的层级关系是什么样?

标准流 < 浮动 < 定位 不同定位元素之间的层级关系是什么样?

2、相对、绝对、固定默认层级相同

此时HTML中写在下面的元素层级更高,会覆盖上面的元素

3、通过什么属性可以修改定位元素的层级?

z-index:数字;



上标和下标标签

上标标签

a<sup>2</sup>

下标标签

b<sub>2</sub>

生成之后的效果:
在这里插入图片描述



垂直对齐——vertical-align

属性名:vertical-align

属性值:

属性值效果
baseline默认,基线对齐
top顶部对齐
middle中部对齐
bottom底部对齐

图片底部有空白缝隙问题

原因: 图片和文字的基线对齐所有有缝隙

解决方案:

  1. 让图片和文字的底线对齐就可以了。

    img {
         vertical-align: middle;
    }
    
    
  2. 让图片转换为块级元素也可以。

    img {
          /* vertical-align: middle; */
         display: block;
    }
    
    



vertical-align可以解决的问题

  1. 文本框和表单按钮无法对齐问题
  2. input和img无法对齐问题
  3. div中的文本框,文本框无法贴顶问题
  4. div不设高度由img标签撑开,此时img标签下面会存在额外间隙问题
  5. 使用line-height让img标签垂直居中问题

注意点:

学习浮动之后,不推荐使用行内块元素让div一行中显示,因为可能会出现垂直对齐问题



光标类型——cursor

属性名:cursor

常见的鼠标样式

在这里插入图片描述



禁用按钮——disabled

添加 一个属性 disabled

 <button disabled class="not">-</button>

css 可以把鼠标设置为禁用样式

.not {
  cursor: not-allowed;
}



溢出 overflow

在这里插入图片描述

.box {
    /* 溢出 隐藏 我们的文字 */
    /* overflow: hidden; */
    /* scroll 滚动条 无论是否超出都显示滚动条 */
    /* overflow: scroll; */
    /* auto 如果超出就显示滚动条,不超出不显示 */
    overflow: auto;
    width: 200px;
    height: 200px;
    border: 1px solid red;
}




显示与隐藏

display 显示

显示: display: block;

隐藏: display:none;

不能做过渡效果~~~~

visibility 显示

显示: visibility: visible;

隐藏: visibility: hidden;

 /* display 显示 */
/* 隐藏元素,但是还在html页面中 不占位置 */
/* display: none; */
/* 显示元素 */
/* display: block; */

/* 占位置,保留位置,也是隐藏元素 */
/* visibility: hidden; */
/* visibility: visible; */



区别:

  1. display 隐藏元素但是不占有位置。
  2. visibility 隐藏元素,但是保留位置
  3. 实际开发中,我们看到的元素显示于隐藏是用的 display



盒子半透明 opacity

让盒子半透明,同时让里面的文字、图片等内容一起半透明。

.box2 {
    width: 300px;
    height: 300px;
    background-color: #000;
    opacity: 0.3;  /* 让盒子半透明,里面的内容都会半透明 */
    background-color: rgb(0, 0, 0, 0.3) /*背景半透明,盒子里的字不透明*/
}


注意: opacity的取值范围是 0~1 之间



过渡——transition

就是让样式从一个状态慢慢的变化到另外一个状态,这个过程我们称为过渡。

语法

transition:  属性  时间;

属性: 可以写单个属性, 开发中,我们经常写 all

时间: 一定要加 单位 s 比如 1s 就是1秒 0.3s

谁做过渡给谁加~~~~ transition : all .3s;

display加不了过渡效果,opacity可以



文本框获得焦点

input:focus {
    width: 200px;
}

focus 焦点 光标

鼠标 定到 表单里面才会触发的 样式



细线表格——border-collapse

完整css代码

 table {
     width: 600px;
     height: 200px;
     margin: 100px auto;
     /* 合并相邻的边框 但是只限于表格里面使用 给表格添加哦~~~ */
     border-collapse: collapse;
     text-align: center;
}

table,
th,
td {
    border: 1px solid pink;
}



CSS 三角

.box {
    position: relative;
    width: 200px;
    height: 300px;
    background-color: pink;
    margin: 100px auto;
}

.box::before {
    position: absolute;
    top: -50px;
    left: 70px;
    content: '';
    width: 0;
    height: 0;
    border: 25px solid transparent;
    border-bottom-color: pink;
}


显示:
在这里插入图片描述

css 边框三角形

 .box {
     position: relative;
     width: 200px;
     height: 300px;
     /* background-color: pink; */
     margin: 100px auto;
     border: 1px solid pink;
}

.box::before,
.box::after {
    position: absolute;
    top: -50px;
    left: 70px;
    content: '';
    width: 0;
    height: 0;
    border: 25px solid transparent;
    border-bottom-color: pink;
}

.box::after {
    border-bottom-color: #fff;
    top: -49px;
}


在这里插入图片描述

css压线效果

.box {
    position: relative;
    width: 800px;
    height: 0;
    border-bottom: 3px solid #000;
    margin: 100px auto;
}

.box h3 {
    position: absolute;
    left: 50%;
    top: -45px;
    margin-left: -100px;
    width: 200px;
    height: 50px;
    text-align: center;
    line-height: 50px;
    font-size: 20px;
    /* 核心代码 */
    background-color: #fff;
}




链接伪类选择器

有4个状态

在这里插入图片描述

a:link {
    color: #333;
    text-decoration: none;
}

a:visited {
    color: purple;
}

a:hover {
    color: #f40;
}

a:active {
    color: green;
} 

但是实际开发,我们这样写就够了~~~~

a {
    color: #333;
    text-decoration: none;
}

a:hover {
    color: #f40;
}



CSS 精灵图

场景:

项目中将多张小图片,合并成一张大图片,这张大图片称之为精灵图

在这里插入图片描述

优点:

减少服务器发送次数,减轻服务器的压力,提高页面加载速度

例如:需要在网页中展示8张小图片

  • 8张小图片分别发送→ 发送8次
  • 合成一张精灵图发送 → 发送1次

总结: 精灵图可以减少服务器发送次数,减轻服务器的压力,提高页面加载速度

使用方法

给盒子添加背景图片。

利用 background-position:x y; 来移动背景图片的位置。

基本精灵图的坐标都是负值。

案例

  1. 拼出自己的名字

    精灵图:

在这里插入图片描述

效果图:
在这里插入图片描述

css:

    <style>
        span {
            display: inline-block;
            background: url(./images/abcd.jpg) no-repeat;
        }

        span:nth-child(1) {
            width: 96px;
            height: 111px;
            background-position: -494px -276px;

        }

        span:nth-child(2) {
            width: 63px;
            height: 107px;
            background-position: -324px -141px;

        }

        span:nth-child(3) {
            width: 113px;
            height: 113px;
            background-position: -253px -274px;

        }

        span:nth-child(4) {
            width: 108px;
            height: 112px;
            background-position: -492px -140px;

        }
    </style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值