“盒子的嵌套布局”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
提示:
 
(未显示同一用户的22个中间版本)
第1行: 第1行:
  
 
== 前情回顾 ==
 
== 前情回顾 ==
=== 上下布局===
+
[[盒子的基本布局]]
*盒子的居中,在现在网页设计技术中,我们总是通过设置盒子的水平方向的边距来实现。
 
*具体方案为:margin:值1  auto;
 
*[[文件:W3-35.png]]  [[文件:W3-36.png]]
 
*使用这种方案设置盒子居中时,页面必须要设置为xhtml标准的,否则将不起作用
 
=== 左右布局===
 
*[[文件:W2-39.png]]  [[文件:W2-40.png ‎]]
 
*盒子的height属性要设置为auto,否则会导致盒子的高度过分的死板,不能随浏览器的大小而自动调整。
 
 
==盒子的嵌套布局==
 
==盒子的嵌套布局==
 
*以上两种布局,在进行简单网页设计的时候还可以
 
*以上两种布局,在进行简单网页设计的时候还可以
第14行: 第7行:
 
*[[文件:W3-37.png]]
 
*[[文件:W3-37.png]]
 
===盒子的嵌套技术===
 
===盒子的嵌套技术===
*大布局需要有大思路,大设计需要有大布局!
+
*盒子嵌套:在大盒子中嵌套小盒子
*我们可以先在网页中用大一点的盒子进行框架的布局,然后再将每个盒子划分为更小的盒子,这就是盒子的嵌套。
+
*思想:体现的是模块化设计思想
*[[文件:W3-35.png|300px]]  [[文件:w3-38.png|300px]]  [[文件:w3-39.png|300px]]
+
*具体方法:我们可以先在网页中用大一点的盒子进行框架的布局,然后再将每个盒子划分为更小的盒子,这就是盒子的嵌套。
  
====第一步:用大盒子进行布局====
+
=== 嵌套元素竖直排列 ===
*[[文件:W3-35.png|300px]]
+
*子盒子的宽度等于父盒子的宽度、
*代码一:
+
*子盒子的高度之和等于父盒子
<nowiki><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
*当父盒子填充子盒子后,除非特殊需要,要把父盒子的高度值设为auto,以便自适应
 +
*[[文件:w3-47.png]]
 +
*源代码:
 +
    <nowiki><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
  <html xmlns="http://www.w3.org/1999/xhtml">
 
  <html xmlns="http://www.w3.org/1999/xhtml">
 
     <head>
 
     <head>
第28行: 第24行:
 
       <style type="text/css">
 
       <style type="text/css">
 
           *{margin:0;padding:0;}
 
           *{margin:0;padding:0;}
          .layer1{width:100%; height:100px;  background:blue;color:white;text-align:center;}
+
 
          .layer2{width:100%; height:200px; background:yellow;color:blue;text-align:center;text-align:center;}
 
          .layer3{width:100%; height:130px;  background:green;color:white;text-align:center;}         
 
      </style>
 
    </head>
 
    <body>
 
      <div class="layer1"><h1>顶部</h1></div>
 
      <div class="layer2">
 
      </div>   
 
      <div class="layer3">底部</div>
 
    </body>
 
</html></nowiki>
 
====第二步:大盒子中嵌套小盒子====
 
*[[文件:w3-38.png|300px]]
 
=====提示:=====
 
*在盒子的嵌套中,
 
**当盒子内部的元素需要竖直排列时,不需要增加额外的属性。
 
*当盒子内部的元素需要水平排列时,要给需要浮动的元素添加float属性;同时,要在盒子内部的最后,增加一个空白盒子,将其属性设置为clear:both。
 
*例子:下文中的代码2
 
*代码2:
 
  <nowiki> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
    <head>
 
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 
      <title>无标题文档</title>
 
      <style type="text/css">
 
          *{margin:0;padding:0;}
 
          .layer1{width:100%; height:100px;  background:blue;color:white;text-align:center;}
 
 
           .layer2{width:100%; height:200px;}
 
           .layer2{width:100%; height:200px;}
 
    
 
    
           .layer2-1{width:30%; height:200px; background:red;text-align:center;float:left;}   
