• CSS盒子模型的详细解析


    03-盒子模型

    作用:布局网页,摆放盒子和内容。

    盒子模型-组成

    • 内容区域 – width & height

    • 内边距 – padding(出现在内容与盒子边缘之间)

    • 边框线 – border

    • 外边距 – margin(出现在盒子外面)

    1. div {
    2.   margin: 50px;
    3.   border: 5px solid brown;
    4.   padding: 20px;
    5.   width: 200px;
    6.   height: 200px;
    7.   background-color: pink;
    8. }

    边框线

    四个方向

    属性名:border(bd)

    属性值:边框线粗细 线条样式 颜色(不区分顺序)

    1. div {
    2.   border: 5px solid brown;
    3.   width: 200px;
    4.   height: 200px;
    5.   background-color: pink;
    6. }
    单方向边框线

    属性名:border-方位名词(bd+方位名词首字母,例如,bdl)

    属性值:边框线粗细 线条样式 颜色(不区分顺序)

    1. div {
    2.   border-top: 2px solid red;
    3.   border-right: 3px dashed green;
    4.   border-bottom: 4px dotted blue;
    5.   border-left: 5px solid orange;
    6.   width: 200px;
    7.   height: 200px;
    8.   background-color: pink;
    9. }

    内边距

    作用:设置 内容 与 盒子边缘 之间的距离。

    • 属性名:padding / padding-方位名词

    1. div {
    2.  /* 四个方向 内边距相同 */
    3.   padding: 30px;
    4.   /* 单独设置一个方向内边距 */
    5.   padding-top: 10px;
    6.   padding-right: 20px;
    7.   padding-bottom: 40px;
    8.   padding-left: 80px;
    9.   width: 200px;
    10.   height: 200px;
    11.   background-color: pink;
    12. }

    提示:添加 padding 会撑大盒子。

    • padding 多值写法

    技巧:从开始顺时针赋值,当前方向没有数值则与对面取值相同

    尺寸计算

    默认情况:盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸

    结论:给盒子加 border / padding 会撑大盒子

    解决:

    • 手动做减法,减掉 border / padding 的尺寸

    • 內减模式:box-sizing: border-box

    外边距

    作用:拉开两个盒子之间的距离

    属性名:margin

    提示:与 padding 属性值写法、含义相同

    版心居中

    左右 margin 值 为 auto(盒子要有宽度)

    1. div {
    2.   margin: 0 auto;
    3.   width: 1000px;
    4.   height: 200px;
    5.   background-color: pink;
    6. }

    清除默认样式

    清除标签默认的样式,比如:默认的内外边距。

    /* 清除默认内外边距 */
    
    1. * {
    2.   margin: 0;
    3.   padding: 0;
    4.  box-sizing: border-box;
    5. }
    6. /* 清除列表项目符号 */
    7. li {
    8.   list-style: none;
    9. }

    元素溢出

    作用:控制溢出元素的内容的显示方式。

    属性名:overflow

    外边距问题

    合并现象

    场景:垂直排列的兄弟元素,上下 margin合并

    现象:取两个 margin 中的较大值生效

    1. .one {
    2.   margin-bottom: 50px;
    3. }
    4. .two {
    5.   margin-top: 20px;
    6. }
    外边距塌陷

    场景:父子级的标签,子级的添加 上外边距 会产生塌陷问题

    现象:导致父级一起向下移动

    1. .son {
    2.   margin-top: 50px;
    3.   width: 100px;
    4.   height: 100px;
    5.   background-color: orange;
    6. }

    解决方法:

    • 取消子级margin,父级设置padding

    • 父级设置 overflow: hidden

    • 父级设置 border-top

    行内元素 – 内外边距问题

    场景:行内元素添加 margin 和 padding,无法改变元素垂直位置

    解决方法:给行内元素添加 line-height 可以改变垂直位置

    1. span {
    2.   /* margin 和 padding 属性,无法改变垂直位置 */
    3.   margin: 50px;
    4.   padding: 20px;
    5.   /* 行高可以改变垂直位置 */
    6.   line-height: 100px;
    7. }

    圆角

    作用:设置元素的外边框为圆角。

    属性名:border-radius

    属性值:数字+px / 百分比

    提示:属性值是圆角半径

    • 多值写法

    技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。

    • 正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%

    1. img {
    2.   width: 200px;
    3.   height: 200px;
    4.  
    5.   border-radius: 100px;
    6.   border-radius: 50%;
    7. }
    • 胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半

    1. div {
    2.   width: 200px;
    3.   height: 80px;
    4.   background-color: orange;
    5.   border-radius: 40px;
    6. }

    盒子阴影(拓展)

    作用:给元素设置阴影效果

    属性名:box-shadow

    属性值:X 轴偏移量 Y 轴偏移量 模糊半径 扩散半径 颜色 内外阴影

    注意:

    • X 轴偏移量 和 Y 轴偏移量 必须书写

    • 默认是外阴影,内阴影需要添加 inset

    1. div {
    2.   width: 200px;
    3.   height: 80px;
    4.   background-color: orange;
    5.   box-shadow: 2px 5px 10px 0 rgba(0, 0, 0, 0.5) inset;
    6. }

    04-综合案例-产品卡片

    CSS 书写顺序:

    1. 盒子模型属性

    2. 文字样式

    3. 圆角、阴影等修饰属性

    HTML标签

    1. <div class="product">
    2.  <img src="./images/liveSDK.svg" alt="">
    3.  <h4>抖音直播SDKh4>
    4.  <p>包含抖音直播看播功能p>
    5. div>

    CSS样式

    1. <style>
    2. * {
    3.    margin: 0;
    4.    padding: 0;
    5.    box-sizing: border-box;
    6. }
    7.  body {
    8.    background-color: #f1f1f1;
    9. }
    10.  .product {
    11.    margin: 50px auto;
    12.    padding-top: 40px;
    13.    width: 270px;
    14.    height: 253px;
    15.    background-color: #fff;
    16.    text-align: center;
    17.    border-radius: 10px;
    18. }
    19.  .product h4 {
    20.    margin-top: 20px;
    21.    margin-bottom: 12px;
    22.    font-size: 18px;
    23.    color: #333;
    24.    font-weight: 400;
    25. }
    26.  .product p {
    27.    font-size: 12px;
    28.    color: #555;
    29. }
    30. style>

    05-综合案例二 – 新闻列表

    整体布局

    1. <style>
    2. * {
    3.  margin: 0;
    4.  padding: 0;
    5.  box-sizing: border-box;
    6. }
    7. li {
    8.  list-style: none;
    9. }
    10. a {
    11.  text-decoration: none;
    12. }
    13. .news {
    14.  margin: 100px auto;
    15.  width: 360px;
    16.  height: 200px;
    17.  /* background-color: pink; */
    18. }
    19. style>
    20. <div class="news">div>

    标题区域

    1. <style>
    2. .news .hd {
    3.  height: 34px;
    4.  background-color: #eee;
    5.  border: 1px solid #dbdee1;
    6.  border-left: 0;
    7. }
    8. .news .hd a {
    9.  /* -1 盒子向上移动 */
    10.  margin-top: -1px;
    11.  display: block;
    12.  border-top: 3px solid #ff8400;
    13.  border-right: 1px solid #dbdee1;
    14.  width: 48px;
    15.  height: 34px;
    16.  background-color: #fff;
    17.  text-align: center;
    18.  line-height: 32px;
    19.  font-size: 14px;
    20.  color: #333;
    21. }
    22. style>
    23. <div class="hd"><a href="#">新闻a>div>

    内容区域

    1. <style>
    2. .news .bd {
    3.  padding: 5px;
    4. }
    5. .news .bd li {
    6.  padding-left: 15px;
    7.  background-image: url(./images/square.png);
    8.  background-repeat: no-repeat;
    9.  background-position: 0 center;
    10. }
    11. .news .bd li a {
    12.  padding-left: 20px;
    13.  background: url(./images/img.gif) no-repeat 0 center;
    14.  font-size: 12px;
    15.  color: #666;
    16.  line-height: 24px;
    17. }
    18. .news .bd li a:hover {
    19.  color: #ff8400;
    20. }
    21. style>
    22. <div class="bd">
    23.  <ul>
    24.    <li><a href="#">点赞“新农人” 温暖的伸手a>li>
    25.    <li><a href="#">在希望的田野上...a>li>
    26.    <li><a href="#">“中国天眼”又有新发现 已在《自然》杂志发表a>li>
    27.    <li><a href="#">急!这个领域,缺人!月薪4万元还不好招!啥情况?a>li>
    28.    <li><a href="#">G9“带货”背后:亏损面持续扩大,竞争环境激烈a>li>
    29.    <li><a href="#">多地力推二手房“带押过户”,有什么好处?a>li>
    30.  ul>
    31. div>
  • 相关阅读:
    Python数据分析将数组的多行元素首尾相连为一行numpy.ravel()
    IPv4内网与公IPv4地址范围
    Pandas数据分析2-数据分组、Apply函数、合并
    Godot引擎小白入门指南
    数据结构·栈与队列介绍与实现
    Redis篇---第二篇
    5. Python 数据类型之整数
    【Python基础篇009】那就浅浅回顾一下生成器吧
    7 PostgreSQL绿色版
    从4开始,在后端系统中增加用户注册和登录功能
  • 原文地址:https://blog.csdn.net/qq_69748833/article/details/133913517