12-1 元素分类
在讲CSS布局之前,先了解一些知识,在CSS中,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>
12-2 块级元素
什么是块级元素?在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是块级元素。
设置display:block就是将元素显示为块级元素。
如下代码就是将内联元素a转换为块状元素,从而使a元素具有块状元素特点。
a{ display:block; }
块级元素特点:
1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。
2、元素的高度、宽度、行高以及顶和底边距都可设置。
3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
12-3 内联元素
在html中,<span>、<a>、<label>、 <strong> 和<em>就是典型的内联元素(行内元素)(inline)元素。
当然块状元素也可以通过代码display:inline将元素设置为内联元素。
如下代码就是将块状元素div转换为内联元素,从而使 div 元素具有内联元素特点。
div{ display:inline; } ......
<div>我要变成内联元素</div>
内联元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度及顶部和底部边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。
内联元素之间有一个间距问题
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>行内元素标签</title> <style type="text/css"> a, span, em { background: pink; /*设置a、span、em标签背景颜色都为粉色*/ } </style> </head> <body> <a href="http://www.baidu.com">百度</a> <a href="http://www.wkwkk.com">闻课</a> <span>33333</span> <span>44444</span><em>555555</em> </body> </html>
12-4 内联块状元素
内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,代码display:inline-block;就是将元素设置为内联块状元素。(css2.1新增),<img>、<input>标签就是这种内联块状标签。
inline-block 元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度、行高以及顶和底边距都可设置。
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>内联块状元素</title> <style type="text/css"> a{ display:inline-block; width:30px; height:30px; background:pink; text-align:center; } </style> </head> <body> <a>1</a> <a>2</a> <a>3</a> <a>4</a> </body> </html>
12-5 none不占据位置
none设置此元素不会被显示,当想要元素隐藏的时候可以使用此值。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>none</title> <style type="text/css"> p { display:none; } </style> </head> <body> <p>我爱学习</p> </body> </html>
运行后,文字不会显示出来!
12-6 什么是盒模型
<div><ul><ol><p><h><table>等块级元素,都具备盒子模型的特征。
12-7 宽度和高度
盒模型宽度和高度和我们平常所说的物体的宽度和高度理解是不一样的,css内定义的宽(width)和高(height),指的是填充以里的内容范围。
因此一个元素实际宽度:
(盒子的宽度)=左边界+左边框+左填充+内容宽度+右填充+右边框+右边界。
元素的高度也是同理。
css代码:
div{ width:200px; padding:20px; border:1px solid red; margin:10px; }
html代码:
<body> <div>文本内容</div> </body>
元素的实际长度为:10px+1px+20px+200px+20px+1px+10px=262px。在chrome浏览器下可查看元素盒模型,如下图:
12-8 背景色
网页中的标签不论是行内元素还是块状元素都可以给它设置一个背景色。
为标签设置背景颜色可以使background-color:颜色值来实现。
div{ background-color:red; }//为块状元素设置 a{ background-color:green; }//为行内元素设置
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>背景色</title> <style type="text/css"> div{ background-color:red; } a{ background:yellow; } </style> </head> <body> <div> <h1>闻课</h1> <p>闻课<a href="#">展示</a>平台</p> </div> </body> </html>
12-9 使用border为盒子添加边框(一)
盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细、样式和颜色(边框三个属性)。
如下面代码为 div 来设置边框粗细为 2px、样式为实心的、颜色为红色的边框:
div{ border:2px solid red; }
上面是 border 代码的缩写形式,可以分开写:
div{ border-width:2px; border-style:solid; border-color:red; }
注意:
1、border-style(边框样式)常见样式有:
dashed(虚线)| dotted(点线)| solid(实线)。
2、border-color(边框颜色)中的颜色可设置为十六进制颜色,
如:border-color:#888;//前面的井号不要忘掉。
3、border-width(边框宽度)中的宽度也可以设置为:
thin | medium | thick(不是很常用),最常还是用像素(px)。
<!DOCYTPE HTML> <html> <head> <meta charset="UTF-8"> <title>边框</title> <style type="text/css"> p{ border:2px dotted #ccc; } </style> </head> <body> <h1>勇气</h1> <p>以前我是一个胆小鬼! </p> <p>现在我超越自己,做勇敢的人!</p> </body> </html>
12-10 使用border为盒子添加边框(二)
如果想为p标签单独设置下边框,其它三边不设置边框样式,css 样式中允许只为一个方向的边框设置样式:
div{ border-bottom:1px solid red; }
同样可以使用下面代码实现其它三边(上、右、左)边框的设置:
border-top:1px solid red; border-right:1px solid red; border-left:1px solid red;
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>边框</title> <style type="text/css"> li { border-bottom:1px dotted red; } </style> </head> <body> <ul> <li>别让不会说话害了你</li> <li>二十七八岁就应该有的见识</li> <li>别让不好意思害了你</li> </ul> </body> </html>
12-11 使用border-radius设置圆角
元素边框的圆角效果可以使用border-radius属性来设置。圆角可分为左上、右上、右下、左下。如下代码:
div{ border-radius: 20px 10px 15px 30px; }
效果:
也可以分开写:
div{ border-top-left-radius: 20px; border-top-right-radius: 10px; border-bottom-right-radius: 15px; border-bottom-left-radius: 30px; }
如果四个圆角都为10px;可以这么写:
div{ border-radius:10px; }
如果左上角和右下角圆角效果一样为10px,右上角和左下角圆角一样为20px,可以这么写:
div{ border-radius:10px 20px; }
需要特别注意的:一个正方形,当设置圆角效果值为元素宽度一半时,显示效果为圆形。例如:
div { width: 200px; height: 200px; border: 5px solid red; border-radius: 100px; }
效果:
也可以写为百分比50%
div { width: 200px; height: 200px; border: 5px solid red; border-radius: 100px; }
12-12 使用padding为盒子设置内边距(填充)
元素内容与边框之间是可以设置距离的,称之为“内边距(填充)”。填充也可分为上、右、下、左(顺时针)。
div{ padding:20px 10px 15px 30px; }
效果:
顺序一定不要搞混。可以分开写上面代码:
div{ padding-top:20px; padding-right:10px; padding-bottom:15px; padding-left:30px; }
如果上、右、下、左的填充都为10px;可以这么写
div{ padding:10px; }
如果上下填充一样为10px,左右一样为20px,可以这么写:
div{ padding:10px 20px; }
12-13 使用margin为盒子设置外边距(边界)
元素与其它元素之间的距离可以使用边界(margin)来设置。边界也是可分为上、右、下、左。如下代码:
div{ margin:20px 10px 15px 30px; }
效果:
也可以分开写:
div{ margin-top:20px; margin-right:10px; margin-bottom:15px; margin-left:30px; }
如果上右下左的边界都为10px;可以这么写:
div{ margin:10px; }
如果上下边界一样为10px,左右一样为20px,可以这么写:
div{ margin:10px 20px; }
padding和margin的区别:padding在边框里,margin在边框外。