假设浏览器窗口设置为1250px;
wrapper的宽度为960px;
content的宽度为920px:确保了wrapper居中时两边有20px的间距;
    secondary的宽度为230px;
    primary的宽度为670px;
      其中primary中的secondary的宽度为400px;
      primary的宽度为230px;
       padding-right为20px。

固定宽度布局

宽度以像素为单位,这种布局类型成为固定宽度的布局,非常常见的一种。

  • 优点:开发者对布局和定位有更大的控制能力,知道每个元素的精确宽度,就能够对它们进行精确的布局,而且知道所有东西在什么地方。
  • 缺点:①宽度是固定的,无论窗口尺寸多大它们的尺寸都不变,所以空间利用率不高,不适应灵活的web。②行长和文本易读性:固定宽度布局往往适合于浏览器默认文本字号,但只要将文本字号增加几级,边栏就会挤满空间并且行长太短,阅读起来不舒服。
    为解决上述缺点,可使用流式布局或弹性布局代替固定宽度的布局。

流式布局

流式布局中尺寸用百分比而不是像素设置

  • 优点:使得能够相对于浏览器窗口进行伸缩,可以更好的利用空间。
  • 缺点:①窗口宽度较小时行变得非常窄,很难阅读,所以有必要加上像素或em为单位的min-width,防止布局变得太窄,但min-width设置的太大也会遇到与固定宽度相同的问题。②如果设计横跨整个浏览器窗口,那么行就会变得太长,也很难阅读。解决方法:Ⅰ、让容器之跨越宽度的一部分,Ⅱ、用百分数设置内边距和外边距,Ⅲ、对于非常严重的问题,可以为容器设置最大宽度max-width,防止内容在大显示器上变得过宽。
    将固定宽度布局的三列转换为流式三列布局:
    <div class="wrapper">
    <div class="content">
    <div class="primary">
    <div class="primary"> </div>
    <div class="secondary"> </div>
    </div>
    <div class="secondary"> </div>
    </div>
    </div>
    <style>
    .wrapper{
    width:76.8%; /*960÷1250=76.8%*/
    margin:0 auto;
    text-align:left;
    min-width : 62em; /*比较小的窗口尺寸,布局太挤,所以添加以em为单位的min-width*/
    max-width : 125em; /*设置为em为单位的max-width是为了确保文本行的长度适合阅读*/
    }
    .content{
    overflow: hidden; /*加上此句后conten和wrapper容器的高度不再是0,而是100*/
    }
    .content .primary{
    width : 72.82%; /*670÷920=72.82% ,因为在wrapper设置了水平居中,所以40px均匀分布在content容器两侧各20px*/
    float:right;
    display:inline;
    }
    .content .secondary{
    background-color: red;
    width:25%; /*230÷920=25%*/
    float:left;
    display:inline;
    }
    .content .primary .primary{
    background-color: yellow;
    width:59.7%; /*400÷670=59.7%*/
    float:left;
    display:inline;
    }
    .content .primary .secondary{
    background-color: blue;
    width:34.33%; /*230÷670=34.33%*/
    padding-right:3%; /*20÷670=3% 设置内边距,避免其包含的文本紧挨着元素的右边缘*/
    float:right;
    display:inline;
    }
    </style>

    流式布局的缺点:在大分辨率显示屏上,行仍然会过长,让用户不舒服,在窄窗口或在增加文本字号时,行会变得非常短,内容很零碎。解决方法:弹性布局。

弹性布局

相对于字号(而不是浏览器宽度)来设置元素的宽度,单位为em,可以确保在字号增加的时候整个布局随之扩大
缺点:①不能充分的利用空间②因为在字号增加的时候整个布局随之扩大,所以弹性布局会变得比浏览器窗口宽,导致水平滚动条的出现,

解决方法是在容器div上添加100%的max-width。
将固定宽度布局的三列转换为弹性三列布局

  技巧:设置基字号,让1em大致相当于10px,浏览器默认字号是16px,10px是16px的62.5%,所以在主题上将字号设置为62.5%即可。

  内部宽度仍使用百分数,只以em为单位设置容器的宽度,这样的话,内部宽度仍是相对于字号的,可以更方便的修改布局的总尺寸,不必修改每个元素的宽度,更灵活、更易操作。

