背景

作为一个后端开发,曾经尝试过学习前端,但是总觉不得要领,照猫画虎,而公司里又有专业的前端开发,工作中几乎接触不到实际的前端任务,所以前端的技能田野一直是一片荒芜。但是笔者深知前端的技能对找工作和面试又有着重要的帮助,在二线和三线城市,高级开发几乎都需要精通前端的知识,所以这次下定决定要好好学习一番。这几天搜索到了一本主讲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. Python 代码实现生命之轮Wheel of life

    最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的.使用Python创建生命倒计时图表,珍惜时间,活在当下. 生命之轮(Wheel of life),这一概念最初由 Success Motiv ...

  2. CDS标准视图:总计应收款 I_TotalAccountsReceivables

    视图名称:总计应收款 I_TotalAccountsReceivables 视图类型:参数 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IFITOTALACCTRB ...

  3. CDS标准视图:维修工单实际成本数据 I_MaintOrderActualCostDataCube

    视图名称:维修工单实际成本数据 I_MaintOrderActualCostDataCube 视图类型:基础 视图代码: 点击查看代码 @VDM.viewType: #COMPOSITE @AbapC ...

  4. 2025 最佳免费商用文本转语音模型: Kokoro TTS

    在文本转语音(TTS)技术领域,一项突破性的进展引起了广泛关注--Kokoro TTS 模型凭借其卓越性能和完全免费的商用许可,成为目前最出色的 TTS 解决方案之一.基于广受欢迎的开源框架 Styl ...

  5. streamlit使用技巧

    实现上传PDF并显示 ## 上传并预览(1M以内才可预览) def upload_Pre(): file = st.file_uploader("选择待上传的PDF文件", typ ...

  6. fopen在VS中不安全的问题

    问题 fopen函数哎VS中使用,报错: error C4996: 'fopen': This function or variable may be unsafe. Consider using f ...

  7. C#使用yield关键字提升迭代性能与效率

    前言 yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,减少了内存占用,并允许在迭代时执行复杂逻辑. 传统迭代和yield迭代方式对比 咱们来看看传统迭代方式和yie ...

  8. 牛客 acm输入输出模式练习

    https://www.nowcoder.com/exam/test/67432019/detail?pid=27976983#question 注意:只有部分个人觉得有意义的题目 A+B(4) 计算 ...

  9. FastReport实现遍历Dataset数据集计算

    delphi在使用fastreport进行打印时,需要对数据进行计算求和. 在打印文本框的OnBeforePrint事件中进行以下代码即可实现效果 procedure Memo7OnBeforePri ...

  10. .NET Core GC模式(gc mode)底层原理浅谈

    简介 CLR的GC模式与JVM的GC模式理念不同,相对JVM的各种小参显得比较简陋,CLR的理念是约定优于配置,并根据程序类型来分提供了几个默认的选项给大家选择. CS程序默认使用的工作站模式(Wor ...