웹 프론트엔드 HTML 튜토리얼 彻底弄懂CSS盒子模式(DIV布局)_html/css_WEB-ITnose

彻底弄懂CSS盒子模式(DIV布局)_html/css_WEB-ITnose

Jun 24, 2016 pm 12:28 PM
css div 레이아웃

前言  
 
如果你想尝试一下不用表格来排版网页,而是用CSS来排版你的网页,也就是常听的用DIV来编排你的网页结构,又或者说你想学习网页标准设计,再或者说你的上司要你改变传统的表格排版方式,提高企业竞争力,那么你一定要接触到的一个知识点就是CSS的盒子模式,这就是DIV排版的核心所在,传统的表格排版是通过大小不一的表格和表格嵌套来定位排版网页内容,改用CSS排版后,就是通过由CSS定义的大小不一的盒子和盒子嵌套来编排网页。因为用这种方式排版的网页代码简洁,更新方便,能兼容更多的浏览器,比如PDA设备也能正常浏览,所以放弃自己之前钟爱的表格排版也是值得的,更重要的是CSS排版网页的优势远远不只这些,本人在这里就不多说,自己可以去查找相关信息。  
 
理解CSS盒子模式  
 
什么是CSS的盒子模式呢?为什么叫它是盒子?先说说我们在网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。  
   
 
这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以叫它盒子模式。那么内容就是盒子里装的东西;而填充就是怕盒子里装的东西(贵重的)损坏而添加的泡沫或者其它抗震的辅料;边框就是盒子本身了;至于边界则说明盒子摆放的时候的不能全部堆在一起,要留一定空隙保持通风,同时也为了方便取出嘛。在网页设计上,内容常指文字、图片等元素,但是也可以是小盒子(DIV嵌套),与现实生活中盒子不同的是,现实生活中的东西一般不能大于盒子,否则盒子会被撑坏的,而CSS盒子具有弹性,里面的东西大过盒子本身最多把它撑大,但它不会损坏的。填充只有宽度属性,可以理解为生活中盒子里的抗震辅料厚度,而边框有大小和颜色之分,我们又可以理解为生活中所见盒子的厚度以及这个盒子是用什么颜色材料做成的,边界就是该盒子与其它东西要保留多大距离。  
在现实生活中,假设我们在一个广场上,把不同大小和颜色的盒子,以一定的间隙和顺序摆放好,最后从广场上空往下看,看到的图形和结构就类似我们要做的网页版面设计了,如下图。  
 
现在对CSS盒子模式理解多少了,如果还不够透彻,继续往下看,我会在后面举例,并延用盒子的概念来解释它。  
 
转变我们的思路  
 
传统的前台网页设计是这样进行的:根据要求,先考虑好主色调,要用什么类型的图片,用什么字体、颜色等等,然后再用Photoshop这类软件自由的画出来,最后再切成小图,再不自由的通过设计HTML生成页面,改用CSS排版后,我们要转变这个思想,此时我们主要考虑的是页面内容的语义和结构,因为一个强CSS控制的网页,等做好网页后,你还可以轻松的调你想要的网页风格,况且CSS排版的另外一个目的是让代码易读,区块分明,强化代码重用,所以结构很重要。如果你想说我的网页设计的很复杂,到后来能不能实现那样的效果?我要告诉你的是,如果用CSS实现不了的效果,你更不用想用表格去实现,因为CSS的控制能力实在是太强大了,顺便说一点的是用CSS排版有一个很实用的好处是,如果你是接单做网站的,如果你用了CSS排版网页,做到后来客户有什么不满意,特别是色调的话,那么改起来就相当容易,甚至你还可以定制几种风格的CSS文件供客户选择,又或者写一个程序实现动态调用,让网站具有动态改变风格的功能。  
 
实现结构与表现分离  
 
在真正开始布局实践之前,再来认识一件事??结构和表现相分离,这也用CSS布局的特色所在,结构与表现分离后,代码才简洁,更新才方便,这不正是我们学习CSS的目的所在吗?举个例来说P是结构化标签,有P标签的地方表示这是一个段落区块,margin是表现属性,我要让一个段落右缩进2字高,有些人会想到加空格,然后不断地加空格,但现在可以给P标签指定一个CSS样式:P {text-indent: 2em;}或者P{margin:0em 0em 0em 2em;},这样结果body内容部分就如下,这没有外加任何表现控制的标签:  
 
 

