前端学习总结——CSS布局方式之传统布局

传统布局

传统布局即是早期在平板电脑、智能手机等移动设备并不流行的时候使用的布局方式。

一、表格布局

例如:采用表格方式实现如下简单模型的布局

布局模型


(1)固定布局

即用具体的像素值来确定模型的宽和高等值。

HTML代码如下所示

<table border="0"><tr><td colspan="2" class="header">header</td></tr><tr><td class="aside">aside</td><td class="section">section</td></tr><tr><td colspan="2" class="footer">footer</td></tr>
</table>

css代码

@charset "utf-8";body {margin: 0;
}table {margin: 0 auto;width: 960px;border-spacing: 0;
}.header {height: 120px;background-color: olive;
}.aside {width: 200px;height: 500px;background-color: purple;
}.section {width: 760px;height: 500px;background-color: maroon;
}.footer {height: 120px;background-color: gray;
}

(2)流体布局

即采用百分比设置宽度等值,表格的固定布局采用流体布局的方式比较简单,只需要将table的width值设置为100%.

流体布局css代码

@charset "utf-8";body {margin: 0;
}table {margin: 0 auto;width: 960px;border-spacing: 0;
}.header {height: 120px;background-color: olive;
}.aside {width: 200px;height: 500px;background-color: purple;
}.section {width: 760px;height: 500px;background-color: maroon;
}.footer {height: 120px;background-color: gray;
}

二、浮动布局

浮动布局主要采用float和clear方式两个属性来构建

(1)固定布局

HTML代码片段

<body><header>header</header><aside>aside</aside><section>section</section><footer>footer</footer>
</body>

CSS代码

@charset "utf-8";body {width: 960px;margin: 0 auto;
}header {height: 120px;background-color: olive;
}aside {width: 200px;height: 500px;background-color: purple;float: left;  //左浮动
}section {width: 760px;height: 500px;background-color: maroon;float: right;  //右浮动
}footer {height: 120px;background-color: gray;clear: both;
}

注意:aside和section这两部分必须要添加浮动并且两者总长度不能超过body的总长度,否则无法将两者并排显示

(2)流体布局

流体布局只要更改 body 元素的限定长度为 auto 或 100%。然后左右两列分别设置 20% 和 80%即可。

流体布局css代码

@charset "utf-8";body {width: auto;   //此处改为auto或者100%margin: 0 auto;
}header {height: 120px;background-color: olive;
}aside {width: 20%; //此处改为百分比height: 500px;background-color: purple;float: left;
}section {width: 80%;  //此处改为百分比height: 500px;background-color: maroon;float: right;
}footer {height: 120px;background-color: gray;clear: both;
}

三、定位布局

在使用布局前先了解一下css2关于position属性的用法。

属性说明
static默认值,没有定位
absolute绝对定位,使用top,right,bottom,left来进行位移
relative相对定位,使用top,right,bottom,left来进行位移
fixed以窗口参考定位,使用top,right,bottom,left来进行位移

//absolute 绝对定位:,脱离文档流,以窗口文档左上角 0,0 为起点

CSS代码

@charset "utf-8";body {margin: 10px auto;width: 800px;height: 500px;border: 1px solid red;
}header {position: absolute;top: 100px;left: 100px;width: 50px;height: 50px;background-color: grey;
}

效果图如图所示
这里写图片描述

所谓脱离文档流的意思,就是本身这个元素在文档流是占位的。如果脱离了,就不占有文档的位置,好像浮在了空中一般,有了层次感。

由于绝对定位脱离了文档流,出现层次概念。那么每个元素到底在那一层,会不会冲突覆盖。这时通过 z-index 属性来判定它们的层次关系。

属性说明
auto默认层次
数字设置层次,数字越大,层次越高

示例如下:

html代码

<body>
body
<header><div class="div1">div1</div><div class="div2">div2</div><div class="div3">div3</div>
</header>
</body>

css代码

