1小时学会CSS-下

news2024/12/23 13:00:38

今天给大家分享的内容包含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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python视图1】networkx操作图

一、说明 数据可视化需要显示种种数据&#xff0c;matplotlib负责曲线类画图&#xff0c;然而类似于图论的操作用什么方法。这里用networkx程序包完成。本文专门介绍这种程序包的用法。 二、生成图&#xff08;Creating a graph&#xff09; 2.1 创建一个没有节点和边的空图。…

C++进阶——二叉搜索树BST

C进阶——二叉搜索树BST 其实应该是二叉树内容的进阶版本&#xff1a; 二叉树在前面C数据结构阶段已经讲过&#xff0c;本节取名二叉树进阶是因为&#xff1a; map和set特性需要先铺垫二叉搜索树&#xff0c;而二叉搜索树也是一种树形结构二叉搜索树的特性了解&#xff0c;有…

十七、WLAN概述

文章目录 前言一、WLAN 网络演化过程二、IEEE 802.11主要标准三、WLAN 解决方案四、模拟器登录AC1、配置AC2、配置云3、登录 前言 无线局域网WLAN&#xff08;Wireless Local Area Network&#xff09;是一种利用无线技术实现主机等终端设备灵活接入以太网的技术&#xff0c;它…

hadoop集群部署常见问题解决

1、权限 •Permission denied&#xff08;权限被拒绝&#xff09; Hadoop的运行日志在$HADOOP_HOME/logs内 也可以查看日志排错 只要出现Permission denied就是权限问题 hadoop安装文件夹或/data文件夹&#xff0c;未被授权给hadoop用户&#xff0c;所以无权限操作 2、环境变…

在金融领域使用机器学习的 9个技巧

机器学习已经倍证明可以预测结果和发掘隐藏的数据模式。但是必须小心使用&#xff0c;并遵循一些规则&#xff0c;否则就会在数据的荒野中徘徊而无所获。使用机器学习进行交易的道路充满了陷阱和挑战&#xff0c;只有那些勤奋认真地遵循规则的人才能从中获得收益。下面是一些技…

如何建立到NAS中新增容器的ssh连接

注&#xff1a;首先需按照教程建立Zerotier连接&#xff0c;然后进入新建的nginx镜像&#xff0c;为root用户建立密码。 查看容器类型 Debian 系镜像: cat /etc/issue Redhat 系镜像: cat /etc/redhat-release Alpine 系镜像: cat /etc/os-release 安装并启动ssh apt-get …

SHELL环境变量和引用

目录 1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 a.安装邮件服务 b.创建脚本对要求进行设计 c.编辑配置文件 ​编辑d.做计划任务 ​编辑 e.进行测试 2、判断web服务是否运行…

POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

记录-实现深拷贝的四种方式

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 概念介绍 深拷贝&#xff1a;在堆内存中重新开辟一个存储空间&#xff0c;完全克隆一个一模一样的对象 浅拷贝&#xff1a;不在堆内存中重新开辟空间&#xff0c;只复制栈内存中的引用地址。本质上两个…

Python双向循环链表的操作

目录 一、双向循环链表 双向循环链表图 二、双向循环链表的操作 1、判断链表是否为空 2&#xff0c;链表长度 3&#xff0c;遍历整个链表 4&#xff0c;在链表头部添加元素 5、链表尾部添加元素 6&#xff0c;在指定位置插入元素 7&#xff0c;修改指定位置的元素 8&a…

被裁后找不到工作,本质上是因为原来的能力就配不上高薪,如果技术好,根本不怕被裁,相当于白送n+1!...

被裁员后&#xff0c;能要求公司补缴公积金吗&#xff1f; 一位网友问&#xff1a; 被裁员了&#xff0c;要求公司把历史公积金全部足额缴纳&#xff0c;现在月薪2.3万&#xff0c;但公司每个月只给自己缴纳300元公积金&#xff0c;结果一次补了二十多万&#xff0c;一次性取出…

进程等待、进程替换

目录 进程等待 waitpid函数 wait函数 进程替换 进程等待 进程等待的意义 如果子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏。 另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff…

5.5G的关键一跳!将数智未来照进现实

编辑&#xff1a;阿冒 设计&#xff1a;沐由 作为数字时代的三大思想家之一&#xff0c;乔治吉尔德在1993年就指出&#xff0c;未来25年内主干网的带宽每6个月增长一倍&#xff0c;其增长速度是摩尔定律预测的CPU增长速度的3倍。 这就是著名的吉尔德定律&#xff08;Gilder’s …

Qt开源项目:校医院远程诊断系统介绍

本人研一参考技术书籍开发的一款Qt程序&#xff0c;两年前已上传到GitHub&#xff0c;有兴趣的同学可以去看看。可能之前上传的项目不够完整&#xff0c;导致有一些同学没有在自己的环境上跑通&#xff0c;所以今天将整个工程都重新上传一遍&#xff0c;包括使用到的opencv的动…

Lambda 表达式中的变量必须是 final 的吗

如果我们定义了一个变量&#xff0c;想要在Lambda 表达式中修改变量的值&#xff0c;编译器会发出警告&#xff1a;“variable used in lambda expression should be final or effectively final”。 比如对一个list进行遍历&#xff0c;遍历的过程中对i进行操作 Java 规范中…

浅理解 ES6 新增的数组方法Array.of() 和 Array.from()

文章目录 &#x1f4cb;前言&#x1f3af;Array.of() 方法&#x1f3af;Array.from() 方法&#x1f3af;二者区别&#x1f4dd;最后 &#x1f4cb;前言 在前端开发的面试过程中&#xff0c; ES6 新增是一个很常见的考点&#xff0c;比如说箭头函数、模板字符串、let 和 const …

宁波汽车运输集团:引入二维码技术,实现车辆精细化管理

宁波市汽车运输集团有限公司是宁波市道路货运业的龙头企业之一&#xff0c;主营全国各地的普通货运以及货物专用运输&#xff08;集装箱、罐式&#xff09;。 作为汽车运输集团&#xff0c;车辆的安全问题极其重要。因此&#xff0c;公司设备安全部门要求每个驾驶员在作业之前…

netfilter filter表(二)

这次继续分析filter表&#xff0c;不同与之前的分析方式&#xff0c;这次通过将内核中的数据打印出来&#xff0c;对比结构关系图来分析。这是本次分析涉及的几个数据结构&#xff1a; struct xt_table { struct list_head list; /* What hooks you will enter on */ unsigned …

4、SpringBoot接收和响应xml报文请求

背景 平时开发的接口&#xff0c;基本是使用 json 格式的请求报文。然而&#xff0c;有时候也避免不了有 xml 报文请求的场景&#xff0c;最近就遇到了这种情况&#xff0c;在此记录下。另外&#xff0c;工程中使用的是 controller-service……这种结构。 xml请求报文&#x…

链表(JS实现)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 链表链表的分类创建链表LinkedList类的骨架 实现链表的方法push尾部添加元…