近几天做了一个小的企业展示网站。虽然页面是在模板的基础上改的,但改的多了不熟悉CSS也很麻烦。正好我看到了学习CSS布局这个网站,于是补习了一下CSS知识。

CSS的显示

CSS的元素分为两类:块级元素和行内元素。

  • 一个块级元素会新开始一行并且尽可能撑满容器。常见的块级元素包括divpform,以及HTML5中新加入的headerfootersection等。
  • 行内元素可以显示在段落内而不打乱段落的布局。常见的行内元素包括spana等。

display属性就是控制元素的表现形式,它的值包括inlineblocknone等。

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:相对定位。对其设置topbottomleftright等属性可以使其偏离其正常位置
  • 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布局》学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. 洛谷P1722 矩阵 II(Catalan数)

    P1722 矩阵 II 题目背景 usqwedf 改编系列题. 题目描述 如果你在百忙之中抽空看题,请自动跳到第六行. 众所周知,在中国古代算筹中,红为正,黑为负…… 给定一个1*(2n)的矩阵(us ...

  2. AC自动机板子(from. qwer)

    #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...

  3. 洛谷P3172 [CQOI2015]选数(容斥)

    传送门 首先,进行如下处理 如果$L$是$K$的倍数,那么让它变成$\frac{L}{K}$,否则变成$\frac{L}{K}+1$ 把$H$变成$\frac{H}{K}$ 那么,现在的问题就变成了在 ...

  4. IT兄弟连 JavaWeb教程 使用AJAX发送GET请求并获取响应

    GET请求用于获取数据,有时候我们需要获取的数据需要通过"查询参数"进行定位,在这种情况下,我们会将查询参数追加到URL的末尾,令服务器解析. 使用Ajax发送GET请求非常简单, ...

  5. 剑指Offer的学习笔记(C#篇)-- 反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 一 . 概念普及 关于线性表等相关概念请点击这里. 二 . 实现方法 目前,可以有两种方法实现该要求. 方法一:借助外部空间实现.这里可以将单链 ...

  6. ReentrantLock锁 源码分析

    根据下面代码分析下ReentrantLock 获得锁和释放锁的过程 ReentrantLock lock = new ReentrantLock(); lock.lock();//获得锁 lock.u ...

  7. EOS 插件依赖关系

    EOS version: 1.0.5 update: 2018-06-19   EOS插件之间会有一个相互调用与依赖的关系,下面有一张个人画的一张草图,包含了此版本EOS所有插件相互之间的依赖关系,如 ...

  8. jconsole 本地连接失败

    http://limaoyuan.iteye.com/blog/1541745 加jvm 启动参数即可: -Dcom.sun.management.jmxremote  -Dcom.sun.manag ...

  9. 洛谷P4568 飞行路线

    题目描述 \(Alice\)和\(Bob\)现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为\(0\)到\(n−1\),一共有\(m\ ...

  10. centOS7.5上部署server jre1.8.0_192 tomcat-8.5.35 mysql-8.0.13