加进天涯社区有一段时间了,但一直没有时间写点东西,今天写了一篇有关CSS布局的文章,并力求通过一种通俗的语言来说明知识点,还配以实例和图片,相信对初学CSS布局的人会带来一定的帮助。


 
如果还要对这个段落加上字体、字号、背景、行距等修饰,直接把对应的CSS加进P样式里就行了,不用像这样来写了:  
 

<p><font color="#FF0000" face="宋体">段落内容</font></p>
로그인 후 복사

这个是结构和表现混合一起写的,如果很多段落有统一结构和表现的话,再这样累加写下去代码就繁冗了。
再直接列一段代码加深理解结构和表现相分离:

用CSS排版

<style type="text/css">  
 <!--  
 #photoList img{  
 height:80;  
 width:100;  
 margin:5px auto;  
 }  
 -->  
 </style>  
  
 <p id="photoList">  
 <img src="01.jpg" />  
 <img src="02.jpg" />  
 <img src="03.jpg" />  
 <img src="04.jpg" />  
 <img src="05.jpg" />  
 </p>
로그인 후 복사


不用CSS排版

<img src="01.jpg" width="100" height="80" align="center" />  
 <img src="02.jpg" width="100" height="80" align="center" />  
 <img src="03.jpg" width="100" height="80" align="center" />  
 <img src="04.jpg" width="100" height="80" align="center" />  
 <img src="05。jpg" width="100" height="80" align="center" />
로그인 후 복사


第一种方法是结构表现相分离,内容部分代码简单吧,如果还有更多的图片列表的话,那么第一种CSS布局方法就更有优势,我打个比喻你好理解:我在BODY向你介绍一个人,我只对你说他是一个人,至于他是一个什么样的人,有多高,是男是女,你去CSS那里查下就知道。这样我在BODY的工作就简单了,也就是说BODY的代码就简单了。如果BODY有一个团队人在那里,我在CSS记录一项就行了,这有点像Flash软件里的元件和实例的概念,不同的实例共享同一个元件,这样动画文件就不大了,把这种想法移到CSS网页设计中,就是代码不复杂,网页文件体积小能较快被客户端下载了。


演示地址:http://www.hsptc.com/css1.html

用CSS排版减小网页文件体积

像上面我做的那个版面,一共分为四个区块,每个区块的框架是一样的,这个框架就是用CSS写出来的,样式写一次,就可以被无数次调用了(用class调用,而不是ID),只要改变其中的文字内容就可以生成风格统一的众多板块了,它的样式和结构代码是(请不要直接复制生成网页,把下面代码分别粘贴到网页中它们应在的位置):

<style type="text/css">   
 <!--   
 body {   
 font-size: 12px;   
 margin: 0px auto;   
 height: auto;   
 width: 805px;   
 }   
 .mainBox {   
 border: 1px dashed #0099CC;   
 margin: 3px;   
 padding: 0px;   
 float: left;   
 height: 300px;   
 width: 192px;   
 }   
 .mainBox span {   
 float: left;   
 height: 20px;   
 width: 179px;   
 color: #FFFFFF;   
 padding: 6px 3px 3px 10px;   
 background-color: #0099CC;   
 font-size: 16px;   
 }   
 .mainBox p {   
 line-height: 1.5em;   
 text-indent: 2em;   
 margin: 35px 5px 5px 5px;   
 }   
 -->   
 </style>   
   
 <p class="mainBox">   
 <span>前言</span>   
 <p>正文内容</p>   
 </p>   
   
 <p class="mainBox">   
 <span>CSS盒子模式</span>   
 <p>正文内容 </p>   
 </p>   
   
 <p class="mainBox">   
 <span>转变思想</span>   
 <p>正文内容 </p>   
 </p>   
   
 <p class="mainBox">   
 <span>熟悉步骤</span>   
 <p>正文内容 </p>   
 </p>
로그인 후 복사

熟悉工作流程

