CSS盒模型初探|青训营笔记

99 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的的第5天 (❤ ω ❤)

前段时间制作名片时借助CSS写了一个头像效果,如今在做项目时突发奇想,便在这里单独写一写创作一个盒模型的思路,积少成多,成为自己日后制作的tips集。

image.png

CSS盒模型

在前端学习中,我们经常会使用浏览器的开发者工具,在使用过程中,我们会发现可视化界面会展示出这样一个小盒子。这就是CSS的盒模型,将元素布局所用的各项区域元素展现出来。

image.png

这时,我们使用CSS来编辑、填入元素的属性值,把它改造成我们自己想要的样式。

  • width 宽度,取值为长度、百分数、auto

    • 百分数:相对于父级容器的width

    • auto 由浏览器根据其它属性确定

      ⚡容器有指定的宽度时,百分数才生效

  • height 高度,取值为长度、百分数、auto

    • 百分数:相对于容器的height

    • auto 由浏览器根据其它属性确定

      ⚡容器有指定的高度时,百分数才生效

  • padding 内边距

    • 百分数相对于容器的宽度
  • border 边框

    • 指定容器边框样式、粗细和颜色,
  • margin 外边距,取值可以是长度、百分数、auto

    • 百分数相对于容器宽度

    • 🔥margin的合并(margin collapse)

    垂直方向上,对于两个相邻且都设置了margin的元素,两元素间的边距取其中最大一个的值

盒模型类型

  • 标准盒模型

    • 对于标准盒模型来说,

      width = content宽度

      height = content高度

  • 怪异盒模型

    • 对于怪异盒模型来说,

      width = content宽度 + padding + border height = content高度 + padding + border

  • 类型选择

    • 对于选择标准盒模型还是怪异盒模型,可以通过设置属性box-sizing进行规定:

      • 标准盒模型:box-sizing:content-box

      • 怪异盒模型:box-sizing:border-box

      该属性的默认值为content-box

创建并编辑头像框

我们需要先在需要的页面位置创建一个理想大小的“盒子”,然后为其设定所想要的背景色。

这时我们就要借助linear-gradient函数,来实现我们所需的渐变效果。

  • linear-gradient(渐变轴,前侧颜色,后侧颜色)
    • 示例: background: linear-gradient(45deg, blue, red);
    • 这里表示渐变轴为45度,从蓝色渐变到红色

我之前写的头像框代码是这样的:

linear-gradient(130deg, rgb(133, 182, 238), rgb(13, 78, 153));

结果如图:

image.png

然后,我们设置代码 border-radius: 50%;这时盒子将变为圆形。

image.png

这时,边框就初具雏形了。我们下一步便要借助CSS关键帧,来实现渐变的动态效果。 在块元素的style中写入animation: image-animation 3s linear infinite;

  • 意为对于绑定的关键帧 rotate 在3s内完成一次,这一动作重复无限次(infinite),动画从头到尾的速度是相同的(linear)。

具体效果 然后在外部划定关键帧

image-animation {
  25%{
    background-position:  right top;
  }
  50%{
    background-position:  left top;
  }
  75%{
    background-position: left bottom;
  }
  100%{
    background-position: right bottom;
  }
}

这时我们就得到了一个动态的图片。

1675953975125.gif

接着,我们需要在这个块级元素中使用插入图片。

⚡注意,此时img的class需要设置成盒子的class,同时取消父级div的class属性。

如示例所示,我们就制作完成了一个渐变的头像框~

小结

这篇笔记记录了CSS盒模型有关的概念以及属性,然后通过设置盒模型相关的属性、结合CSS动画制作了一个简易的渐变头像框。希望对大家能有所帮助!谢谢观看!