1小时学会CSS-下

2023-11-11


今天给大家分享的内容包含CSS 盒子模型,CSS 标准布局, CSS 浮动布局 , 并以案列进行详细说明。


一、CSS 盒子模型

CSS 将所有元素都当成盒子,CSS布局其实就是如何堆放盒子。

组成: content(内容)—>padding(内边距)—>border(边框)—>margin(外边距)


1、content 内容区域

  • 设置content区域,文字添加到此区域

  • 盒子嵌套时,若内盒子不设置大小,则自动根据外盒子调节

#box{    

 
        width: 200px;height: 200px;background:red;
 }

2、padding 内边距, 即内容与边框距离

  • padding: 20px 输入一个值则为上下左右间距
  • padding: 20px 30px; 输入两个值则为上下,左右间距
  • padding: 10px 20px 30px 40px; 输入四个值则为上,右,下,左间距
  • 此外,还能通过 padding-方向 设置单边
#box{
      
        padding: 50px;

}

3、border 边框

  • 边框,默认和背景色相同
#box{
   
    
       border: 20px blue solid;      
}     

4、margin 外边框,即该盒子和其他区域的间距

  • 可以为负数
  • 可以通过margin-方向 设置单边
  • 可以设置为0 auto自适应居中
  • 注:两个盒子的margin属性在上下方向不会累加,而是以两者间大的值为两盒子间间距
  • 注:当盒子嵌套时,在内盒子添加margin-top属性会使外盒子也具有此margin-top属性
#box{   
     margin: 0 auto;
}          

完整示例

<style>
    #box{
        width: 100px;height: 100px;background:yellow;
        padding: 20px;
        border: 20px blue solid;
        margin: 0 auto;
        box-sizing: content-box;
    }
</style>
 <div id="box"> 盒子模型 </div>

在这里插入图片描述


二、CSS 标准布局


所谓的标准布局,就是按照元素在标准流中的特点进行布局,即: block( 块级元素)、inline (行内元素)、inline-block (融合行内于块级)。
  • 块级元素独占一行

  • 行内元素、行内块元素共享一行


1、block( 块级元素)

常见的block( 块级元素)有: div 、p、ul 、li 、h1 …h6


block特点:

  • 独占一行 ,在不设置自己宽度时,块级元素默认宽度与父容器相同

  • 支持所有样式

  • 所占区域是矩形区域,可以改变元素的 width 、height


2、inline (行内元素)

常见的inline (行内元素) 有:span, mg, a, em, strong

inline 特点

  • 可以与其他行内元素共享一行,不会独占一行

  • 不能改变元素的 width 、height ,大小由内容决定

  • 可以使用padding上下左右都有效,margin只有left和right产生边距效果,但是top和bottom就不行

  • 内联标签之间有间隙,由换行产生


3、inline-block (融合行内于块级)

inline-block特点

  • 不独占一行的块级元素
  • 存在间隙问题,产生原因是换行引起(空白符)

如图:

在这里插入图片描述


去除空隙的方法
  对父元素添加{font-size:0},即将字体大小设为0,那么空白符也变成0px,从而消除空隙。
  这种方法已经可以兼容各种浏览器。


4、标签嵌套规范

  • 块可以嵌套内联
  • 块不一定可以嵌套块
  • 内联不能嵌套块(< a >除外)

5、溢出操作

当一个块中内容过多,溢出块的时候,可以使用overflow 操作溢出内容

<style>
    div{
    width: 200px;
    height: 200px;
    border: 2px black solid;
    overflow: auto;              /* hidden:隐藏 scroll:出现滚动条 auto:根据情况出现滚动条*/
    }
</style>
<div>
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
    溢出操作溢出操作溢出操作溢出操作
</div>


在这里插入图片描述


5、在标准布局方式的优缺点:

  • 在标准布局方式中,块级元素很难被有效利用起来,因为其独占一行的特性,所以其只能进行垂直方向的布局。

  • 行内元素、行内块元素可以进行水平方向布局,但是它们的内容大部分只能是文本,少量的如td中支持放入其他行内块元素,但是并不适合进行通用布局。

  • 行内元素、行内块元素之间水平方向会因为代码空格,换行产生间隙,行内块元素垂直方向存在默认的baseline对齐底部间隙,这给水平布局带来额外的麻烦,而td不存在这些问题。


其实,从本质上来看,标准布局的短板在于其水平方向上的布局只能使用行内、行内块元素,而行内、行内块元素由于各种问题,并不适用于布局,只适用于作为内容。

