《学习CSS布局》学习笔记
近几天做了一个小的企业展示网站。虽然页面是在模板的基础上改的,但改的多了不熟悉CSS也很麻烦。正好我看到了学习CSS布局这个网站,于是补习了一下CSS知识。
CSS的显示
CSS的元素分为两类:块级元素和行内元素。
- 一个块级元素会新开始一行并且尽可能撑满容器。常见的块级元素包括
div
、p
、form
,以及HTML5中新加入的header
、footer
、section
等。 - 行内元素可以显示在段落内而不打乱段落的布局。常见的行内元素包括
span
和a
等。
display
属性就是控制元素的表现形式,它的值包括inline
、block
和none
等。
none
通常用于在不删除元素的情况下隐藏元素,但使用none
不会保留元素本该显示的空间。
inline-block
用于将块级元素显示在行内。
控制元素显示的属性还有外边距、内边距、边框、上下左右的边等。于是就讲到了元素的盒模型。
盒模型
上面的这些属性使得元素的显示就像一个盒子一样。
但是我们指定了它的长和宽却并不一定是它最终展示出来的样子。因为元素的边框和内边距会撑开元素。
通常的做法是在设置长和宽是提前减去内边距和边框的宽度。另一种做法是使用box-sizing
这个属性,此时内边距和边框不再会增加元素的宽度。
.box-sizing {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
position
为了实现更复杂的布局,需要对元素进行定位。position
这个元素有以下几个属性:
static
:默认值。不会进行特殊的定位。relative
:相对定位。对其设置top
、bottom
、left
、right
等属性可以使其偏离其正常位置。fixed
:固定定位。相对于浏览器的视窗而言。通常用于摆放不随页面滚动的元素。如固定的页首和页脚、固定的导航栏等。absolute
:绝对定位。相对于元素的父元素(或者如果没有父元素,就相对于文档的body
元素)进行定位。
浮动与清除浮动
使用上面的position
属性已经可以设计出复杂的布局了。但是对于并排显示或者环绕的效果,实现起来还是不够简洁。
使用浮动float
可以比较简便的实现以上布局。
使用了浮动属性的元素会脱离标准流(标准流就是块级元素独占一行,从上往下依次排布),但其他的元素仍处于标准流中,这时可能浮动的元素覆盖了其他一些元素。
解决方法是使用清除浮动clear
。注意clear
作用的对象是自身而不是其它浮动的元素。
如,clear: left
表示,不允许左边有浮动元素,所以此元素就会下移,避免被浮动元素遮挡。
浮动的元素还可能出现的问题是溢出。我们可以使用overflow:auto
使得父元素自动调整大小。
overflow
包括以下的值:
visible
:默认值。内容不会被修剪,会呈现在元素框之外。hidden
:内容会被修剪,并且其余内容是不可见的。scroll
:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto
:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inline-block
有了float
可以更方便的实现并排显示多个块级元素,不过还有更方便的一种方法。
前面提到的display
中的inline-block
可以将块级元素显示在行内。不过,你需要指定每一列的宽度。如:
.box {
display: inline-block;
width: 200px;
height: 100px;
margin: 1em;
}
媒体查询
为了实现响应式布局,可以使用媒体查询,针对不同的浏览器和设备“响应”不同的显示效果。如:
@media screen and (min-width:600px) {
nav {
float: left;
width: 25%;
}
section {
margin-left: 25%;
}
}
@media screen and (max-width:599px) {
nav li {
display: inline;
}
}
《学习CSS布局》学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 图解Mysql语句的执行过程
当我们希望Mysql能够高性能的执行查询语句时,其实最好的方法就是搞清楚Mysql到底是怎样执行查询的.一旦理解这一点,很多的查询优化工作实际上就是遵循一些原则让查询优化器能够按照预想的合理的方式运行 ...
- luogu P2570 [ZJOI2010]贪吃的老鼠【二分+最大流】
首先考虑只满足第一个条件,二分答案,把过期时间加上mid之后的2n个时间离散,老鼠拆成每个时间的,第i个时间第j个老鼠为id[i][j],连接(s,i,p[i]),对于离散后时间(g[j-1]~g[j ...
- java基础第七篇之接口
1.什么是接口: * 接口是方法的集合,而且接口中的方法全是抽象的 * 你可以把接口看成一个特殊的"抽象类",接口中的方法全是抽象的 * * * 2.java中怎么定义接口: * ...
- jquery jtemplates.js模板渲染引擎的详细用法第二篇
jquery jtemplates.js模板渲染引擎的详细用法第二篇 关于jtemplates.js的用法在第一篇中已经讲过了,这里就直接上代码,不同之处是绑定模板的方式,这里讲模板的数据专门写一个t ...
- 《SQL 进阶教程》 case:在 CASE 表达式中使用聚合函数
1.只加入一个社团的学生的社团id select std_id, max(club_id) from student_clubgroup by std_idhaving count(*) =1---- ...
- 牛客网Java刷题知识点之抽象类与接口
不多说,直接上干货! 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于它们的存在才赋予java强大的面向对象的能力. ...
- java 通用查询框架Querydsl 简介
Querydsl 是一个通用的查询框架,专注于通过JavaAPI构建类型安全的SQL查询说说Querydsl的优势吧: 1. Querydsl支持代码自动完成,因为才纯Java API编写查询,因此主 ...
- Jquery3
动画 动画动画效果一:show(时间),hide(时间)说明:时间的单位为毫秒方法toggle(时间):使用动画切换显示与隐藏动画效果二:slideDown(时间),slideUp(时间)切换:sli ...
- 今天测试发现qwebsocket有个bug
发现命令使用时间久了就会丢失mask,mask设置成0,而websocket协议要求客户端给服务器传东西必须带mask=1,发现确实有个bug,代码如下: 文件:src/websockets/qweb ...
- 《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应
1.整体缩放 整体缩放可以用在营销活动页,营销活动可能因为设计美观需求必须使用背景图片而非背景色,因此需要考虑背景图适应屏幕大小.开发者可以用320像素的宽度作为基础宽度(高度可以固定),然后通过计算 ...