header {position: relative;
}div {width: 150px;height: 150px;position: absolute;
}.div1 {background-color: olive;left: 0px;z-index: -1;   //设置在-1层。
}.div2 {background-color: purple;top: 100px;left: 100px;z-index: 10;   //设置在第10层
}.div3 {background-color: gray;top: 200px;left: 0;z-index: 100;   //设置在100层
}

z-index区分

//relative 相对定位,不脱离文档流,占位偏移

CSS代码

@charset "utf-8";body {margin: 10px auto;width: 800px;height: 500px;border: 1px solid red;
}header {position: relative; //相对定位top: 100px;left: 100px;width: 50px;height: 50px;background-color: grey;
}

效果图如下
relative定位效果

//fixed 以窗口参考定位,脱离文档流,会随滚动条滚动而滚动

css代码

@charset "utf-8";body {margin: 10px auto;width: 800px;height: 500px;border: 1px solid red;
}header {position: fixed;  // 以窗口参考定位top: 100px;left: 100px;width: 50px;height: 50px;background-color: grey;
}

fixed定位

这三种分别都在各自的情况下使用,均比较常用。但还有一种情况,就是:1.既要脱离文档流(这样元素之间不会相互冲突);2.以父元素,比如 body 或其他父元素为参考点(这样可以实现区域性绝对定位);3.还必须是绝对定位。

HTML代码

<body><header>header</header><aside>aside</aside><section>section</section><footer>footer</footer>
</body>

CSS代码

@charset "utf-8";body {width: 960px;margin: 0 auto;//第一步,将需要设置参考点的父元素设置为相对,且不设置坐标position: relative;
}header {width: 960px;height: 120px;background-color: olive;//第二步,如果父元素设置了参考点,子元素的绝对定位将以它为基准 position: absolute;top: 0;left: 0;
}aside {width: 200px;height: 500px;background-color: purple;position: absolute;top: 120px;left: 0;
}section {width: 760px;height: 500px;background-color: maroon;position: absolute;top: 120px;right: 0;
}footer {width: 960px;height: 120;background-color: gray;position: absolute;top: 620px;left: 0;
}

效果图
这里写图片描述

四、box-sizing

在盒模型中,元素盒子如果加入了内边距 padding 和边框 border 后,它的总长度会增加。那么如果这个元素用于非常精确的布局时,我们就需要进行计算增减。
为了解决这个精确计算的问题,CSS3 提供了一个属性 box-sizing,这个属性可以定义元素盒子的解析方式,从而可以选择避免掉布局元素盒子增加内边距和边框的长度增减问题。

属性说明
content-box默认值,border 和 padding 设置后用于元素的总长度。
border-boxborder 和 padding 设置后不用于元素的总长度。
inherit规定应从父元素继承 box-sizing 属性的值。

示例:设置 border-box 让 border 和 padding 不在额外增加元素大小

aside {width: 200px;height: 500px;background-color: purple;border: 5px solid green;padding: 10px;box-sizing: border-box;float: left;
}

box-sizing 是 CSS3 推出的,各个厂商在实现时设置了私有前缀。

OperaFirefoxChromeSafariIE
支持需带前缀2 ~ 284 ~ 93.1 ~ 5
支持不带前缀10.1+29+10+6+

//完整形式

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;

五:resize

CSS3 提供了一个 resize 属性,来更改元素尺寸大小。

属性说明
none默认值,不允许用户调整元素大小。
both用户可以调节元素的宽度和高度。
horizontal用户可以调节元素的宽度
vertical用户可以调节元素的高度。

一般普通元素,默认值是不允许的。但如果是表单类的 textarea 元素,默认是允许的。而普通元素需要设置 overflow:auto,配合 resize 才会出现可拖拽的图形。
示例如下

HTML代码

<body><header>header</header><aside>aside</aside><section>section<textarea></textarea></section><footer>footer</footer>
</body>

css代码

