当前位置: 首页 > Web前端 > CSS

前端学习笔记(三)CSS盒模型和CSS定位

时间:2023-03-31 01:40:24 CSS

这两天主要学习了CSS盒模型和CSS定位。学习笔记如下:CSSboxmodelboxmodel也叫盒子模型,其结构如下:W3school的翻译很好。它将margin和padding翻译成outermargin和innermargin以避免混淆。下面对盒模型的结构进行介绍:1.paddinginnermargins:可以按照上、右、下、左的顺序设置,也可以按上、右、下、左的顺序设置。不允许使用负值,可以使用px、em、ex、cm、百分比作为单位。注意:em是元素字体的高度。如果内联文本的当前字体大小没有手动设置,则它是相对于浏览器的默认字体大小。Ex是字母x的高度(Theheightoftheletter"x")。这个高度通常是字体大小的一半。如果内联文本的当前字体大小没有手动设置,则它是相对于浏览器的默认字体大小。如果使用百分比作为单位,则百分比值是相对于父元素的宽度计算的。比如段落的父元素是div元素,padding的百分比值是根据div的宽度计算的。2.border边框:在元素的背景上绘制边框。1)border-style是最重要的属性。因为没有这个属性,就没有边界。一个边框可以定义多种样式,顺序为上、右、下、左。(也可以像border-left-style一样指定某条边)例子:p{border-style:solidsolidsolidnone;}p{border-style:solid;border-left-style:none;}两者是等价的,但是左边要放在后面,否则会被前面设置四边的属性覆盖。2)边框的宽度可以用border-width指定。也可以使用上、右、下、左的顺序,也可以指定单边的宽度(同上样式规则)。很重要:一定要输入border-style属性!否则,该属性默认为none,无论宽度是多少,都视为0(没有边框)。3)边框颜色:border-color。规则和上面两个一样。透明是一种透明的颜色。适用于具有样式和宽度的透明边框。Tips:以上三个边框属性的取值:说明:1)只输入一个值,四个边都有这个值;2)输入两个值,第一个是上下,第二个是左右;3)输入三个值,第一个向上,第二个左右,第三个向下;4)输入四个值,分别是上、右、下、左。3.外边距默认值为0,但浏览器会提供预定的样式。(即段落上下的空行)marginmerge:简单来说就是两个相邻的margin(包括空元素的上下外边框),如果它们之间没有内margin或者border,则会发生合并。(这也是一系列连续段落中段落间隔不大的原因之一)CSS定位和CSS定位相关内容的语言表达有些复杂,所以本章注释大部分直接抄自W3Cschool的CSS教程“CSS定位”一章。有些已经用他们自己的语言进行了处理,这样更通俗易懂。CSS提供定位和浮动属性,允许您构建柱状布局,将布局的一部分重叠在另一部分之上,并完成过去通常需要使用多个表格的任务。定位的基本思想很简单,它允许你定义一个元素的框相对于它的正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。关于盒子:div、h1或p元素通常被称为块级元素。这意味着这些元素显示为一个内容,一个“块框”。相比之下,span和strong等元素被称为“内联元素”,因为它们的内容显示在一行内,或称为“内联框”。您可以更改使用显示属性生成的框的类型。这意味着通过将display属性设置为block,您可以使行内元素(例如元素)表现得像块级元素。也可以通过将display设置为none使生成的元素完全没有框架。这样,该框及其所有内容将不再显示,也不会占用文档中的任何空间。但在一种情况下,即使未明确定义块级元素也会创建它们。当一些文本被添加到块级元素(如div)的开头时,就会发生这种情况。即使文本没有被定义为段落,它也会被视为一个段落:

sometext

Somemoretext.

在这种情况下,该框称为空白块框,因为它不与特定定义的元素相关联。块级元素的文本行也会发生类似的事情。假设有一段包含三行文本。每行文本形成一个未命名的框。不能直接给匿名块或者行框应用样式,因为没有地方可以应用样式(注意lineboxes和inlineboxes是两个概念)。然而,它有助于理解您在屏幕上看到的一切都形成了某种盒子。CSS定位机制:CSS具有三种基本定位机制:正常流定位、浮动定位和绝对定位。除非另有说明,否则所有框均按正常流程放置。也就是说,元素在正常流中的位置由元素在(X)HTML中的位置决定。块级盒子从上到下依次排列,盒子之间的垂直距离由盒子的垂直边距计算。行内框水平排列成一行。它们可以使用水平填充、边框和边距来隔开。但是,垂直填充、边框和边距不会影响行内框的高度。由一行组成的水平框称为行框,行框的高度总是足够大以容纳它包含的所有行内框。但是,设置行高可以增加这个框的高度。以下是定位用到的属性:Position属性(即选择定位机制):Static:元素框架正常生成。块级元素生成一个矩形框作为文档流的一部分,而内联元素创建一个或多个行框放置在它们的父元素中。(简单点说就是不管后面的上下左右值,元素的位置默认不变。)相对:元素框根据输入偏移一定距离,向上,down,left,andright值,并在定位前保持其形状。它原来占据的空间仍然存在。Absolute:元素框完全从文档流中移除,并根据输入的上、下、左、右位置相对于其包含块重新定位。一个元素positioned生成一个块级框,而不管它最初在正常流中生成的框的类型。fixed:元素框的位置和上面的absolute类似,但是它的包含块是窗口本身。Tips:相对定位是正常流定位模型的一部分,因为元素的位置是相对于它在正常流中的位置的。其他属性调整:overflow属性:当元素中的内容超过给定的宽高时,如何显示内容。默认值是visible(内容会渲染在元素框外),其他可选值包括:scroll是固定显示在右边的滚动条。auto是根据内容的长度判断是否显示滚动条。hidden是不显示多余的内容。Clip属性:设置元素的性质。vertical-align:设置元素的垂直对齐方式。z-index属性:元素的上下重叠关系。默认为0,数字越大,值越高。CSS浮动定位:浮动框可以向左或向右移动,直到其外边缘接触到包含框或另一个浮动框的边框。漂浮物不在文档的正常流中,因此文档正常流中的块框表现得好像漂浮物不存在一样。但是有些内容浮动元素不会被覆盖:(见CSDN其他同学的回答)1.浮动元素不会覆盖文字内容2.浮动元素不会覆盖图片内容(因为图片本身也属于文字,你可以看图片是特殊文字)3.浮动元素不会覆盖表单元素(输入框、单选按钮、复选框、按钮、下拉选择框等)相关内容可以看其他同学浮动onsegmenfault关于这方面定位中比较重要的clear属性:Clear属性的值可以是left,right,both,none,inherit。该值表示“框的哪个方向不能紧挨着浮动框”。问题:如果一个块中的所有元素都是浮动的,那么div就是空的,不会占用空间。解决方案1:添加一个新的div并设置为clear。示例:.news{背景色:灰色;边框:实心1px黑色;}.newsimg{浮动:左;}.newsp{浮动:正确;}.clear{clear:两者;

一些文字

方法二:直接给容器div浮动。示例:.news{背景色:灰色;边框:实心1px黑色;向左飘浮;}.newsimg{浮动:左;}.newsp{浮动:正确;}

sometext

在这种情况下,为了防止下一个元素受到影响这个浮动元素,要浮动整个页面,然后在footer中清除。W3Cschool的所有页面都用到了这个技术,已经找到证据了哈哈哈:接下来我要继续学习之前没有学过的html基础知识,然后开始尝试制作静态网页小项目~