而块级元素并不存在行内和行内块元素的这些问题,所以如果块级元素也能用于水平方向布局,那么就完美了。


三、CSS 浮动布局


1、浮动布局定义

为了解决标准布局中,块级元素不能在水平方向布局的问题,即多个块级元素不能共享一行的问题,CSS提出了浮动的概念。

所谓浮动,即为元素设置float样式,float样式有如下值:

left 左浮动

right 右浮动

none 无浮动(元素默认浮动,无浮动)


一旦元素设置了float:left或者float:right,则元素就会脱离标准流,然后进入浮动流。所谓浮动流,我们可以理解

其为处于标准流图层之上的另一个图层。


而一旦元素脱标后,元素就会释放其在标准流中的占据的位置,这将导致标准流中脱标元素之后的元素前据。

在浮动流中,多个块级元素是可以共享一行的。


如图:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


上例中,box1box3设置了float:left,所以它们脱标进入浮动流,并共享一行,而box1box3脱标后,它们在标准流中的位置就会被释放,此时box4这个依旧在标准流中的元素就会进据被释放的位置。

所以上例中,box4实际上有一部分被box1~bxo3遮盖住了,因为浮动流在标准流之上。


2、浮动元素特点

  • 浮动元素之间共享一行

  • 浮动元素的width、height默认由元素内容决定,而不是由父级决定

  • 浮动元素支持通过width、height、padding、border、margin来指定盒子内容区、内外边距、边框大小

  • 浮动元素之间不会因为空格、换行产生空隙,浮动元素之间是紧密贴合的

  • 标准流中的行内元素、行内块元素、块级元素加了浮动后,都会变成浮动元素,具备以上浮动元素的特性。

  • 浮动元素的浮动范围只能在其父级元素内部(无论父级在标准流还是在浮动流),并且浮动元素不会压住父级元素的border、padding,父级元素content中的行内元素、行内块元素的内容会自动围绕浮动元素排列。

  • 浮动元素本身就处于父级元素的content中,如果浮动元素存在兄弟元素:如果兄弟元素也是浮动元素,则前面的兄弟先浮动,后面的兄弟后浮动。

  • 如果兄弟元素是非浮动元素,则浮动元素不会上浮压住前面的非浮动兄弟元素,而浮动元素脱标,会释放占据的标准流位置,所以浮动元素后面的非浮动兄弟会进据释放的位置,从而被浮动元素压住。

总结:浮动元素只会影响浮动元素后面的标准流,不会影响前面的标准流。


3、 浮动带来的问题以及解决方案


(1)、浮动带来的问题:标准流父级容器高度会变成0

一般我们不给标准流中父级容器设定height,而是让容器height自动适配为容器内容的高度,如果此时有一个子级元素发生了浮动,则标准流中的父级容器的高度会变味0。

在这里插入图片描述

原因是:标准流中父级容器的高度是由标准流中子级元素撑开的,当子级元素脱标后,对应标准流中的位置就会被释放,所以标准流中父级容器就没有内容了,此时父级容器的height就为0了。


(2)、标准流父级容器高度会变成0 解决方案

让标准流中父容器变为BFC模式,这样就可以保证父容器中子元素渲染不会影响外界了(即:不会引起父容器高度变化)

有以下方法:


A、元素变为浮动元素,即加float样式(非none)

在这里插入图片描述


B、元素加overflow样式(非visible)

在这里插入图片描述


C、元素变为行内块显示模式

在这里插入图片描述