@charset "utf-8";body {width: 960px;margin: 0 auto;
}header {height: 120px;background-color: olive;overflow: auto;  //必须resize: both;  //设置为用户可以调节元素的宽度和高度。
}aside {width: 200px;height: 500px;background-color: purple;border: 5px solid green;padding: 10px;box-sizing: border-box;float: left;
}section {width: 760px;height: 500px;background-color: maroon;float: right;
}footer {width: 960px;height: 120;background-color: gray;clear: both;
}textarea {resize: none;
}

效果图如下
resize 属性

附 W3School中css3文档

学习参考资料:李炎恢HTML5第一季视频教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[POI2007]MEG-Megalopolis

传送门&#xff1a;嘟嘟嘟 第一反应是树链剖分&#xff0c;但是太长懒得写&#xff0c;然后就想出了一个很不错的做法。 想一下&#xff0c;如果我们改一条边&#xff0c;那么影响的只有他的子树&#xff0c;只要先搞一个dfs序&#xff0c;为什么搞出这个呢&#xff1f;因为有一…

memcache在ThinkPHP中的使用1---PHP下安装memcache

1.什么是Memcached缓存 Memcached是一套小巧、高效且成熟的内存数据库。与普通的数据库不同&#xff0c;Memcached存储的数据只能是简单的键值对&#xff0c;在查询时需要根据存放的key获取数据。 Memcached最大的特点是数据存放于内存&#xff0c;性能会比传统文件系统高出…

骨骼收集器01背包

来源hdu2602 问题描述 许多年前&#xff0c;在泰迪的家乡&#xff0c;有一个人被称为“骨头收藏家”。这个男人喜欢收集各种各样的骨头&#xff0c;比如狗狗&#xff0c;牛&#xff0c;还有他去了坟墓...... 骨头收藏家有一个大容量的V袋&#xff0c;沿着他的收集之旅有很多骨头…

ZooKeeper的安装与部署

本文讲述如何安装和部署ZooKeeper。 一、系统要求 ZooKeeper可以运行在多种系统平台上面&#xff0c;表1展示了zk支持的系统平台&#xff0c;以及在该平台上是否支持开发环境或者生产环境。 表1&#xff1a;ZooKeeper支持的运行平台 | 系统 | 开发环境 | 生产环境| | Linux…

python爬取豆瓣前25个影片内容的正则表达式练习

通过python正则表达式获取豆瓣top250的第一页的25个影片排名,影片名字,影片连接,导演,主演,上映日期,国家,剧情,评分,评价人数的内容 网页html内容: 1 <ol class"grid_view">2 <li>3 <div class"item">4 …

JavaScript 面向对象的程序设计1

一、理解对象 1.创建一个对象&#xff0c;然后给这个对象新建属性和方法。 ①常见的创建方式 var person new Object(); //创建一个Object 对象person.name XIE; //创建一个name 属性并赋值person.age 20; //创建一个age 属性并赋值person.sayName function () { //创建…

Zookeeper 使用

安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础&#xff0c;最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取&#xff0c;Zookeeper 的安装非常简单&#xff0c;下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。 单…

Asp.Net Core 工作单元 UnitOfWork UOW

Asp.Net Core 工作单元示例 来自 ABP UOW 去除所有无用特性 代码下载 &#xff1a; 去除所有无用特性版本&#xff0c;原生AspNetCore实现 差不多 2278 行代码&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1NoEIDSAPNr46xNHYEx9KCA 提取码&#xff1a;570i 包含C…

网站性能优化--CRP

网站性能优化–CRP 为了把HTML、CSS和JavaScript转化成活灵活现、绚丽多彩的网页&#xff0c;浏览器需要处理一系列的中间过程&#xff0c;优化性能其实就是了解这个过程中发生了什么-即CRP(Critical Rendering Path&#xff0c;关键渲染路径)。首先&#xff0c;我们从头开始快…

Dubbo+zookeeper基础讲解