+
           .layer2-1{width:100%; height:100px; background:red;text-align:center;}   
           .layer2-2{width:70%; height:200px; background:orange;text-align:center;float:left;}  
+
           .layer2-2{width:100%; height:100px; background:orange;text-align:center;}  
          .layer2-3{clear:both;} 
 
          .layer3{width:100%; height:130px;  background:green;color:white;text-align:center;} 
 
 
       </style>
 
       </style>
 
     </head>
 
     </head>
 
     <body>
 
     <body>
      <div class="layer1"><h1>顶部</h1></div>
+
 
 
       <div class="layer2">
 
       <div class="layer2">
             <div class="layer2-1"><h2>中间左部</h2></div>
+
             <div class="layer2-1"><h2>盒子2-1</h2></div>
             <div class="layer2-2"><h2>中间左部</h2></div>
+
             <div class="layer2-2"><h2>盒子2-2</h2></div>
            <div class="layer2-3"></div>
+
 
 
       </div>     
 
       </div>     
      <div class="layer3">底部</div>
+
 
 
     </body>
 
     </body>
 
  </html></nowiki>
 
  </html></nowiki>
  
====第三步:小盒子中嵌套更小的盒子。。。====
+
=== 嵌套元素水平排列 ===
*[[文件:w3-39.png|300px]]
+
要点:
*代码3:
+
 
   <nowiki><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
*子盒子的宽度之和小于父盒子、高度等于父盒子、
<html xmlns="http://www.w3.org/1999/xhtml">
+
*水平排列的每个盒子添加float:left属性
 +
*子盒子后面增加一个空白盒子,将其属性设置为clear:both,来清除浮动。
 +
 
 +
*[[文件:w3-46.png]]
 +
 
 +
====知识点:盒子的浮动与消除浮动====
 +
*所有块级元素的盒子默认都是上下排列的
 +
*使用CSS提供的浮动样式float能够将这些盒子左右排列。
 +
*float:none | left | right;
 +
none 不浮动(默认)
 +
left  向左浮动,其他后续元素填补在右边
 +
right 向右浮动,其他后续元素填补在左边
 +
*问题:如何在排版中实现某个盒子浮动,但是它后面的标准流中的盒子不受影响?
 +
使用clear属性清除浮动的影响
 +
*clear:none | both | left | right;
 +
none  不清除(默认)
 +
both  清除向左向右的浮动
 +
left   清除左浮动---左侧不再围绕浮动框排列
 +
right  清除右浮动---右侧不再围绕浮动框排列
 +
 
 +
*源代码:
 +
 
 +
<nowiki><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 +
  <html xmlns="http://www.w3.org/1999/xhtml">
 
     <head>
 
     <head>
 
       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 
       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
第85行: 第75行:
 
       <style type="text/css">
 
       <style type="text/css">
 
           *{margin:0;padding:0;}
 
           *{margin:0;padding:0;}
          .layer1{width:100%; height:100px;  background:blue;color:white;text-align:center;}
+
 
           .layer2{width:100%; height:200px;}
+
           .layer2{width:100%;}
 
    
 
    
           .layer2-1{width:30%; height:200px; background:red;text-align:center;float:left;}   
+
           .layer2-1{width:40%; height:200px; background:red;text-align:center;float:left;}   
           .layer2-2{width:70%; height:200px; float:left;}
+
           .layer2-2{width:60%; height:200px; background:orange;text-align:center;float:left;}  
          .layer2-2-1{width:100%;height:100px;background:lightgreen;}
+
           .clear{clear:both;}   
          .layer2-2-2{width:100%;height:100px;background:lightblue;}
+
 
           .layer2-3{clear:both;}   
 
          .layer3{width:100%; height:130px;  background:green;color:white;text-align:center;} 
 
 
       </style>
 
       </style>
 
     </head>
 
     </head>
 
     <body>
 
     <body>
      <div class="layer1"><h1>layer1</h1></div>
+
 
 
       <div class="layer2">
 
       <div class="layer2">
             <div class="layer2-1"><h2>layer2-1</h2></div>
+
             <div class="layer2-1"><h2>盒子2-1</h2></div>
             <div class="layer2-2">
