CSS盒子模型

盒子模型

介绍


盒子模型又叫框模型(box-modlecss),css处理网页时,它认为每个元素都包含在一个不可见的盒子里。我们对网页的布局就等于是在摆放盒子。一个盒子我们分为:内容区content、内边距padding、边框border、外边距margin。

  1. 内容区content大小设置:通过width、heigth来设置宽度以及高度。
  2. 边框border的样式设置:需要指定三个种类样式,缺一不可。
  • border-width:边框宽度,可以分别指定不同的边的粗细,从上面开始顺时针顺序设置,用空格隔开。还有其他的设置方式参考W3School离线手册。
  • border-color:边框颜色,也可以分别设置不同边的颜色;
  • border-style:边框样式,也可以分别设置不同边的颜色;
  • border:简写样式,直接设置多个属性,没有顺序要求,border只能同时指定4个边的样式。可以用border-xxx分别设置每条边。
  1. 内边距padding:可以通过四个属性设置距离.元素的背景颜色会延伸到内边距中。
  • padding-top:
  • padding-right:
  • padding-bottom:
  • padding-left:
    注意:盒子的大小由盒子的内容区、内边距、外框共同决定的。
  1. 外边距margin:
  • 外边距会影响到盒子的位置。有四个方向的边距:margin-top…由于页面中的元素都是靠左靠上摆放,当我们设置上和左边外边距会导致盒子位置发生改变,而设置右边与下外边距会改变其他盒子的位置。
  • 外边距也可以指定负数。就是会往反方向移动。
  • margin的值还可以设置为auto,一般只设置给水平方向的。左外边距设置为auto时会将外边距设置为最大值。垂直方向的话默认就是0.
  • 外边距也可以使用简写属性margin。
  • 垂直外边距的重叠:在网页中垂直方向的相邻外边距会发生外边距重叠。也就是兄弟元素之间的相邻外边距会取最大值而不是取和。
  • 取出浏览器默认的margin与padding样式。*{margin:0;padding:0}

内联元素盒模型


  1. 内联元素不能设置width和heigth。
  2. 内联元素可以设置水平方向的内边距,也支持垂直方向的内边距设置,但是垂直方向不会影响页面的布局。(就是不会把其他元素挤掉,而是覆盖)
  3. 内联元素可以设置边框,但是垂直边框还是不会影响布局,水平的会。
  4. 内联元素支持水平方向外边距,但是不会重叠,而是取和。不支持垂直方向的外边距。

display和visiblity


  1. display:修改元素的类型 ,可选值:
  • inline–将一个元素作为内联元素显示;
  • block–将一个元素设置为块元素显示;
  • inline-block-将一个元素设置为行内块元素(既有行内元素特点又有块元素特点,既可以设置宽高又不会独占一行);
  • none–不显示元素,并且元素不会再页面中继续占有位置。
  1. visiblity:用来设置元素的隐藏和显示的状态。可选值:
  • visible(默认值):元素会默认在页面显示。
  • hidden:元素会隐藏(不可见),但还是占据页面的位置。

overflow


  1. 子元素默认存在在父元素的内容区中的,理论上子元素的大小可以等于父元素内容区的大小,但是如果子元素大小超过了的话会在父元素以外位置显示,超出的内容称为溢出的内容。父元素默认将溢出内容显示出来。
  2. 通过overflow可以设置子元素溢出的内容。可选值:
  • visible:默认值,子元素不会对溢出内容做任何处理。
  • hidden:溢出的内容会被修剪掉,不会显示出来。
  • scorll:溢出内容会修剪,但是会有一个滚动条可以滚动以查看完整内容。该属性不论内容是否溢出,都会在水平和竖直方向添加滚动条。
  • auto:根据需求自动添加滚动条。比scoll更智能。