一、dubbo是什么&#xff1f; 1&#xff09;本质&#xff1a;一个Jar包,一个分布式框架,&#xff0c;一个远程服务调用的分布式框架。 既然是新手教学&#xff0c;肯定很多同学不明白什么是分布式和远程服务调用&#xff0c;为什么要分布式&#xff0c;为什么要远程调用。我简…

What Are You Talking About HDU1075

一开始我也想用map 但是处理不好其他字符。。 看了题解 多多学习&#xff01; 很巧妙 就是粗暴的一个字符一个字符的来 分为小写字母和非小写字母两个部分 一但单词结束的时候就开始判断。 #include<bits/stdc.h> using namespace std;int main() {string a,b;map&l…

学习File API用于前端读取文件

1. File API简介 File API对于某些专门的网站的不可或缺的。现在常用它实现对文件的预览等功能。 File API规定怎么从硬盘上提取文件&#xff0c;直接交给在网页中运行中的Javascript代码。然后代码可以打开文件探究数据&#xff0c;无论是本地文件还是其他文件。注意&#x…

Dubbo入门教程

服务端&#xff08;dubbo-server&#xff09; 1. pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…

NSAssert和NSParameterAssert

2016.05.05 18:34* 字数 861 阅读 5127评论 0喜欢 17https://www.jianshu.com/p/3072e174554fNSAssert和NSParameterAssert在开发环境中经常被使用&#xff0c;调试和验证代码参数的完整性&#xff0c;断言为真&#xff0c;则表明程序运行正常&#xff0c;而断言为假&#xff0…

使用Nodejs发送邮件

尝试用了Nodemailer来发送邮件&#xff0c;结果成功了&#xff0c;虽然是相对比较简单的&#xff0c;但还是记录一下吧。 Nodemailer 是 Node.js 应用程序的一个模块&#xff0c;可以方便地发送电子邮件。 使用 # 初始化 pageage.json 文件 $ npm init # 安装依赖 $ npm ins…

Spring Cloud 微服务架构

一、分布式服务框架的发展 1.1 第一代服务框架   代表&#xff1a;Dubbo(Java)、Orleans(.Net)等 特点&#xff1a;和语言绑定紧密 1.2 第二代服务框架   代表&#xff1a;Spring Cloud等 现状&#xff1a;适合混合式开发&#xff08;例如借助Steeltoe OSS可以让ASP.Ne…

JZOJ 4421. aplusb

4421. aplusb Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Goto ProblemSetDescription SillyHook要给小朋友出题了&#xff0c;他想&#xff0c;对于初学者&#xff0c;第一题肯定是ab 啊&#xff0c;但当他出完数据后神奇地发现.in不见了&#xff0c…

计算机网络(十),HTTP的关键问题

目录 1.在浏览器地址栏键入URL&#xff0c;按下回车之后经历的流程 2.HTTP状态码 3.GET请求和POST请求的区别 4.Cookie和Session的区别 5.IPV4和IPV6 十、HTTP的关键问题 1.在浏览器地址栏键入URL&#xff0c;按下回车之后经历的流程 &#xff08;1&#xff09;DNS解析 &#x…

vue中 mock使用教程

//mock/index.js import Mock from mockjs //引入mockjs&#xff0c;npm已安装 import { Random,toJSONSchema } from mockjs // 引入random对象,随机生成数据的对象&#xff0c;&#xff08;与占位符一样&#xff09; Mock.setup({timeout:1000 //设置请求延时时间 }) const …

WinSxS文件夹瘦身

WinSxS文件夹瘦身2014-5-8 18:03:32来源&#xff1a;IT之家作者&#xff1a;阿象责编&#xff1a;阿象 评论&#xff1a;27刚刚&#xff0c;我们分享了如何用DISM管理工具查看Win8.1 WinSxS文件夹实际大小。对于WinSxS文件夹&#xff0c;几乎每个Windows爱好者都认识到其重要性…