D、元素变为弹性元素,即加display:flex

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1小时学会CSS-下 的相关文章

  • 仅 IE9_有时_会忽略

    我们正在开发一个大量使用 这是典型的 TYPO3 网站 该网站是在子目录中开发的 稍后将被重新定位到顶级目录 因此我们无法轻易删除 我们的客户告诉我们 有时当她浏览新页面时 她得到的页面内容没有应用布局 我们对此进行了调试 仅在 IE9 中
  • 为什么开发者讨厌 iframe? [复制]

    这个问题在这里已经有答案了 可能的重复 iframe 被认为是 不好的做法 吗 https stackoverflow com questions 362730 are iframes considered bad practice 在与
  • 如何在数据表中colspan rowspan?

    I am trying to use colspan and rowspan attributes with jQuery Datatables where a product sku can span 2 rows and a week
  • 身体动画不流畅

    下面代码中的 spaceShip 在开始按住任何箭头键时移动并不顺利 它移动一步 冻结一瞬间 然后 平稳 地移动 怎样才能让它从一开始就顺利运转 而不是 冻结 My code
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 引导导航栏菜单与文本重叠

    我使用最新版本的引导程序 当我调整屏幕浏览器的大小时 使用小切换按钮下拉导航栏时 导航栏会重叠页面上的文本 而不是向下推页面内容 我已经多次研究过这个问题 我尝试将 padding bottom 放在导航栏上 将 padding top 放
  • 为什么我的列表项项目符号与浮动元素重叠

    我有一个 XHTML Strict 页面 我在其中将图像浮动在常规文本段落旁边 一切都很顺利 除非使用列表而不是段落 列表的项目符号与浮动图像重叠 更改列表或列表项的边距没有帮助 边距是从页面左侧开始计算的 但浮动会将列表项推到右侧insi
  • 来自 HTML5 的 Phonegap Bonjour/Zeroconf 或 Websocket IP 发现

    我正在尝试实现一个 Phonegap HTML5 应用程序 该应用程序连接到 Websocket 服务器 在嵌入式设备中运行 也有 Bonjour 服务 以在家庭网络内交换数据 我想知道使用 Phonegap 检测服务器 IP 的最佳方法
  • Masonry - imagesLoaded - 不是函数

    Masonry and imagesLoaded应加载并正常工作 已经制作了一个类似的网站 并且可以正常运行 我不知道我的问题出在哪里 所以我希望你能看到问题所在 应该是少了点什么 在 Chrome Inspect 中 我收到以下错误 Un
  • 获取 FileReader() 的结果对象

    有什么方法可以在不通过函数的情况下获取 FileReader 的结果对象 我在下面制作了示例代码 HTML br br br div div JS var code lorem ipsum input type file change fu
  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • 暂停除了已激活的玩家之外的所有其他玩家。

    我有这个插件 它可以将不同的样式应用于 html5
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • 使用 CSS 使一行 div 高度相同

    我有一排必须具有相同高度的 div 但我无法提前知道该高度可能是多少 内容来自外部源 我最初尝试将 div 放置在封闭的 div 中并将它们向左浮动 然后我将它们的高度设置为 100 但这没有明显的效果 通过将封闭 div 的高度设置为固定
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • CSS3 信封形状

    正如您可能已经猜到的 该图像是邮件信封形状的一部分 如果可能的话 我想使用 CSS3 创建该形状 我已经制作了其他部分 但这个很棘手 该形状需要两侧都有三角形切口和圆角 大概是 border radius bottom left borde
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

    我目前正在我的笔记本电脑 台式电脑和 Nexus 7 2013 上测试 CSS 媒体查询 除了 Nexus 7 之外 它们在台式机和笔记本电脑上都运行良好 当我更改方向时 除非刷新页面 否则样式不会应用 例如 以纵向模式握住设备时 页面正常