文档流


  1. 一个网页就是一个文档。文档流处在网页的最底层,它表示的是一个页面中的位置,我们所创建的元素默认都处在文档流中。
  2. 元素在文档流的特点:
  • 块元素:独占一行,自上向下排列。块元素在文档流中默认宽度是父元素的100%,高度默认被内容撑开,它的高度由它的内容决定。
  • 内联元素:只占自身大小,默认自左向右排列。文档六中内联元素的宽度和高度默认都被内容撑开。
  1. float:使元素浮动,从而脱离文档流,可选值:
  • none:默认值,元素默认在文档流中排列。
  • left:元素会立即脱离文档流,向页面左侧浮动。
  • right:元素会立即脱离文档流,向页面右侧浮动。
  1. 当为一个元素设置浮动以后,元素会立即脱离文档流,它下面的元素会立即占据它之前的位置。
  2. 元素浮动以后,会尽量向元素的坐上或右上漂浮。直到遇到父元素的边框或者其他浮动元素。如果浮动元素上面是一个没有浮动的块元素,则浮动不会超过该块元素。
  3. 浮动元素不会超过它的兄弟元素,最多平齐
  4. 浮动的元素不会遮盖文字,文字会自动环绕浮动元素周围。
  5. 文档流中,子元素的宽度默认占父元素的全部,脱离文档流之后,块元素的高度和宽度都会被内容撑开(在没有设置宽高的前提下)。而内联元素脱离文档流之后会变成块元素。这时候可以设置宽高了。且宽高会被内容撑开(一旦脱离文档流之后就都是块元素了)。
  6. 在文档流中,父元素的高度默认是被子元素撑开的。但是当子元素设置为浮动之后,子元素脱离文档流后导致父元素没有子元素的高度支撑,导致高度坍塌,并且父元素下面的所有元素都会向上移动,导致整个页面布局错乱。**所以开发中一定要避免出现高度塌陷。**解决问题的方法有下:
  • 将父元素高度固定,但是这样高度就不能自适应子元素的高度,所以一般我们不建议用这种方法。
  • 根据W3C标准,在页面中元素都有一个隐含的属性叫做Block Formatting Context,简称BFC,该属性默认关闭的。当开启元素BFC之后,元素将会有如下特性:

1.父元素的垂直外边距不会和子元素重叠;
2.开启BFC的元素不会被浮动元素所覆盖;
3.开启BFC的元素可以包含浮动的子元素;

  • 开启BFC的方法有:1.设置元素浮动(但是会导致父元素宽度丢失,而且也会导致下面的元素上移,不能解决高度塌陷问题);2.设置元素绝对定位(效果同1);3.设置元素为inline-block(可以解决问题,但是宽度还是会丢失,也是不推荐使用);4.将元素的overflow设置为一个非visible的值(这样副作用最小,推荐使用这种)。
  • IE6是没有BFC的,关于IE6的解决方法请参阅其他资料,关键字haslayout。
  1. 清除浮动:有时候我们希望清除掉其他元素浮动对当前元素产生的影响,这是可以使用clear属性来完成此功能,clear可以用来清除其他浮动元素对当前元素的影响。可选值:
  • none:默认值,不清除浮动的影响
  • left:
  • right:
  • both:清除对他影响最大的那个浮动带来的影响。
  1. 我们还可以通过清除浮动的效果来解决高度塌陷的问题。直接在高度塌陷的父元素的最后添加一个空白的块元素(div就行),由于这个div并没有浮动,他是可以撑开父元素的高度,我们再为其添加clear属性。就可以通过这个空白div撑开父元素的高度。不完美的是这样会在页面中添加多余的结构。(这是W3C推荐的方式,IE6支持)
  2. 我们还可以通过after伪类向元素的最后添加一个空白的元素,然后对其进行清除浮动,这样做和添加一个div的原理一样,可以达到同一个效果,而不会在页面中添加多余的div。(最推荐使用,IE6不支持after伪类)。
