CSS那些事读书笔记-2
背景
作为一个后端开发,曾经尝试过学习前端,但是总觉不得要领,照猫画虎,而公司里又有专业的前端开发,工作中几乎接触不到实际的前端任务,所以前端的技能田野一直是一片荒芜。但是笔者深知前端的技能对找工作和面试又有着重要的帮助,在二线和三线城市,高级开发几乎都需要精通前端的知识,所以这次下定决定要好好学习一番。这几天搜索到了一本主讲CSS实例的书,开始学习,希望能坚持下去,同时,也希望所记笔记能对大家有所帮助。
笔记参考书籍:CSS那些事儿
布局
容器居中和文本居中
容器居中需要定义容器的宽度,并且使用margin-left和margin-right设置值为auto来实现容器居中。
使用text-align:center来使文本居中,不使用这个属性文本默认是居左的。
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title>css布局1</title>
<style>
body{
text-align: center;
} .box {
width: 250px;
background-color: #E8E8E8;
margin-left: auto;
margin-right: auto;
}
</style>
</head> <body>
<div class="box">
<h1>《春晓》</h1>
<address>唐代·孟浩然</address>
<p>春眠不觉晓,处处闻啼鸟。</p>
<p>夜来风雨声,花落知多少。</p>
</div> </body> </html>
容器居右
使用float:right 来时容器漂浮在右侧
可以使用绝对定位,使容器紧靠在父级容器的右侧
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title>css布局1</title>
<style>
body{
text-align: center;
} .box {
width: 250px;
background-color: #E8E8E8;
/* float :right; */
position: absolute;
right: 0px;
}
</style>
</head> <body>
<div class="box">
<h1>《春晓》</h1>
<address>唐代·孟浩然</address>
<p>春眠不觉晓,处处闻啼鸟。</p>
<p>夜来风雨声,花落知多少。</p>
</div> </body> </html>
两列定宽定高布局
两列定宽定高布局的实现较为简单,主要是使主要内容区域和侧边区域使用float属性分别漂浮到左侧或者右侧,缺点为:当文字部分超过高度后,无法自适应高度。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css两列布局1</title>
<style>
* {
margin: 0;
padding: 0;
}
#header,
#footer {
width: 960px;
height: 30px;
background-color: #e8e8e8;
}
#container {
width: 960px;
height: 250px;
margin: 10px 0;
}
.mainBox {
float: right;
width: 680px;
height: 250px;
color: #FFFFFF;
background-color: #333333;
}
.sideBox {
float: left;
width: 270px;
height: 250px;
color: #FFFFFF;
background-color: #999999;
}
</style>
</head>
<body>
<div id="header">头部信息</div>
<div id="container">
<div class="mainBox">主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
主要区域主要区域主要区域主要区域主要区域主要区域主要区域主要区域
</div>
<div class="sideBox">侧边区域</div>
</div>
<div id="footer">尾部信息</div>
</body>
</html>
可以看到,主要区域部分的内容已经溢出。

作者提到可以使用overflow属性,来使溢出的部分隐藏或者加入滚动条。
两列定宽自适应高度布局
想要自适应高度,就涉及到了一个重要的知识点,浮动的显示定理,我找到了一篇较好的文章 CSS浮动原理的通俗理解,大家可以参考这篇文章,先把浮动的基本定理搞清楚。
假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。 非浮动的元素仍处于标准文档流中,并且会自动向上补齐位置。

上面的例子中,主要区域和侧边区域都存在浮动,当把height属性去掉后,下面的footer会自动向上移动,header和container和footer组成一个普通文本流。主要区域和侧边区域分别漂浮在右和左,有以下几种解决方案:
增加footer清除浮动,但是会导致footer和上面内容的外边距失效。
#footer {
clear:both;
}
效果图如下:

利用BFC,把container的overflow属性设置为hidden,即可自动扩容container,并且外边距也正常。
#container {
width: 960px;
margin: 10px 0;
overflow: hidden;
}
效果图如下:

书中的解决方案是,在container后增加一个新的块,内容为“”并且清除浮动,实现占位,然后实现正常的外间距。
#container:after{
clear: both;
display: block;
content: "";
}

