背景

作为一个后端开发,曾经尝试过学习前端,但是总觉不得要领,照猫画虎,而公司里又有专业的前端开发,工作中几乎接触不到实际的前端任务,所以前端的技能田野一直是一片荒芜。但是笔者深知前端的技能对找工作和面试又有着重要的帮助,在二线和三线城市,高级开发几乎都需要精通前端的知识,所以这次下定决定要好好学习一番。这几天搜索到了一本主讲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>唐代&middot;孟浩然</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>唐代&middot;孟浩然</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组成一个普通文本流。主要区域和侧边区域分别漂浮在右和左,有以下几种解决方案:

  1. 增加footer清除浮动,但是会导致footer和上面内容的外边距失效。

    #footer {
    clear:both;
    }

    效果图如下:

  1. 利用BFC,把container的overflow属性设置为hidden,即可自动扩容container,并且外边距也正常。

    #container {
    width: 960px;
    margin: 10px 0;
    overflow: hidden;
    }

    效果图如下:

  2. 书中的解决方案是,在container后增加一个新的块,内容为“”并且清除浮动,实现占位,然后实现正常的外间距。

            #container:after{
    clear: both;
    display: block;
    content: "";
    }

两列自适应布局(两列宽度变化后,如何自适应)

未完待续...

CSS那些事读书笔记-2的更多相关文章

  1. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  2. 《CSS Mastery》读书笔记(2)

    第二章  目标的样式   要用CSS样式化一个HTML元素,必须要定位一个元素, CSS的选择器就是这样的手段. 这章中,你要学到的 • Common selectors 普通选择器 • Advanc ...

  3. 《CSS Mastery》 读书笔记 (1)

    --本笔记中英混合,专业名词尽量不翻译,免得误解,如果不习惯,就不用往下看了,走好不送. 第一章 基础 人类的好奇心总是促使我们捣鼓,捣鼓是最好做有效的学习CSS的方法 In this chapter ...

  4. 【Todo】淘宝十年产品事-读书笔记

    书籍位置: /Users/baidu/Documents/Data/Interview/业界/淘宝十年产品事.pdf

  5. 《CSS世界》读书笔记(十六)

    <!-- <CSS世界>张鑫旭著 --> line-height与“垂直居中” line-height 可以让单行或多行元素近似垂直居中,原因在于 CSS 中“行距的上下等分机 ...

  6. 《CSS世界》读书笔记(十五)

    <!-- <CSS世界>张鑫旭著 --> 字母x——CSS世界中隐匿的举足轻重的角色 在各种内联相关模型中,凡是涉及垂直方向的排版或者对齐的,都离不开最基本的基线(baseli ...

  7. 《CSS世界》读书笔记(十四)

    <!--  <CSS世界>张鑫旭著 --> 功勋卓越的 border 属性 border-width 不支持百分比值 border-style 类型 border-style ...

  8. 《CSS世界》读书笔记(十三)

    <!-- <CSS世界>张鑫旭著 --> margin 无效情形解析 (1)display 计算值 inline 的非替换元素的垂直 margin 是无效的.对于内联替换元素, ...

  9. 《CSS世界》读书笔记(十二)

    <!-- <CSS世界>张鑫旭著 --> 正确看待 CSS 世界里的 margin 合并 什么是 margin 合并 块元素的上外边距(margin-top)与下外边距(mar ...

  10. 《CSS世界》读书笔记(十一)

    激进的margin属性 margin与元素尺寸以及相关布局 元素尺寸 border box尺寸,对应jQuery中的$().outerWidth()和$().outerHeight()方法,在原生DO ...

随机推荐

  1. Windows应用开发-常用工具集推荐

     .NET/WPF开发 Visual Studio 最新版本是VS2022,官网下载:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 VsColorOutput 控制台 ...

  2. ElasticSearch接口

    DSL语法 DSL为ES过滤数据时的语法,可用于查询.删除等操作 基本构成 默认分页查询,size默认为10.ES查询默认最大文档数量限制为10000,可通过 index.max_result_win ...

  3. itextpdf 找出PDF中 文字的坐标

    目录 添加引用 添加工具类 调用 找到位置,签名的话见:https://www.cnblogs.com/vipsoft/p/18644127 新项目可以尝试一下 iText 7 , 我这边是老项目所以 ...

  4. 关于前端上传excell时间的问题

    当前端导入excell里的数据时,只能获取到下面类似的这种数据 Excel存储的日期是从1900年1月1日开始按天数来计算的,也就是说1900年1月1日在Excel中是1. 转化的思路和对Excel中 ...

  5. 使用iText对PDF文件签章和验章

    PDF是国际板式文件标准,使用的范围很广.OFD为国产板式文件标准,设计起点很高,天然支持国产签名算法(SM2.SM3):具有后发优势,目前市场占有率仍然很低,前途光明而又漫长.PDF标准并不支持国产 ...

  6. SpringCloud Alibaba(一) - Nacos 服务注册与发现,OpenFeign远程调用

    1.基础项目过目介绍 1.1 数据库创建 1.2 项目模块分布 1.3 测试http接口调用 1.3.1 http接口调用配置类 //http接口调用配置类 @Configuration public ...

  7. nginx详细参数配置(史上最全)

    Nginx (engine x) 是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用 代理服务器 (TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人Igor Sysoev编写 ...

  8. 金山毒霸提示这是高危入侵行为taskeng.exe

    如果安装了金山毒霸之后经常会弹窗提示:这是高位入侵行为.行为发起taskeng.exe.可疑进程regsvr32.EXE,可疑路径antivirus.php,如下入所示: 可以直接点击"阻止 ...

  9. 2025高级java面试精华及复习方向总结

    1. Java基础 顶顶顶顶的点点滴滴 1.1 java集合关系结构图 1.2 如何保证ArrayList的线程安全 方法一: 使用 Collections 工具类中的 synchronizedLis ...

  10. 使用GraalVM将SpringBoot工程编译成平台原生的可执行文件

    原文链接:https://blog.liuzijian.com/post/209e68d0-a418-1737-503a-d47e6d2d9350.html 1.GraalVM GraalVM (ht ...