随机推荐

  • 【Linux】浅谈网络协议栈-网桥br0

    目录 1 什么是桥接 2 linux的桥接实现 3 网桥的功能 4 网桥的配置 1 什么是桥接 简单来说 桥接就是把一台机器上的若干个网络接口 连接 起来 其结果是 其中一个网口收到的报文会被复制给其他网口并发送出去 以使得网口之间的报文能
  • 计算机软件研究方法与技术路线,研究方法与技术路线

    研究方法与技术路线 由会员分享 可在线阅读 更多相关 研究方法与技术路线 2页珍藏版 请在人人文库网上搜索 1 1 研究方法1 实地调查法 在凤阳县地区和安徽科技学院附近分别进行调查 实地了解凤阳县中小企业对财会人员的需求及招聘要求 2 问
  • 第38.2节 osg加载大tif-10.20活动直播资源&中秋活动参赛源码

    目录 本节内容 本节内容 根据2021 10 20直播活动的内容 使用VPB处理影像高程的示例 将资源进行打包 里面使用的是VS2019 若使用其它版本的VS 则需要对应的OSG编译包 则在此链接获取 osgChina权威发布 vs各版本第
  • Flutter 自定义单选按钮和自定义复选框

    Flutter 自定义单选按钮和自定义复选框 前言 一 自定义单选按钮 二 自定义复选框 总结 前言 在日常开发中 很多时候系统自带的单选按钮 复选框无法满足我们的需求 那么就需要自定义样式的按钮 本篇文章将记录如何自定义单选按钮 复选框
  • Vue实现Markdown

    前言 本文将介绍如何使用Vue和SpringBoot实现一个Markdown编辑器 其中Vue用于前端 SpringBoot用于后端 实现数据存储和接口调用 项目背景 Markdown是一种轻量级的标记语言 用于简化文本编辑 最初由John
  • 初等数学概论

    author hjjdebug date 2016年 01月 18日 星期一 21 36 50 CST article 初等数学概论 记得高中的哲学书上说的 真理是相对的 没有永恒 绝对的真理 而我们这里讨论的数学 却是永恒绝对的真理 放之
  • Unity中的Debug类调试使用

    UnityEngine Debug Class containing methods to ease debugging while developing a game 该类中包含了一些便于游戏开发时的调试方法 Class Variable
  • The content of element type “configuration“ must match “(properties?,settings?,typeAliases?,typeHand

    注意 每个标签必须按顺序写
  • 有源滤波器治理谐波好在哪

    减小谐波影响应对谐波源本身或在附近采取适当的措施 通常情况下 采用加装滤波器的方式治理谐波 滤波器一般分为无源滤波器和有源滤波器 下面领步 北京 根据多年的实践经验给出一个具体的解决方案 在有谐波问题是 什么样的选择才是最好的 谐波的危害
  • React---使用componentDidUpdate钩子函数判断路由地址是否发生变化

    在组件更新 例如组件的路由更新 后会执行componentDidUpdate钩子函数 componentDidUpdate方法会传入两个参数 prevProps prevState prevProps prevState可以拿到组件更新前的
  • Web3 入门手册:从认知到实践

    如果你也喜欢 Web3 希望在这做些有趣的 有意义的事情 那么我希望这篇文章可以帮助到你 送给想要进入 Web3 或者刚刚进入 Web3 的小伙伴 但是考虑到两点原因 我还是打算把这件事推迟一些时日 一是在各大媒体都鼓吹 All In We
  • 如何将pdf转换成txt?悄悄告诉你3个好用的转换方法

    pdf和txt文档都是我们经常会使用到的文档格式 这两种文档各有各的特点 pdf文档适合用于展示 而txt文档适合用于整理各种文字信息 在面对不同的情况时我们就要使用不同的文档 就比如将纯文字的资料进行搜集的时候 利用txt文档会更方便 而
  • 如何在vue中引入字体

    一 为什么要引入字体 在前端开发中 选用合适的字体往往会极大地提升网站的视觉体验 然而 网页中默认字体的种类和风格有限 且在不同的设备 浏览器上渲染效果不尽相同 因此 很多开发者会选择自定义字体来提升用户体验 二 如何引入字体 1 搜索下载
  • 2020华为杯数学建模总结

    2020研究生数学建模竞赛总结 题目 2020年中国研究生数学建模竞赛B题 降低汽油精制过程中的辛烷值损失模型 一 背景 汽油是小型车辆的主要燃料 汽油燃烧产生的尾气排放对大气环境有重要影响 为此 世界各国都制定了日益严格的汽油质量标准 见
  • linux 套接字文件类型,Linux下的文件类型

    Linux下的文件类型 1 开头 表示普通文件 2 d开头 表示目录文件 3 b开头 表示块设备 4 c开头 表示是字符设备 5 I开头 表示符号链接文件 6 p开头 表示管道文件pipe 7 s开头 表示套接字文件socket root
  • 浅谈BERT/Transformer模型的压缩与优化加速

    作者 姚益武 单位 阿里巴巴集团 研究方向 AI算法与工程架构 前言 BERT Transformer 结构及其变体 已成为自然语言处理 NLP 语音识别 ASR 等领域的主流序列建模结构 并且 相比于卷积操作的局部特征提取能力 以及平移不
  • 【Python】ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any

    一 问题描述 在使用Python的判断语句的时候 data2 data2 Month 11 and data2 Day 11 我的本意是想找出11月11日的数据 运用上面的代码 却得到了报错 报错信息 ValueError The trut
  • [QT编程系列-38]:数据存储 - SQLite数据库存储与操作

    目录 1 SQLite数据库概述 1 1 简介 1 2 SQLite不支持网络连接 1 3 SQLite不需要安装MySQL Server数据库 1 4 SQLite性能 1 5 SQLite支持的数据条目 2 SQLite操作示例 3 Q
  • 找不到插件 ‘org.springframework.boot:spring-boot-maven-plugin:‘问题

    出现pom文件找不到插件 org springframework boot spring boot maven plugin 问题 可能是因为版本没有绑定好 去一级父类依赖找对应的插件版本 在pom文件中加上 把父类的version加到po
  • 1小时学会CSS-下

    今天给大家分享的内容包含CSS 盒子模型 CSS 标准布局 CSS 浮动布局 并以案列进行详细说明 一 CSS 盒子模型 CSS 将所有元素都当成盒子 CSS布局其实就是如何堆放盒子 组成 content 内容 gt padding 内边距