在真正开始工作之前我们脑海中要形成这样一种思想:表格是什么我不知道,在内容部分我不能让它再出现表现控制标签,如:font、color、height、width、align等标签不能再出现,(简单说工作前先洗脑,忘掉以前的一惯做法,去接受和使用全新的方法),我不是单纯的用DIV来实现排版的嵌套,DIV是块级元素,而像P也是块级元素,例如要分出几个文字内容块,不是一定要用DIV才叫DIV排版,不是“<p>文字块一</p><p>文字块二</p><p>文字块三</p>”,而用“<p>文字块一</p><p>文字块二</p><p>文字块三</p>”更合适。

用DIV+CSS设计思路是这样的: 1.用p来定义语义结构;2.然后用CSS来美化网页,如加入背景、线条边框、对齐属性等;3.最后在这个CSS定义的盒子内加上内容,如文字、图片等(没有表现属性的标签),下面大家跟我一起来做一个实例加深对这个步骤的理解。先看结果图:




演示地址:http://www.hsptc.com/css2.html
CSS排版结果图
1.用p来定义语义结构
现在我要给大家演示的是一个典型的版面分栏结构,即页头、导航栏、内容、版权(如下图),


典型版面分栏结构

其结构代码如下:

<p id="header"></p>  
 <p id="nav"></p>  
 <p id="content"></p>  
 <p id="footer"></p>
로그인 후 복사


上面我们定义了四个盒子,按照我们想要的结果是,我们要让这些盒子等宽,并从下到下整齐排列,然后在整个页面中居中对齐,为了方便控制,我们再把这四个盒子装进一个更大的盒子,这样代码就变成:

<p id=”mainBox”>  
 <p id="header"></p>  
 <p id="nav"></p>  
 <p id="content"></p>  
 <p id="footer"></p>  
 </p>
로그인 후 복사

最外边的大盒子(装着小盒子的大盒子)我们要让它在页面居中,同时加上边框,那么它的样式是:

#mainBox {  
 margin: 0px auto;  
 height: auto;  
 width: 760px;  
 border: 1px solid #006633;  
 }
로그인 후 복사


页头为了简单起见,我们这里只要让它整个区块应用一幅背景图就行了,并在其下边界设计定一定间隙,目的是让页头的图像不要和下面要做的导航栏连在一起,这样也是为了美观。其样式代码为:

#header {  
 height: 100px;  
 width: 760px;  
 background-image: url(headPic.gif);  
 background-repeat: no-repeat;  
 margin:0px 0px 3px 0px;  
 }
로그인 후 복사



导航栏我做成像一个个小按钮,鼠标移上去会改变按钮背景色和字体色,那么这些小小的按钮我们又可以理解为小盒子,如此一来这是一个盒子嵌套问题了,样式代码如下:

#nav {  
 height: 25px;  
 width: 760px;  
 font-size: 14px;  
 list-style-type: none;  
 }  
 #nav li {  
 float:left;  
 }  
 #nav li a{  
 color:#000000;  
 text-decoration:none;  
 padding-top:4px;  
 display:block;  
 width:97px;  
 height:22px;  
 text-align:center;  
 background-color: #009966;  
 margin-left:2px;  
 }  
 #nav li a:hover{  
 background-color:#006633;  
 color:#FFFFFF;  
 }
로그인 후 복사

内容部分主要放入文章内容,有标题和段落,标题加粗,为了规范化,我用H标签,段落要自动实现首行缩进2个字,同时所有内容看起来要和外层大盒子边框有一定距离,这里用填充。内容区块样式代码为:

#content {  
 height:auto;  
 width: 740px;  
 line-height: 1.5em;  
 padding: 10px;  
 }  
 #content p {  
 text-indent: 2em;  
 }  
 #content h3 {  
 font-size: 16px;  
 margin: 10px;
로그인 후 복사

版权栏,给它加个背景,与页头相映,里面文字要自动居中对齐,有多行内容时,行间距合适,这里的链接样式也可以单独指定,我这里就不做了。其样式代码如下:

#footer {  
 height: 50px;  
 width: 740px;  
 line-height: 2em;  
 text-align: center;  
 background-color: #009966;  
 padding: 10px;  
 }  
 最后回到样式开头大家会看到这样的样式代码:  
 * {  
 margin: 0px;  
 padding: 0px;  
 }
로그인 후 복사


