[前端] HTML中div嵌套div的margin不起作用的解决方法

2079 0
黑夜隐士 2022-10-19 15:57:24 | 显示全部楼层 |阅读模式
下面介绍一下div嵌套div时margin不起作用的解决方案。
顺便科普下margin的定义和用法。


div嵌套的HTML代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Document</title>
  7.     <style type="text/css">
  8.         *{
  9.             margin: 0;
  10.             padding: 0;
  11.         }
  12.         body{
  13.             width: 100%;
  14.             height: 100%;
  15.             background-color: dodgerblue;
  16.         }
  17.         .box{
  18.             width: 300px;
  19.             height: 300px;
  20.             margin: 30px;
  21.             background-color: gray;
  22.         }
  23.         .box .child{
  24.             width: 200px;
  25.             height: 200px;
  26.             margin: 50px;
  27.             background-color:darkturquoise;
  28.         }
  29.     </style>
  30. </head>
  31. <body>
  32.     <div class="box">
  33.         <div class="child">
  34.         </div>
  35.     </div>
  36. </body>
  37. </html>
复制代码
实际效果:


这其实不是我们想要的效果,先来说下为什么会出现这个问题:
有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top或者margin-bottom的值会“转移”给外层div。
解决该问题我们需要先了解ie特有的一个属性haslayout。


我们要实现的效果是这样的:


最后我们来说一下解决方法:
1、让父元素生成一个block formating context(块级格式化上下文,可自行百度了解),以下属性可以实现
float: left/right
position: absolute
display: inline-block
overflow: hidden/auto
2、给父元素添加border或者padding
以方法一的overflow:hidden为例:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Document</title>
  7.     <style type="text/css">
  8.         *{
  9.             margin: 0;
  10.             padding: 0;
  11.         }
  12.         body{
  13.             width: 100%;
  14.             height: 100%;
  15.             background-color: dodgerblue;
  16.         }
  17.         .box{
  18.             width: 300px;
  19.             height: 300px;
  20.             margin: 30px;
  21.             background-color: gray;
  22.             overflow: hidden;
  23.         }
  24.         .box .child{
  25.             width: 200px;
  26.             height: 200px;
  27.             margin: 50px;
  28.             background-color:darkturquoise;
  29.         }
  30.     </style>
  31. </head>
  32. <body>
  33.     <div class="box">
  34.         <div class="child">
  35.         </div>
  36.     </div>
  37. </body>
  38. </html>
复制代码
最终效果:


到此这篇关于HTML中div嵌套div的margin不起作用的解决方法的文章就介绍到这了,更多相关html时div嵌套div的margin不起作用内容请搜索中国红客联盟以前的文章或继续浏览下面的相关文章,希望大家以后多多支持中国红客联盟!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行