<div class="wrapper">
<div class="content">
<div class="primary">
<div class="primary"> </div>
<div class="secondary"> </div>
</div>
<div class="secondary"> </div>
</div>
</div>
<style>
body{
font-size:62.5%;
text-align:center;
}
.wrapper{
width:92em; /*容器宽度以em为单位*/
margin:0 auto;
text-align:left;
max-width : 95%;
}
.content{
overflow: hidden; /*加上此句后conten和wrapper容器的高度不再是0,而是100*/
}
.content .primary{
width : 72.82%; /*670÷920=72.82% 内部宽度仍使用百分数*/
float:right;
display:inline;
}
.content .secondary{
background-color: red;
width:25%; /*230÷920=25% 内部宽度仍使用百分数*/
float:left;
display:inline;
}
.content .primary .primary{
background-color: yellow;
width:59.7%; /*400÷670=59.7% 内部宽度仍使用百分数*/
float:left;
display:inline;
}
.content .primary .secondary{
background-color: blue;
width:34.33%; /*230÷670=34.33% 内部宽度仍使用百分数*/
padding-right:2em; /*2em=20px 设置内边距,避免其包含的文本紧挨着元素的右边缘*/
float:right;
display:inline;
}
</style>

ch8 固定宽度、流式、弹性布局的更多相关文章

  1. CSS3系列:流式(弹性)布局(flex布局)

    我的新伸缩盒子.http://www.cnblogs.com/leee/p/5533436.html

  2. BootStrap入门教程 (一) :手脚架Scaffolding(全局样式(Global Style),格网系统(Grid System),流式格网(Fluid grid System),自定义(Customing),布局(Layouts))

    2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端工具集--BootStrap.Bootstrap由MARK ...

  3. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  4. 流式布局&固定宽度&响应式&rem

    我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...

  5. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC

    静态布局:给页面元素设置固定的宽度和高度,单位用px,当窗口缩小,会出现滚动条,拉动滚动条显示被遮挡内容.针对不同分辨率的手机端,分别写不同的样式文件.例如:浏览器窗口是1000px,那么最小的宽度是 ...

  6. 浅谈静态布局、流式布局,rem布局,弹性布局、响应式布局

    静态布局: 特点:没有兼容性问题 PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分:移动设备:另外建立移动网站,单独 ...

  7. css流式和弹性布局(未完)

    (子容器%父容器)*100 png透明ie6中filter:progid:DXImageTransfornm.Microsoft.AlphaImageLoader( src='路径',sizingMe ...

  8. [学习笔记]viewport定义,弹性布局,响应式布局

    一,移动端宽度设置viewport视图窗口,<meta name="viewport" content="width=device-width,initial-sc ...

  9. HTML-移动开发技巧 响应式布局 弹性布局

    移动开发常用技巧 [viewport基本知识] 设置布局viewpoint的各种信息 1.width=device-width;设置viewport视口宽度等于设备宽度 2.initial-scale ...

随机推荐

  1. android nfc功能开发

    链接:Android NFC开发详细总结   https://blog.csdn.net/zhwadezh/article/details/79111348 链接2:Android NFC功能 简单实 ...

  2. C++的new&delete

    new的过程 new的过程:先分配memory,再调用ctor 我们常用的创建对象的方法有两种 Complex c(1,2); //栈 Complex *pc = new Complex(1,2); ...

  3. Fluent_Python_Part3函数即对象,07-closure-decoration,闭包与装饰器

    第7章 函数装饰器和闭包 装饰器用于在源码中"标记"函数,动态地增强函数的行为. 了解装饰器前提是理解闭包. 闭包除了在装饰器中有用以外,还是回调式编程和函数式编程风格的基础. 1 ...

  4. GIT 协同开发

    Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.与cvs, ...

  5. Plastic Bottle Manufacturer - Different Cosmetic Plastic Bottle Materials, Different Characteristics

    Plastic bottles are usually made of PP, PE, K, AS, abs, acrylic, PET, and the like. Dust caps for th ...

  6. 【代码审计】appcms 文件包含漏洞

    index.php的开头系统都做了过滤 一个是 htmlspecialchars($v), 另一个是/^[\x{4e00}-\x{9fa5}\w {0}]+$/u. 前一个过滤是把预定义的字符 &qu ...

  7. Qt5基于smtp服务发送电子邮件

    1.设置邮箱 先登录163邮箱,然后在邮箱界面找到设置,在里面开通smtp服务. 这一步比较关键,要开通smtp服务,在开通的过程中会让你输入一个邮箱客户端授权码,这个才是你后面要用到的密码,而不是你 ...

  8. 翻页插件 jquery

    //css <style> * { padding:; margin:; list-style: none; } .wrapper { width: 100%; cursor: point ...

  9. ISR4K-IOS XE EPC

    1.该操作在ISR4K的平台操作,简单的执行了一个控制层面的抓包 配置命令: R01#monitor capture A control-plane both R01#monitor capture ...

  10. vc code js 配置

    VSCode (for JS develop) https://www.jianshu.com/p/c56ea43b2b34 前言 编辑器之间的竞争一直也十分的激烈,用过Webstom,Hbuilde ...