两列自适应布局(两列宽度变化后,如何自适应)
未完待续...
CSS那些事读书笔记-2的更多相关文章
- css权威指南读书笔记
今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...
- 《CSS Mastery》读书笔记(2)
第二章 目标的样式 要用CSS样式化一个HTML元素,必须要定位一个元素, CSS的选择器就是这样的手段. 这章中,你要学到的 • Common selectors 普通选择器 • Advanc ...
- 《CSS Mastery》 读书笔记 (1)
--本笔记中英混合,专业名词尽量不翻译,免得误解,如果不习惯,就不用往下看了,走好不送. 第一章 基础 人类的好奇心总是促使我们捣鼓,捣鼓是最好做有效的学习CSS的方法 In this chapter ...
- 【Todo】淘宝十年产品事-读书笔记
书籍位置: /Users/baidu/Documents/Data/Interview/业界/淘宝十年产品事.pdf
- 《CSS世界》读书笔记(十六)
<!-- <CSS世界>张鑫旭著 --> line-height与“垂直居中” line-height 可以让单行或多行元素近似垂直居中,原因在于 CSS 中“行距的上下等分机 ...
- 《CSS世界》读书笔记(十五)
<!-- <CSS世界>张鑫旭著 --> 字母x——CSS世界中隐匿的举足轻重的角色 在各种内联相关模型中,凡是涉及垂直方向的排版或者对齐的,都离不开最基本的基线(baseli ...
- 《CSS世界》读书笔记(十四)
<!-- <CSS世界>张鑫旭著 --> 功勋卓越的 border 属性 border-width 不支持百分比值 border-style 类型 border-style ...
- 《CSS世界》读书笔记(十三)
<!-- <CSS世界>张鑫旭著 --> margin 无效情形解析 (1)display 计算值 inline 的非替换元素的垂直 margin 是无效的.对于内联替换元素, ...
- 《CSS世界》读书笔记(十二)
<!-- <CSS世界>张鑫旭著 --> 正确看待 CSS 世界里的 margin 合并 什么是 margin 合并 块元素的上外边距(margin-top)与下外边距(mar ...
- 《CSS世界》读书笔记(十一)
激进的margin属性 margin与元素尺寸以及相关布局 元素尺寸 border box尺寸,对应jQuery中的$().outerWidth()和$().outerHeight()方法,在原生DO ...
随机推荐
- C++之OpenCV入门到提高007:调整图像亮度和对比度
一.介绍 今天是这个系列<C++之 Opencv 入门到提高>的第七篇文章.这篇文章也不难,介绍如何调整图像的亮度.图像本质上也是数据,既然是数据,我们就可以针对图像的每个像素进行增加或者 ...
- SQL统计数据之总结
一.查询SQL SELECT t1.规则编号 AS 编码, t1.规则描述 AS 名称, SUM( CASE WHEN t3.DATA_SOURCES = '00' THEN 1 ELSE 0 END ...
- 微服务技术架构、监控、Docker、服务治理等详解
1.什么是微服务 1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可) 2)独立的进程(java的tomcat,nodejs等) 3)轻量级的通信(不是soap,是htt ...
- biancheng-Spring Cloud Alibaba Nacos
参考http://c.biancheng.net/springcloud/what-is-alibaba.html http://c.biancheng.net/springcloud/nacos.h ...
- Superset 用户集成完整方案(iframe方式)
本次集成方案经过个人测试,根据前面2个集成方案的资料,撰写,相关说明由于个人知识水平有限不一定理解准确,有错误的地方环境评论区评论: 1.用户集成方式: A系统用户,通过A的某个界面,iframe嵌入 ...
- uniapp-中picker-view用户不触发channge事件也知道用户选择的值
我们都知道,只用用户触发change事件的时候,我们才知道,用户选择的是哪一个值: 如何用户没有触发change事件,我们压根就不知道用户选择的是哪一个值: 那么什么时候,用户不会触发change事件 ...
- 多云时代!天翼云TeleDB以科技创新释放数据价值
8月17日,在第14届中国数据库技术大会(DTCC2023)上,天翼云科技有限公司数据库首席技术官李跃森以<天翼云TeleDB持续创新之路>为题发表演讲,介绍了天翼云TeleDB数据库的发 ...
- 大模型背后的向量魔法:Embedding技术初探
本文原本是2022年写的,然而一直没有完善,自从LLM火起来之后,NLP领域的技术更新很快,本文只是大概介绍了Embedding相关的基础知识,具体应用接下来会在博客更新发布. 前言 又是很长一段时间 ...
- Q:查看锁表进程,及杀死所有锁表进程sql
查看锁表进程 SELECT DISTINCT decode(s.inst_id, 1, 'DB1', 2, 'DB2') 数据库服务器, decode(s.BLOCKING_SESSION, '', ...
- 福尼斯焊机TPS320i/TPS400i/TPS500i的焊接特性
福尼斯焊机设备原理 TPS320i.TPS400i.TPS500i和TPS 600iMIG/MAG电源由微处理器控制,机器人驱动器维修,是完全数字化的逆变器电源. 模块化设计和系统的扩展潜力使其具有高 ...