述
在我们日常的书写代码中,经常使用到float:left/right和position:absoulte/fixed,我们都知道这几个CSS样式都能使HTML中的元素脱离文档流(normal-flow),但是他们脱离文档流之后的效果是否相同呢?
文档流与文本流
文本流,简单来说就是元素内部的一系列的字符的排列规则。
文档流,英文是normal flow,又翻译为常规流,标准流,正常流,普通流等。
文档流指的是HTML中元素在计算布局排版的过程中,所有处于文档流中的元素会自动地从左到右(非块级元素),从上到下(块级元素)的排列规则。
元素在排版中的定位类型分为三种:
(1)文档流:块级格式化的块级盒子, 行内格式化的行内盒子以及相对定位的块级盒子和行内盒子
(2)浮动(float)
在HTML中,有一个很重要的理论:块元素和行内元素。在CSS中极其重要的一个理论——CSS盒子模型。 在“CSS盒子模型”理论中,页面中的所有元素都可以看成一个盒子,并且占据着一定的页面空间。
一个页面由很多盒子组成,这些盒子之间会互相影响,因此掌握盒子模型需要从两个方面来理解:一是理解单独一个盒子的内部结构(往往是padding),二是理解多个盒子之间的相互关系(往往是margin)。
盒模型指的是网页元素的结构。当指定一个元素的宽度或高度时,便设置了元素内容的尺寸,可以把每个元素都看成一个盒子,盒子模型是由4个属性组成,号称“盒尺寸四大家族”:
此外,在盒子模型中,还有宽度(width)和高度(height)两大辅助性属性。记住,所有的元素都可以看成一个盒子 。如下图所示:
内容区是CSS盒子模型的中心,它呈现了盒子的主要信息内容,这些内容可以是文本、图片等多种类型。内容区是盒子模型必备的组成部分,其他3个部分都是可选的。 内容区有3个属性:width、height和overflow。使用width和height属性可以指定盒子内容区的高度和宽度。在这里注意一点,width和height这两个属性是针对内容区content而言的,并不包括padding部分。 当内容过多,超出width和height时,可以使用overflow属性来指定溢出处理方式。
内边距,指的是内容区和边框之间的空间,可以看成是内容区的背景区域。padding属性接受长度值或百分比值,但不允许使用负值。 关于内边距的属性有5种:padding-top、padding-bottom、padding-left、padding-right,以及综合了以上4个方向的简写内边距属性padding。使用这5种属性可以指定内容区与各方向边框之间的距离。
因为CSS中默认的box-sizing是content-box,所以使用padding会增加元素的尺寸。
.box {
width: 80px;
padding: 20px;
}
如果不考虑其他CSS干扰,此时.box元素所占据的宽度就应该是120像素(80px+20px×2),这其实是不符合现实世界的认知的,人们总是习惯把代码世界和现实世界做映射,因此,新人难免会在padding的尺寸问题上踩到点坑。这也导致很多人乐此不疲地设置box-sizing 为border-box,甚至全局设置。
外边距,指的是两个盒子之间的距离,它可能是子元素与父元素之间的距离,也可能是兄弟元素之间的距离。外边距使得元素之间不必紧凑地连接在一起,是CSS布局的一个重要手段。 外边距的属性也有5种:margin-top、margin-bottom、margin-left、margin-right,以及综合了以上4个方向的简写外边距属性margin。 同时,CSS允许给外边距属性指定负数值,当外边距为负值时,整个盒子将向指定负值的相反方向移动,以此产生盒子的重叠效果,这就是传说中的“负margin技术”。
只有元素是“充分利用可用空间”状态的时候,margin才可以改变元素的可视尺寸。比方说,如下CSS:
.header {
width: 160px;
margin: 0 -5px;
}
此时元素宽度还是160像素,尺寸无变化。因为只要宽度设定,margin就无法改变元素尺寸,这和padding是不一样的。
但是,如果是下面这样的HTML和CSS:
<div class="header">
<div class="son">
</div></div>
.header { width: 160px; }
.menu { margin: 0 -5px; }
则.menu元素的宽度就是165像素了,尺寸通过负值设置变大了,因为此时的宽度表现是“充分利用可用空间”。
只要元素具有块状特性,无论有没有设置width/height,无论是水平方向还是垂直方向,即使发生了margin合并,margin对外部尺寸都着着实实发生了影响。
块级元素的上外边距(margin-top)与下外边距(margin-bottom)有时会合并为单个外边距,这样的现象称为“margin合并”。
margin:auto的填充规则如下。 (1)如果一侧定值,一侧auto,则auto为剩余空间大小。 (2)如果两侧均是auto,则平分剩余空间。
在CSS盒子模型中,边框与我们之前学过的边框是一样的。 边框属性有border-width、border-style、border-color,以及综合了3类属性的简写边框属性border。
border属性总是能解决很多棘手的问题,在在图形构建、体验优化以及网页布局这块几大放异彩,,同时保证其良好的兼容性和稳定性。下面我们一起看看border都有哪些精彩的特性表现。
我们通过比对笔记本、手机发现,虽然两台设备的尺寸差异很大,但是边框的大小相比而言就可以忽略不计了。边框是不会因为设备大就按比例变大的。因此,如果支持百分比值,是不是就意味着设备大了边框也跟着变大?有一张图片,大片区域都是白色的,在白底背景上和文字混在一起,就会有一片奇怪的空白区域,会让人产生没对齐的假象,此时,我们给这张图片套个1px灰色边框,区域就明显了,对吧!设计的初衷就是为了这么点儿事,没有需要使用百分比值的场景。于是,综合这两点,造成了border-width不支持百分比值。
border属性可以轻松实现兼容性非常好的三角图形效果,为什么可以呢?其底层原因受inset/outset 等看上去没有实用价值的border-style属性影响,边框3D效果在互联网早期其实还是挺潮的,那个时候人们喜欢有质感的东西,为了呈现逼真的3D效果,自然在边框转角的地方一定要等分平滑处理,然后不同的方向赋予不同的颜色。然后,这一转角规则也被solid类型的边框给沿用了。因此,我们就不难理解下面的4色边框的表现了:
div {
width: 10px; height: 10px;
border: 10px solid;
border-color: #f30 #00f #396 #0f0;
}
运行一下上面的代码看一下效果吧!
这是提高用户体验的一个小技巧,尤其在移动端,我们的操作工具一般就是我们的手指,但是,我们的手指粗细可以媲美胡萝卜,而屏幕尺寸就那么点儿,如果我们正在走路,则一些精致的图标和按钮很容易就点不中甚至误点。
稳妥的方法是外部再嵌套一层标签,专门控制点击区域大小。如果对代码要求较高,则可以使用padding或者透明border增加元素的点击区域大小。
现实生活中看到的盒子,有正方形、长方形、圆柱形等,依据形状特点,可包裹不同物件。CSS中的盒子虽然没有那么多的形状,但在视觉呈现上不同类型的盒子还是会有很大的不同,有的盒子要占据一行,有的盒子不能定义外边距、宽度和高度,有的盒子宽度和高度能自适应。CSS中用display指定盒类型(即框类型),常用的有 block(块)、inline(行内)、inline-block(行内块)、table(表格),以及CSS3新增的flexbox(伸缩盒)。 HTML 元素只有两种默认的盒类型,即块级元素(block-level element)和行内元素(inline-level element)。其中行内元素不可定义CSS属性width、height、上下margin和上下padding。常用的span和div分别是行内元素和块级元素。
由此可见,需要掌握的内容太多,要想学会所有布局相关的技术不太现实。高级的布局话题基于文档流和盒模型等概念,这些是决定网页元素的大小和位置的基本规则。因此理解和掌握如何设置元素的大小和位置至关重要。
为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。关注【码农洞见】,一起学习和交流吧!
到前端就必须要提到HTML标签,这也是前端技术中最为突出的一点,本篇文章旨在为小白快速了解HTML技术,首先需要小白准备的东西是NOTEPAD++,希望小白能够自己动手一步步去敲,否则看再多的文章,也是无济于事。
言归正传,首先大家可以先看一段简单的HTML代码
Test.html文件
<!DOCTYPE><!--html华春网络有限责任公司-->
<html> <!--html华春网络-->
<head><!--华春网络-->
<meta charset="utf-8"><!--utf-8编码-->
<title>html华春网络技术</title><!--页面标题-->
<head>
<body><!--网页显示标签,body标签内的信息都会在页面中显示-->
<h1>华春网络HTML技术</h1><!--文本标题标签-->
<imgsrc="tupian.jpg"><br><!--图片标签,br是换行标签-->
<input type="text" value="华春网络"><br><!--输入框标签-->
<button type="submit" >华春</button><!--按钮标签-->
</body>
</html>
下面便是效果图。
小白可以仿照上面的代码进行自己敲打,体验一下整个过程,接下来我们来讲述一下HTML可以实现哪些功能:1:我们可以设置标题,字号,文本的颜色。2:实现页面的跳转4:图片,视频的展示。
HTML入门
首先我们可以看到html是由无数个这种<标签>内容</标签>标记组成的,因此html称为标记语言强调内容。而<a href=”http://www.hauchunnet.com”>超链接</a>中的href就是a标签的属性值。
<html><!--HTML文档标记,位于网页的最前和最后-->
<head> <!--HTML文件头标记,用来包含文件的基本信息,内容不会再浏览器中显示-->
<!--头部内容-->
</head>
<body><!--网页真正显示的内容都在body标签中-->
<!--网页内容-->
</body>
</html>
接下来给大家总结一些常见HTML标签:<div>分区显示、<link>链接一个外部样式表、<h1>-<h6>标题、<a>超链接、<img>图片、<buton>按钮、<input>输入框、<br>换行、<p>换段落、<center>居中、<ul>无序列表、<ol>有序列表、<hr>水平分割线、<table>表格。
到了这一部,相信大家已经对HTML有了以一定的了解,当我们掌握了这一些基本就可以写出自己想要的页面,但是距离真正的网页还差很远。我们还需要进行HTML排版,下一期内容我们会着重为大家讲解HTML如何排版
感谢CSDN博主微坏提供部分资源。陕西华春网络科技股份有限公司
*请认真填写需求信息,我们会在24小时内与您取得联系。