ch8 固定宽度、流式、弹性布局

假设浏览器窗口设置为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 固定宽度、流式、弹性布局的更多相关文章
- CSS3系列:流式(弹性)布局(flex布局)
我的新伸缩盒子.http://www.cnblogs.com/leee/p/5533436.html
- BootStrap入门教程 (一) :手脚架Scaffolding(全局样式(Global Style),格网系统(Grid System),流式格网(Fluid grid System),自定义(Customing),布局(Layouts))
2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端工具集--BootStrap.Bootstrap由MARK ...
- CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)
一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...
- 流式布局&固定宽度&响应式&rem
我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...
- 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC
静态布局:给页面元素设置固定的宽度和高度,单位用px,当窗口缩小,会出现滚动条,拉动滚动条显示被遮挡内容.针对不同分辨率的手机端,分别写不同的样式文件.例如:浏览器窗口是1000px,那么最小的宽度是 ...
- 浅谈静态布局、流式布局,rem布局,弹性布局、响应式布局
静态布局: 特点:没有兼容性问题 PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分:移动设备:另外建立移动网站,单独 ...
- css流式和弹性布局(未完)
(子容器%父容器)*100 png透明ie6中filter:progid:DXImageTransfornm.Microsoft.AlphaImageLoader( src='路径',sizingMe ...
- [学习笔记]viewport定义,弹性布局,响应式布局
一,移动端宽度设置viewport视图窗口,<meta name="viewport" content="width=device-width,initial-sc ...
- HTML-移动开发技巧 响应式布局 弹性布局
移动开发常用技巧 [viewport基本知识] 设置布局viewpoint的各种信息 1.width=device-width;设置viewport视口宽度等于设备宽度 2.initial-scale ...
随机推荐
- android nfc功能开发
链接:Android NFC开发详细总结 https://blog.csdn.net/zhwadezh/article/details/79111348 链接2:Android NFC功能 简单实 ...
- C++的new&delete
new的过程 new的过程:先分配memory,再调用ctor 我们常用的创建对象的方法有两种 Complex c(1,2); //栈 Complex *pc = new Complex(1,2); ...
- Fluent_Python_Part3函数即对象,07-closure-decoration,闭包与装饰器
第7章 函数装饰器和闭包 装饰器用于在源码中"标记"函数,动态地增强函数的行为. 了解装饰器前提是理解闭包. 闭包除了在装饰器中有用以外,还是回调式编程和函数式编程风格的基础. 1 ...
- GIT 协同开发
Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.与cvs, ...
- 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 ...
- 【代码审计】appcms 文件包含漏洞
index.php的开头系统都做了过滤 一个是 htmlspecialchars($v), 另一个是/^[\x{4e00}-\x{9fa5}\w {0}]+$/u. 前一个过滤是把预定义的字符 &qu ...
- Qt5基于smtp服务发送电子邮件
1.设置邮箱 先登录163邮箱,然后在邮箱界面找到设置,在里面开通smtp服务. 这一步比较关键,要开通smtp服务,在开通的过程中会让你输入一个邮箱客户端授权码,这个才是你后面要用到的密码,而不是你 ...
- 翻页插件 jquery
//css <style> * { padding:; margin:; list-style: none; } .wrapper { width: 100%; cursor: point ...
- ISR4K-IOS XE EPC
1.该操作在ISR4K的平台操作,简单的执行了一个控制层面的抓包 配置命令: R01#monitor capture A control-plane both R01#monitor capture ...
- vc code js 配置
VSCode (for JS develop) https://www.jianshu.com/p/c56ea43b2b34 前言 编辑器之间的竞争一直也十分的激烈,用过Webstom,Hbuilde ...