假设浏览器窗口设置为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. 专题-集合-ConcurrentHashMap

    本文介绍ConcurrentHashMap是线程安全的,但为什么却不用加锁的原因 一.ConcurrentHashMap简介 在jdk1.7中是采用Segment + HashEntry + Reen ...

  2. python-线程池的两种实现方式 【转载】

    #!/usr/bin/env python # -*- coding:utf-8 -*- import queue import threading import contextlib import ...

  3. PHPCMS站内搜索功能实现方法汇总,一文解决PHPCMS站内搜索问题

    1,https://blog.csdn.net/hzw19920329/article/details/80110673 点评:phpcms搜索功能实现方法,作者基于PHPCMS做个门户网站实现站内搜 ...

  4. Comparable

    为什么会有Comparable与Comparator接口? 引入策略模式   目录 引入 Comparable接口的来龙去脉 引入Comparator接口 什么是策略模式? 使用了策略模式有什么好处? ...

  5. pipreqs (找当前项目依赖的包)

    pipreqs pipreqs可以帮你找到当前项目的所有组件及其版本.就是当别人给你一个程序的时候,你要在自己电脑上运行起来,就需要安装程序所依赖的组件,总不能自己一个一个找吧. # 安装 pip3 ...

  6. html学习-第二集(CSS)

    head标签里面添加style标签,可以为标签添加样式 id选择器 类选择器 标签选择器 层级选择器 组合选择器 属性选择器 <!DOCTYPE html> <html lang=& ...

  7. Library management system design requirements

    1)软件需求说明书 1. 引言 1.1 编写目的:本需求的编写是为了研究图书管理系统软件的开发途径和应用方法.同时它也是进行项目策划.概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和 ...

  8. Sqoop的安装及常用命令

    本次安装主要是为了离线分析数据清洗完成后的操作:网站日志流量分析系统之数据清洗处理(离线分析) 一.概述 1. sqoop是Apache 提供的工具,用于hdfs和关系型数据库之间数据的导入和导入 2 ...

  9. VMware升级到15版本虚拟机黑屏的解决方法

    1.启动VMware15虚拟机,在菜单栏找到:虚拟机→管理→更改硬件兼容性 2.打开该项,弹出更改硬件兼容性向导对话框,点  下一步,接下来把硬件兼容性改为Workstation 12.x 3.根据提 ...

  10. 本地简单HTTP服务器

    cd进要启动服务器的目录 python -m http.server 7800 (Python 3.x) python -m SimpleHTTPServer 7998 (Pyhton2.x)