+
             <div class="layer2-2"><h2>盒子2-2</h2></div>
                <div class="layer2-2-1"><h2>layer2-2-1</h2></div>
+
             <div class="clear"></div>
                <div class="layer2-2-2"><h2>layer2-2-2</h2></div>
 
            </div>
 
             <div class="layer2-3"></div>
 
 
       </div>     
 
       </div>     
      <div class="layer3"><h2>layer3</h2></div>
+
 
 
     </body>
 
     </body>
 
  </html></nowiki>
 
  </html></nowiki>
*思考:以上代码中的 .layer2-2-2{width:100%;}是什么意思?是将layer2-2-2的宽度设置为谁的宽度的100%?是指整个页面的100%吗?
 
 
===盒子内部元素的水平排列===
 
*在盒子的嵌套中,
 
*当盒子内部的元素需要水平排列时,要给需要浮动的元素添加float属性。
 
*同时,要在盒子内部的最后,增加一个空白盒子,将其属性设置为clear:both。
 
*例子:上文中的代码2
 
 
 
 
返回 [[网页设计与开发]]
 

2019年12月25日 (三) 01:11的最新版本

前情回顾

盒子的基本布局

盒子的嵌套布局

  • 以上两种布局,在进行简单网页设计的时候还可以
  • 但是在进行比较复杂的布局的时候往往力不从心:
  • W3-37.png

盒子的嵌套技术

  • 盒子嵌套:在大盒子中嵌套小盒子
  • 思想:体现的是模块化设计思想
  • 具体方法:我们可以先在网页中用大一点的盒子进行框架的布局,然后再将每个盒子划分为更小的盒子,这就是盒子的嵌套。

嵌套元素竖直排列

  • 子盒子的宽度等于父盒子的宽度、
  • 子盒子的高度之和等于父盒子
  • 当父盒子填充子盒子后,除非特殊需要,要把父盒子的高度值设为auto,以便自适应
  • W3-47.png
  • 源代码:
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
       <title>无标题文档</title>
       <style type="text/css">
          *{margin:0;padding:0;}

           .layer2{width:100%; height:200px;}
  
           .layer2-1{width:100%; height:100px; background:red;text-align:center;}  
           .layer2-2{width:100%; height:100px; background:orange;text-align:center;} 
       </style>
    </head>
    <body>

       <div class="layer2">
            <div class="layer2-1"><h2>盒子2-1</h2></div>
            <div class="layer2-2"><h2>盒子2-2</h2></div>

       </div>    

    </body>
 </html>

嵌套元素水平排列

要点:

  • 子盒子的宽度之和小于父盒子、高度等于父盒子、
  • 水平排列的每个盒子添加float:left属性
  • 子盒子后面增加一个空白盒子,将其属性设置为clear:both,来清除浮动。
  • W3-46.png

知识点:盒子的浮动与消除浮动

  • 所有块级元素的盒子默认都是上下排列的
  • 使用CSS提供的浮动样式float能够将这些盒子左右排列。
  • float:none | left | right;
none 不浮动(默认)
left  向左浮动,其他后续元素填补在右边
right 向右浮动,其他后续元素填补在左边
  • 问题:如何在排版中实现某个盒子浮动,但是它后面的标准流中的盒子不受影响?
使用clear属性清除浮动的影响
  • clear:none | both | left | right;
none  不清除(默认)
both  清除向左向右的浮动
left   清除左浮动---左侧不再围绕浮动框排列
right  清除右浮动---右侧不再围绕浮动框排列
  • 源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
       <title>无标题文档</title>
       <style type="text/css">
          *{margin:0;padding:0;}

           .layer2{width:100%;}
  
           .layer2-1{width:40%; height:200px; background:red;text-align:center;float:left;}  
           .layer2-2{width:60%; height:200px; background:orange;text-align:center;float:left;} 
           .clear{clear:both;}   

       </style>
    </head>
    <body>

       <div class="layer2">
            <div class="layer2-1"><h2>盒子2-1</h2></div>
            <div class="layer2-2"><h2>盒子2-2</h2></div>
            <div class="clear"></div>
       </div>    

    </body>
 </html>