首先需要明白两个概念:内联元素 , 块元素。
内联元素 :也叫做行内元素,可以容纳文字或其他内联元素。内联元素的高度宽度都是不可以设置的,其宽度就是自身文字或者图片的宽度,不会进行换行。常见的内联元素:<span></span>, <a></a>, <img></img>, <font></font>, <strong></strong>等
块元素:可以容纳文本,其他内联元素和块元素。可以设置其高度宽度。排斥与其他元素位于同一行。常见的块元素:<h1></h1>, <p></p>, <div></div> 等
这时就会有个问题,如果我们设置3个div块,它就会按照html文档的编写顺序进行纵向摆列,如图:
块元素会自动换行,如果我们想要让它在一行中显示,怎么解决呢? 当然了,方法不止一种。今天说一下最常见的设置方法,浮动。
如果将块元素进行浮动设置,那么它就会按照我们的指定向左或右进行浮动至父元素的边框,而且会使其不在html文档的标准流(编写顺序)中。从而达到对块元素的定位。
比如上图,我们将框1设为右浮动(float:lright), 那么它会脱离标准流,浮动到边框的右上角。因为脱离了标准流,可以视为它不存在。那么框2,框3就会上移。如下图所示:
需要注意:如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”。如图:
所以如果我们想让3个框都在同一行显示,就需要将他们都设置为左浮动,并且有合适大小的父元素边框。
给出一个常见的案例,这是网易图片新闻中的标签栏,如图:
上边的标签需要使用JavaScript, 我后边会进行学习,今天只需要实现新闻图片加下边的链接,注意:当鼠标移动至下边的链接是,字体变为橙色,并有下划线出现。
效果:
完整代码
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>网易社会新闻</title>
<style type="text/css">
body,ul,li,p{margin:0; padding:0; font-size: 12px;}
img,p{width: 170px; height: 128px; margin-left: 20px;}
p{width:170px;height:30px;}
ul{
width: 1000px;
height: 200px;
list-style: none;
border:1px solid gray;
padding-top:40px;
padding-left: 45px;
margin:0 auto;
}
li{
float:left;
}
a:link{
color:black;
text-decoration: none;
}
a:hover{
color:orange;
text-decoration: underline;
}
</style>
</head>
<body>
<ul>
<li>
<a href="#" title="犀鸟"><img src="img/1.jpg"/><p>我国专家首次观测到冠斑犀鸟野外繁殖过程</p></a>
</li>
<li>
<a href="#" title="地震"><img src="img/2.jpg"/><p>鲁甸地震灾区的孩子们</p></a>
</li>
<li>
<a href="#" title="干旱"><img src="img/3.jpg"/><p>河南因干旱损失逾40亿元</p></a>
</li>
<li>
<a href="#" title="西安"><img src="img/4.jpg"/><p>西安久旱逢“甘露” 民众乐享清凉</p></a>
</li>
<li>
<a href="#" title="地铁"><img src="img/5.jpg"/><p>上海地铁三条线路早高峰齐发故障</p></a>
</li>
</ul>
</body>
</html>