margin兼容之margin-top的传递问题(面试题)

问题:margin的兼容margin-top的传递

描述:大盒子里面嵌套小盒子,给小盒子添加margin-top值,不但没有实现和大盒子之间的间距,反而传递到大盒子上,导致整体下移

解决兼容性问题:

  1. overflow:hidden解决margin-top的传递问题(此处不是溢出隐藏)
  2. padding-top:1px 这种方法会影响最后实际的高度,需要再高度height的基础上减掉,才不会影响最后实际的高度
  3. border-top:1px 这种方法会影响最后实际的高度,需要再高度height的基础上减掉,才不会影响最后实际的高度
  4. 给子元素的margin-top值改为给父元素加padding-top这样就避免了使用margin-top值导致的传递问题(转移了我们的目标对象)
1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8">
 5     <title></title>
 6     <style type="text/css">
 7     *{
 8     margin: 0;
 9     padding: 0;
10     }
11 /*     .wrap{
12     width: 300px;
13     height: 300px;
14     background-color:#f90;
15     } */
16     .inner{
17     margin-top: 20px;
18     width: 200px;
19     height: 200px;
20     background-color: aqua;
21     }
22 /*     ===========================无情分割线======================= */
23     /*解决方法1*/
24 /*     .wrap{
25     width: 300px;
26     height: 300px;
27     background-color:#f90;
28     overflow: hidden;
29     } */
30     /*解决方法2*/
31 /*     .wrap{
32     width: 300px;
33     height: 299px;
34     background-color:#f90;
35     padding-top: 1px;
36     } */
37     /* 解决方法3 */
38     .wrap{
39     width: 300px;
40     height: 299px;
41     background-color:#f90;
42     border: 0;
43     border-top-width: 1px;
44     border-style: solid;
45     border-color: transparent;
46     }
47     /* 解决方法4 */
48 /*     .wrap{
49     width: 300px;
50     height: 300px;
51     background-color:#f90;
52     padding-top: 20px;
53     }
54     .inner{
55     /* margin-top: 20px; */
56     width: 200px;
57     height: 200px;
58     background-color: aqua;
59     } */
60     </style>
61 </head>
62 <body>
63     <div class="wrap">
64     <div class="inner"></div>
65     </div>
66 </body>
67 </html>
(0)

相关推荐