在IT领域,尤其是地理信息系统(GIS)中,坐标转换是一项关键技术。本文将深入探讨百度坐标系、火星坐标系和WGS84坐标系之间的相互转换,并介绍如何使用相关工具进行批量转换。 首先,我们需要了解这三种坐标系的基本概念。WGS84坐标系,即“World Geodetic System 1984”,是一种全球通用的地球坐标系统,广泛应用于GPS定位和地图服务。它以地球椭球模型为基础,以地球质心为原点,是国际航空和航海的主要参考坐标系。百度坐标系(BD-09)是百度地图使用的坐标系。为了保护隐私和安全,百度对WGS84坐标进行了偏移处理,导致其与WGS84坐标存在差异。火星坐标系(GCJ-02)是中国国家测绘局采用的坐标系,同样对WGS84坐标进行了加密处理,以防止未经授权的精确位置获取。 坐标转换的目的是确保不同坐标系下的地理位置数据能够准确对应。在GIS应用中,通常通过特定的算法实现转换,如双线性内插法或四参数转换法。一些“坐标转换小工具”可以批量转换百度坐标、火星坐标与WGS84坐标。这些工具可能包含样本文件(如org_xy_格式参考.csv),用于提供原始坐标数据,其中包含需要转换的经纬度信息。此外,工具通常会附带使用指南(如重要说明用前必读.txt和readme.txt),说明输入数据格式、转换步骤及可能的精度问题等。x86和x64目录则可能包含适用于32位和64位操作系统的软件或库文件。 在使用这些工具时,用户需要注意以下几点:确保输入的坐标数据准确无误,包括经纬度顺序和浮点数精度;按照工具要求正确组织数据,遵循读写规则;注意转换精度,不同的转换方法可能会产生微小误差;在批量转换时,检查每个坐标是否成功转换,避免个别错误数据影响整体结果。 坐标转换是GIS领域的基础操作,对于地图服务、导航系统和地理数据分析等至关重要。理解不同坐标系的特点和转换方法,有助于我们更好地处
### CSS 盒子模型详解 CSS盒子模型是网页设计和布局中的核心概念之一。它描述了HTML文档结构化的方式以及如何通过样式控制这些元素的空间分配。 #### 1. 盒子模型的组成部分 每个HTML元素都可以看作是一个矩形盒子,该盒子由以下几个部分组成[^1]: - **内容 (Content)**: 这是盒子的主要区域,用于放置文本或其他媒体内容。 - **内边距 (Padding)**: 它位于内容边缘与边框之间的空白区域,用来增加内容周围的可读空间。 - **边框 (Border)**: 边框围绕着内边距和内容,可以设置不同的宽度、颜色和风格来定义边界线。 - **外边距 (Margin)**: 外边距是在边框之外的一片透明区域,用于分隔相邻的盒子并防止它们相互接触。 #### 2. 盒子模型属性 以下是几个重要的盒子模型相关属性及其功能说明: ##### 2.1 `width` 和 `height` 属性 这两个属性分别设定盒子的内容区宽度和高度。需要注意的是,默认情况下,指定的尺寸仅适用于内容区域而不包括 padding, border 或 margin 的值[^2]。 ##### 2.2 `border` 边框属性 可以通过此属性自定义边界的外观,比如粗细、线条样式(实线、虚线等)以及颜色[^3]。 ##### 2.3 `padding` 内边距 用于调整内部填充量,即内容与其周围边框间的距离。它可以单独应用于上、右、下、左各个方向或者统一应用到所有侧面[^1]。 ##### 2.4 `margin` 外边距 负责管理与其他元素之间外部间距的部分。同样支持多向配置,并且当两个垂直 margins 邻近时会发生折叠现象——取两者较大者作为最终间隔[^2]。 ##### 2.5 盒子模型占位计算 总的实际占用面积等于 content area 加上其四周的所有附加层厚度之和。例如给定一个具有固定 width/height 值为100px 的 div 元素加上额外参数如下所示,则实际渲染出来的大小将是 `(100 + 5 + 5 + 20 + 20)` px × `(100 + 5 + 5 + 20 + 20)` px: ```css div { width: 100px; height: 100px; border: 5px solid black; /* 上下左右均为5像素 */ padding: 20px; /* 各侧均设为20像素 */ } ``` #### 3. box-sizing 属性 为了简化复杂布局的设计过程,引入了一个名为 `box-sizing` 的新特性。默认行为遵循传统标准模式 (`content-box`) ,其中声明的 dimensions 不含 paddings/borders;而另一种选项叫做 alternate model(`border-box`) 可让开发者更直观地操作整体尺寸因为此时所指代的就是整个可视范围内的确切数值. ```css /* 使用 border-box 来改变盒模型的行为方式*/ * { box-sizing: border-box; } ``` 以上便是关于CSS盒子模型的一些基本介绍及常见应用场景下的实现方法论探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值