这是用了通配符初始化各标签边界和填充,(因为有部分标签默认会有一定的边界,如Form标签)那么接下来就不用对每个标签再加以这样的控制,这可以在一定程度上简化代码。最终完成全部样式代码是这样的:

<style type="text/css">  
 <!--  
 * {  
 margin: 0px;  
 padding: 0px;  
 }  
 body {  
 font-family: Arial, Helvetica, sans-serif;  
 font-size: 12px;  
 }  
 #mainBox {  
 margin: 0px auto;  
 height: auto;  
 width: 760px;  
 border: 1px solid #006633;  
 }  
 #header {  
 height: 100px;  
 width: 760px;  
 background-image: url(headPic.gif);  
 background-repeat: no-repeat;  
 margin:0px 0px 3px 0px;  
 }  
 #nav {  
 height: 25px;  
 width: 760px;  
 font-size: 14px;  
 list-style-type: none;  
 }  
 #nav li {  
 float:left;  
 }  
 #nav li a{  
 color:#000000;  
 text-decoration:none;  
 padding-top:4px;  
 display:block;  
 width:97px;  
 height:22px;  
 text-align:center;  
 background-color: #009966;  
 margin-left:2px;  
 }  
 #nav li a:hover{  
 background-color:#006633;  
 color:#FFFFFF;  
 }  
 #content {  
 height:auto;  
 width: 740px;  
 line-height: 1.5em;  
 padding: 10px;  
 }  
 #content p {  
 text-indent: 2em;  
 }  
 #content h3 {  
 font-size: 16px;  
 margin: 10px;  
 }  
 #footer {  
 height: 50px;  
 width: 740px;  
 line-height: 2em;  
 text-align: center;  
 background-color: #009966;  
 padding: 10px;  
 }  
 -->  
 </style>
로그인 후 복사


结构代码是这样的:

<p id="mainBox">  
 <p id="header"></p>  
 <ul id="nav">  
 <li><a href="#">首 页</a></li>  
 <li><a href="#">文 章</a></li>  
 <li><a href="#">相册</a></li>  
 <li><a href="#">Blog</a></li>  
 <li><a href="#">论 坛</a></li>  
 <li><a href="#">帮助</a></li>  
 </ul>  
 <p id="content">  
 <h3>前言</h3>  
 <p>第一段内容</p>  
 <h3>理解CSS盒子模式</h3>  
 <p>第二段内容</p>  
 </p>  
 <p id="footer">  
 <p>关于华升   广告服务   华升招聘   客服中心   Q Q留言   网站管理   会员登录   购物车</p>
 <p>Copyright © 2006 - 2008 Tang Guohui. All Rights Reserved</p>  
 </p>  
 </p>
로그인 후 복사

以上就是彻底弄懂CSS盒子模式(DIV布局)_html/css_WEB-ITnose的内容,更多相关内容请关注PHP中文网(www.php.cn)!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

부트 스트랩 목록에서 기본 스타일을 제거하는 방법은 무엇입니까? 부트 스트랩 목록에서 기본 스타일을 제거하는 방법은 무엇입니까? Apr 07, 2025 am 10:18 AM

부트 스트랩 목록의 기본 스타일은 CSS 재정의 상태에서 제거 할 수 있습니다. 보다 구체적인 CSS 규칙 및 선택기를 사용하여 부트 스트랩 기본 스타일을 우선적으로 "근접성 원리"및 "가중치 원리"를 따르십시오. 스타일 충돌을 피하기 위해보다 타겟팅 된 선택기를 사용할 수 있습니다. 재정의가 실패한 경우 사용자 정의 CS의 무게를 조정하십시오. 동시에 성능 최적화에주의를 기울이고, 과도하게 사용하지 않으며, 간결하고 효율적인 CSS 코드를 작성하십시오.

부트 스트랩 프레임 워크를 구축하는 방법 부트 스트랩 프레임 워크를 구축하는 방법 Apr 07, 2025 pm 12:57 PM

부트 스트랩 프레임 워크를 만들려면 다음 단계를 따르십시오. CDN을 통해 부트 스트랩을 설치하거나 로컬 사본을 설치하십시오. HTML 문서 및 링크 부트 스트랩 CSS를 & lt; head & gt; 부분. Botstrap JavaScript 파일을 & lt; body & gt에 추가하십시오. 부분. 부트 스트랩 구성 요소를 사용하고 필요에 맞게 스타일 시트를 사용자 정의하십시오.

