HTML 的 元素分析
一一元素分类
常用的块状元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的内联元素有:
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的内联块状元素有:
<img>、<input>
一一块级元素 (block)
块级元素特点:
1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
2、元素的高度、宽度、行高以及顶和底边距都可设置。
3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
a{display:block;}可以将元素显示为块级元素这里对象是a元素,可以使其具有块级元素的特点
一一内联元素 (inline)
内联元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度及顶部和底部边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。
div{ display:inline; }可以将块状元素div转换为内联元素,从而使 div 元素具有内联元素特点
一一内联块状元素 (inline-block)
inline-block 元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度、行高以及顶和底边距都可设置。
提示:下一小节是用视频动画来讲解css中的盒模型。
a{display:inline-block;}可以将a元素设置为内联块状元素
一一盒子模型
块级标签都具备盒子模型的特征
一盒模型—边框(一)
div{ border-width:2px; border-style:solid; border-color:red; }
可简写为div{ border:2px solid red; }
注意:
1、border-style(边框样式)常见样式有:
dashed(虚线)| dotted(点线)| solid(实线)。
2、border-color(边框颜色)中的颜色可设置为十六进制颜色,如:
3、border-width(边框宽度)中的宽度也可以设置为:
thin | medium | thick(但不是很常用),最常还是用象素(px)。
一盒模型—边框(二)
div{border-top/right/left/bottom:1px solid red;}
一次只能为一个方向设置边框,可以输入4次设置4个方向的边框
一盒模型—宽度和高度
盒模型宽度和高度和我们平常所说的物体的宽度和高度理解是不一样的,css内定义的宽(width)和高(height),指的是填充以里的内容范围。
一个元素实际宽度(盒子的宽度)=左边界+左边框+左填充+内容宽度+右填充+右边框+右边界。
div{ width:200px; padding:20px; border:1px solid red; margin:10px; }
盒模型—填充
div{ padding-top:20px; padding-right:10px; padding-bottom:15px; padding-left:30px; }
可以简写为div{padding:20px 10px 15px 30px;} 书写顺序是顺时针,上右下左
如果上、右、下、左的填充都为10px;可以这么写
div{padding:10px;}
如果上下填充一样为10px,左右一样为20px,可以这么写:
div{padding:10px 20px;}
盒模型—边界 (margin)
div{ margin-top:20px; margin-right:10px; margin-bottom:15px; margin-left:30px; }
简写为div{margin:20px 10px 15px 30px;}也是按照上右下左的顺序
如果上右下左的边界都为10px;可以这么写:
div{ margin:10px;}
如果上下边界一样为10px,左右一样为20px,可以这么写:
div{ margin:10px 20px;}
总结一下:padding和margin的区别,padding在边框里,margin在边框外
一一CSS包含3种基本的布局模型
在网页中,元素有三种布局模型:
1、流动模型(Flow)
2、浮动模型 (Float)
3、层模型(Layer)
一一流动模型(Flow)
流动模型,流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。
流动布局模型的特征
1块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%,而块状元素都会以行的形式占据位置
2在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。(内联元素可不像块状元素这么霸道独占一行)
一一浮动模型 (Float)
设置浮动模型可以让两个块状元素并排显示,任何元素在默认情况下是不能浮动的,但可以用 CSS 定义为浮动,如 div、p、table、img 等元素都可以被定义为浮动
div{ float:left/right; } (我自己去尝试用top和bottom结果没变化)
这条代码可以让两个块状元素并排在左或者并排在右
#div1{float:left;}
#div2{float:right;}
<div id="div1">1</div>
<div id="div2">2</div> 可以让1和2分别在同一行的左和右
一一层模型(Layer)
层模型可以让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作
层模型有三种形式:
1、绝对定位(position: absolute)
2、相对定位(position: relative)
3、固定定位(position: fixed)
最赞回答 / lackin
一一绝对定位(position: absolute)
优先相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口
position:absolute;
top:x px; 向上移动x像素
left:x px; 向左移动x像素
bottom:x px; 向下移动x像素
right:x px; 向右移动x像素
一一相对定位(position: relative)
position: relative;
top:x px; 相对运动,即向下移动了x像素
left:x px; 即向右移动了x像素
bottom:x px; 即向上移动了x像素
right:x px; 即向左移动了x像素
当写入top时再写入bottom无效
当写入left时再写入right无效
一一固定定位(position: fixed)
将元素固定于浏览器视图(屏幕内的网页窗口)的一个位置(由上下左右的属性决定),浏览器视图是固定的,所以该元素也是固定的,不会随文本流的移动而移动
position: fixed;
这与background-attachment:fixed;属性功能相同
一一Relative与Absolute组合使用
使用绝对定位所选的参照定位元素可以是除了body以外的元素
但是这个参照元素必须加入position:relative;