CSS案例-5.margin产品模块练习

效果1

相关数据

整体长:298px,高:415px

效果2

知识点

外边距margin

块级盒子水平居中

条件:

  • 必须有宽度
  • 左右外边距设为auto

三种写法:

  1. margin-left:auto;margin-right:auto;
  2. margin:auto;
  3. margin:0 auto;

清除元素的默认内外边距

css 复制代码
* {
  margin:0;
  padding:0;
}

外边距合并

相邻块元素垂直外边距合并

取margin-top和margin-bottom两个值中较大的值,称外边距塌陷。

嵌套块元素垂直外边距的合并(塌陷)

  • 对于两个嵌套关系的块元素,如果父元素没有上内边距及边框
  • 父元素的上外边距会与子元素的上外边距发生合并
  • 合并后的外边距为两者中的较大者

解决方案

  1. 可以为父元素定义上边框 border-top:1px solid transparent;
  2. 可以为父元素定义上内边距 padding-top:1px;
  3. 可以为父元素添加overflow:hidden

盒子模型布局稳定性

width>padding>margin

效果1源码

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>产品模块练习</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      body {
        background-color: #f5f5f5;
      }
      a {
        text-decoration: none;
        color: #333;
      }
      .box {
        width: 298px;
        height: 415px;
        background-color: #fff;
        margin: 50px auto;
      }
      img {
        /* 宽度和父级元素一样宽 */
        width: 100%;
      }
      .review {
        height: 80px;
        font-size: 14px;
        /* 没有width,所以不会撑开盒子 */
        padding: 0 28px;
        margin-top: 30px;
      }
      .praise {
        font-size: 12px;
        color: #a6a6a6;
        margin-top: 20px;
        padding: 0 28px;
      }
      .info {
        margin-top: 8px;
        padding: 0 28px;
        font-size: 12px;
      }
      .info h4 {
        display: inline;
        font-weight: 400;
      }
      .price {
        display: inline-block;
        margin-left: 30px;
        padding-left: 10px;
        border-left: 1px solid #a6a6a6;
        color: #ff6700;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <img src="images/img.jpg">
      <p class="review">快递牛,整体很不错啦啦啦啦啦,很棒很给力啦啦啦啦</p>
      <p class="praise">来自于 117384532 的评价</p>
      <div class="info">
        <h4><a href="#">Redmi AirDots真无线蓝...</a></h4>
        <span class="price">99.9元</span>
      </div>
    </div>
  </body>
</html>

效果2源码

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>margin模块列表练习</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .module {
            width: 300px;
            height: 170px;
            margin: 50px auto;
            border: 1px solid #d7d7d7;
        }
        .module h3 {
            height: 32px;
            font-size: 14px;
            font-weight: 400;
            border-bottom: 1px dotted #d7d7d7;
            padding-left: 15px;
            line-height: 32px;
        }
        .bottom {
            padding-left: 20px;
            margin-top: 10px;
            font-size: 12px;
        }
        .bottom ul li {
            height: 23px;
            list-style: none;
        }
        .bottom ul li a {
            text-decoration: none;
            color: #333;
        }
        .bottom ul li a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="module">
        <h3>品优购快报</h3>
        <div class="bottom">
            <ul>
                <li><a href="#">【特惠】爆款耳机5折秒!</a></li>
                <li><a href="#">【特惠】母亲节,健康好礼低至5折!</a></li>
                <li><a href="#">【特惠】爆款耳机5折秒!</a></li>
                <li><a href="#">【特惠】9.9一杯奶茶!</a></li>
                <li><a href="#">【特惠】智能空调立省1000!</a></li>
            </ul>
        </div>
    </div>
</body>
</html>

用到的图片

相关推荐
咖啡の猫1 小时前
Shell脚本-for循环应用案例
前端·chrome
百万蹄蹄向前冲4 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5814 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路4 小时前
GeoTools 读取影像元数据
前端
ssshooter5 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
Jerry6 小时前
Jetpack Compose 中的状态
前端
dae bal6 小时前
关于RSA和AES加密
前端·vue.js
柳杉6 小时前
使用three.js搭建3d隧道监测-2
前端·javascript·数据可视化
lynn8570_blog7 小时前
低端设备加载webp ANR
前端·算法
LKAI.7 小时前
传统方式部署(RuoYi-Cloud)微服务
java·linux·前端·后端·微服务·node.js·ruoyi