이미지 센터링이 이미지 확대 / 축구를 지원합니까? 이미지 센터링이 이미지 확대 / 축구를 지원합니까? Apr 07, 2025 am 07:42 AM

부트 스트랩에서 이미지 센터링 및 스케일링을 달성하는 방법 : D-Flex 정당화 센터를 사용하여 이미지를 가로로 중앙으로 사용하십시오. Align-Items-Center 및 고정 상위 요소 높이를 사용하여 이미지를 수직으로 중심으로 사용하십시오. 너비와 높이 속성을 사용하여 이미지 크기를 제어하거나 최대 세포 및 최대 높이를 사용하여 최대 크기를 제한하십시오. IMG-Fluid 클래스 또는 미디어 쿼리와 같은 반응 형 디자인 메커니즘을 사용하여 반응 형 스케일링을 달성하십시오. 객체 적합 속성을 사용하여 이미지 크기, 제어 스케일링을 최적화하고 모범 사례를 따라 성능과 유지 관리를 보장하십시오.

부트 스트랩을 레이아웃하는 방법 부트 스트랩을 레이아웃하는 방법 Apr 07, 2025 pm 02:24 PM

부트 스트랩을 사용하여 웹 사이트를 레이아웃하려면 그리드 시스템을 사용하여 페이지를 컨테이너, 행 및 열로 나누어야합니다. 먼저 컨테이너를 추가 한 다음 행에 행을 추가하고 행 내 열을 추가 한 다음 마지막으로 열에 내용을 추가하십시오. 부트 스트랩의 반응 형 레이아웃 함수는 중단 점 (XS, SM, MD, LG, XL)에 따라 레이아웃을 자동으로 조정합니다. 응답 형 클래스를 사용하여 다른 화면 크기의 다른 레이아웃을 달성 할 수 있습니다.

부트 스트랩의 그리드 시스템을 보는 방법 부트 스트랩의 그리드 시스템을 보는 방법 Apr 07, 2025 am 09:48 AM

Bootstrap의 메쉬 시스템은 컨테이너 (컨테이너), 행 (행) 및 col (열)의 세 가지 주요 클래스로 구성된 반응 형 레이아웃을 빠르게 구축하기위한 규칙입니다. 기본적으로 12 열 그리드가 제공되며 각 열의 너비는 COL-MD-와 같은 보조 클래스를 통해 조정하여 다양한 화면 크기에 대한 레이아웃 최적화를 달성 할 수 있습니다. 오프셋 클래스와 중첩 메시를 사용하면 레이아웃 유연성을 확장 할 수 있습니다. 그리드 시스템을 사용하는 경우 각 요소에 올바른 중첩 구조가 있는지 확인하고 성능 최적화를 고려하여 페이지 로딩 속도를 향상시킵니다. 심층적 인 이해와 실습에 의해서만 부트 스트랩 그리드 시스템을 능숙하게 마스터 할 수 있습니다.

CSS 스타일의 부트 스트랩을 보는 방법 CSS 스타일의 부트 스트랩을 보는 방법 Apr 07, 2025 am 10:24 AM

부트 스트랩 CSS를 보는 방법 : 브라우저 개발자 도구 사용 (F12). "요소"또는 "검사관"탭을 찾아 부트 스트랩 구성 요소를 찾으십시오. 구성 요소가 스타일 패널에 적용되는 CSS 스타일을보십시오. 개발자 도구를 사용하여 스타일을 필터링하거나 디버그 코드를 필터링하여 작동 방식에 대한 통찰력을 얻을 수 있습니다. 개발자 도구에 능숙하고 우회를 피하십시오.

부트 스트랩 내비게이션 바를 설정하는 방법 부트 스트랩 내비게이션 바를 설정하는 방법 Apr 07, 2025 pm 01:51 PM

Bootstrap은 내비게이션 막대 설정을위한 간단한 안내서를 제공합니다. 내비게이션 바 컨테이너 추가 브랜드 아이덴티티 추가 내비게이션 링크 추가 (선택 사항) 스타일 조정 스타일 (선택 사항)

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

See all articles