并排盒子模型

 

  这道题是我面试一家大数据公司的一道面试题,这算是很简单的面试题了,但它主要还是考验你的思维发散能力,下面那些方法中我只想到了前面的3种方法,后面三种是面试官教我的,面试官人超级好,还叫我好好打扎实基础再来面试,不过意思就是,你目前能力还不够,回家看书吧(捂脸)。

 

一、inline-block 元素的方法

  block元素和inline-block元素的区别就是block元素可设置宽高,且换行,而inline-block元素也可设置宽高,但不换行。这个方法几乎没有任何缺点。

 1 <style type="text/css">
 2     div {
 3         display: inline-block;
 4     width: 100px;
 5     height: 100px;
 6     border: 1px solid black;
 7     margin: 10px;
 8     }
 9 </style>
10 
11 <body>
12     <div>1</div>
13     <div>2</div>
14     <div>3</div>
15 </body>

 

 二、position : absolute 的方法

  绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>,它不会占据空间;absolute的方法实现起来相对麻烦,而且会使元素脱离文档流。

 1 <style type="text/css">
 2     .div1 {
 3         width: 100px;
 4         height: 100px;
 5         border: 1px solid black;
 6         position: absolute;
 7         left: 20px;
 8         top: 20px;
 9     }
10     .div2 {
11     width: 100px;
12     height: 100px;
13     border: 1px solid black;
14     position: absolute;
15     left: 140px;
16         top: 20px;
17     }
18     .div3 {
19     width: 100px;
20     height: 100px;
21     border: 1px solid black;
22     position: absolute;
23         left: 260px;
24         top: 20px;
25     }
26 </style>
27 
28 <body>
29     <div class="div1">1</div>
30     <div class="div2">2</div>
31     <div class="div3">3</div>
32 </body>

 

三、position : relative 的方法

  相对定位元素的定位是相对其正常位置,可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。这个方法虽然不会脱离文档流,但实现起来比absolute的方法还麻烦,意见不要使用。

 1 <style type="text/css">
 2     div{
 3         width: 100px;
 4         height: 100px;
 5         border: 1px solid black;
 6     }
 7     .div1 {
 8         left: 20px;
 9         top: 20px;
10     }
11     .div2 {
12         position: relative;
13         left: 140px;
14         top: -82px;            
15     }
16     .div3 {
17       position: relative;
18       left: 260px;
19        top: -184px;
20     }
21 </style>
22 
23 <body>
24     <div class="div1">1</div>
25     <div class="div2">2</div>
26     <div class="div3">3</div>
27 </body>

 

四、float方法

  元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。浮动元素之后的元素将围绕它,之前的元素将不会受到影响。这个方法实现也相对简单,但会脱离文档流,也会使元素变成块级元素。

 1 <style type="text/css">
 2     div {
 3         width: 100px;
 4         height: 100px;
 5         border: 1px solid black;
 6         margin: 10px;
 7         float: left;
 8     }
 9 </style>
10 
11 <body>
12     <div>1</div>
13     <div>2</div>
14     <div>3</div>
15 </body>

 

五、table的方法

  table实现并排盒子模型的方法比较巧妙,但要注意border-collapse和border-space这两个属性的应用。

 1 <style type="text/css">
 2     /*table不要设置这个属性border-collapse: collapse; 否则实现不了*/
 3     table {
 4         border-spacing: 20px; /*边框空隙*/
 5     }
 6     td {
 7         border: 1px solid black;
 8         width: 100px;
 9         height: 100px;
10     }
11 </style>
12 
13 <body>
14     <table>
15         <tr>
16             <td>1</td>
17             <td>2</td>
18             <td>3</td>
19         </tr>
20     </table>
21 </body>    

六、flex弹性布局

  flex这个方法之前我是不知道的,上网百度了答案,flex感觉可以应用在很多地方,非常有用。

 1 <style type="text/css">
 2     .box {
 3         display: flex; 
 4         /*flex-direction决定主轴的方向(即项目的排列方向) ,值: row | row-reverse     
 5         | column | column-reverse;
 6     */
 7         flex-direction: row;
 8     /*
 9     flex-wrap属性定义,如果一条轴线排不下,如何换行。
10     (1)nowrap(默认):不换行。
11     (2)wrap:换行,第一行在上方。
12     (3)wrap-reverse:换行,第一行在下方。
13      */
14         flex-wrap: nowrap;
15      /*简写 
16         flex-flow:row nowrap;
17      */
18      /*justify-content属性定义了项目在主轴上的对齐方式。
19     值: flex-start | flex-end | center | space-between | space-around;
20     */
21         justify-content: flex-start;
22                 
23     }
24     .contain {
25         width: 100px;
26         height: 100px;
27         border: 1px solid black;
28         margin: 10px;
29     }
30 </style>
31 
32 <body>
33     <div class="box">
34     <div class="contain">1</div>
35     <div class="contain">2</div>
36     <div class="contain">3</div>
37     </div>
38 </body>

 

原文地址:https://www.cnblogs.com/daheiylx/p/8819563.html