背景

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

    import random import ddddocr from playwright.sync_api import sync_playwright import time import requ ...

  2. Golang-包8

    http://c.biancheng.net/golang/package/ Go语言包的基本概念 Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方 ...

  3. 项目PMP之十三相关方管理

    项目PMP之十三--相关方管理   一.定义: 核心理念: 每个项目都有相关方,他们会受项目的积极或消极影响,或者能对项目施加积极或消极的影响. 以相关方满意度作为项目目标进行识别和管理,并保持沟通, ...

  4. mysql数据库指定ip远程访问(设置远程连接),赋权操作

    mysql数据库指定ip远程访问(设置远程连接) 远程访问mysql报错,ip不允许链接的情况:错误号码1045Access denied for user '用户名' @'数据库地址' (using ...

  5. 【译】使用 Visual Studio Profiler 进行基准测试

    在 Visual Studio 17.13 预览版中,我们发布了更新的 BenchmarkDotNet 诊断器,允许您使用性能分析器中的更多工具来分析基准测试.有了这个变化,可以非常快速地挖掘 CPU ...

  6. K8s 灰度发布实战:通过 Ingress 注解轻松实现流量分割与渐进式发布

    在现代微服务架构中,应用的更新和发布是一个高频且关键的操作.如何在不影响用户体验的前提下,安全.平稳地将新版本应用推送到生产环境,是每个开发者和运维团队必须面对的挑战.灰度发布(Gray Releas ...

  7. uni-app之页面跳转(点击按钮进行页面跳转)

    001==>点击按钮进行页面跳转 <view class="" @tap="gotoLunBo"> 去轮播页 </view> // ...

  8. 亮相CCF中国软件大会,天翼云助力千行百业搭上“数字快车”

    中国软件领域规模最大.影响最广的学术会议--CCF中国软件大会(ChinaSoft 2023)在上海国际会议中心开幕.CCF理事长.大会执行委员会荣誉zhu席.中国科学院院士梅宏,上海市经济和信息化委 ...

  9. JWT权限验证,兼容多方式验证

    前言 许久没写博文了,整合下这段时间所学吧,前进路上总要停下来回顾下学习成果. 本篇记录下项目的权限验证,WebApi项目中用权限验证来保证接口安全总是需要的,然而权限验证的方式多种多样,博主在项目中 ...

  10. Google 助手安装

    转自:https://www.jianshu.com/p/6086ec29c173 今天这篇推送可能是很多人都需要的,因为它能帮助你无阻碍的访问Google.Google scholar.Gmail. ...