扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
HTML CSS中实现DIV中的图片水平垂直居中对齐的方法:
创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元安陆做网站,已为上家服务,为安陆各地企业和个人服务,联系电话:18982081108
所谓的图片水平垂直居中就是把图片放在一个容器元素中(容器大于图片尺寸或是指定了大小的容器),并且图片位居此容器正中间(中间是指元素容器的正中间),而图片不是以背景图片(background-image)形式展示,是以img元素形式展示的。如下图所示:
1、解决水平居中的办法:如果图片左浮动并且"display:inline"时,只要给图片设置一个"text-align:center"属性,就顺利解决了水平居中。
2、解决垂直居中的办法:使用display:table-cell和设置了display:inline-block的线合span。
完整例子:
html代码:
ul class="imgWrap clearfix"
lia href="#" class="imgBox"span/spanimg src="images/img1.jpg" alt="" //a/li
lia href="#" class="imgBox"span/spanimg src="images/img2.jpg" alt="" //a/li
lia href="#" class="imgBox"span/spanimg src="images/img3.jpg" alt="" //a/li
lia href="#" class="imgBox"span/spanimg src="images/img4.jpg" alt="" //a/li
/ul
css代码:
style type="text/css"
.imgWrap li {
float: left;
border: solid 1px #666;
margin: 10px 10px 0 0;
list-style: none;
border-collapse: collapse;
}
.imgWrap a {
background: #ffa url(images/gridBg.gif) repeat center;
width: 219px;
height: 219px;
display: table-cell;/*图片容器以表格的单元格形式显示*/
text-align: center; /* 实现水平居中 */
vertical-align: middle; /*实现垂直居中*/
}
.imgWrap a:hover {
background-color: #dfd;
}
.imgWrap img {
border: solid 1px #66f;
vertical-align: middle; /*图片垂直居中*/
}
/style
实现效果如下:
html中使图片居中的代码是:img src="" alt="" align="center" /
怎样让html中的img标签居中显示?
1、首先我们需要打开电脑,找到DW软件的快捷键,双击打开之后,新建一个html页面。
2、然后我们会进入到DW的HTML页面的编辑页面,我们需要将新建的html页面进行一个保存。
3、将网页保存好之后,我们需要重新回到DW的编辑页面。
4、然后我们需要在body部分新建一个div标签,并在其中插入一张img图片。并给div添加简单的css样式。
5、然后我们在浏览器中查看效果,可以发现图片是默认左对齐的,并没有在div的正中央显示。
6、此时为图片添加居中属性也是没有用的,我们需要将图片套在一个p或者span标签中,给标签添加一个text-align:center属性。
方法一:
这种方法用来实现单行垂直居中是相当的简单的,你只要保证元素内容是单行,并且其高度是固定不变的,你只要将其“line-height”设置成和“height”值一样就Ok了。不过这种方法局限性太大,只有单行文本的元素才适用,所以在多行元素中是不能使用这种方法的。
Html Markup
div class="vertical"content/div
复制代码
CSS Code:
.vertical {
height: 100px;
line-height: 100px;/*值等于元素高度的值*/
}
复制代码
优点:
适合在所有浏览器,没有足够空间时,内容不会被切掉
缺点:
仅适合应用在文本和图片上,并且这种方法,当你文本不是单行时,效果极差,差到让你感到恶心。
这种方法对运用在小元素上是非常有用的,比如说让一个button、图片或者单行文本字段。
方法二:
这种方法将在需要给容器设置绝对定位(position:absolute),并且定位高度(top:50%)和margin-top为高度的一半(margin-top:-height/2)。这就意味着使用这种方法来实现垂直居中的效果,那么元素必须要有一个固定的高度。这样一来,你给元素设置了固定高度,如果你又给他设置了“overflow:auto”,那么当元素内容超过容器后,这样元素的就会出现滚动,而不会自适应内容的高度。
HTML Markup
div class="vertical"content/div
复制代码
CSS Code
.vertical {
height: 100px;/*元素的高度*/
position: absolute;
top: 50%;/*元素的顶部边界离父元素的的位置是父元素高度的一半*/
margin-top: -50px;/*设置元素顶边负边距,大小为元素高度的一半*/
}
复制代码
优点:
能在各浏览器下工作,结构简单明了,不需增加额外的标签
缺点:
由于固定死元素的高度,致使没有足哆的空间,当内容超过容器的大小时,要么会消息,要么会出现滚动条(如果元素在body内,当用户缩小浏览器窗口时,body的滚动条将不会出现)。
这种方法主要是针对多行元素来进行元素的垂直居中,而并非是此元素的内容垂直居中,这一点先要理解并分开清楚。另外此方法是通过绝对定位来实现的,那么用这种方法实现元素的垂直居中需要注意以下几点:其一元素定位关系到一个相对定位参考,所以要保证元素是相对于哪个为参考坐标;另外需要设置给元素明确定一个高度值并且给元素设置一个负值的margin-top,而且值为元素高度的一半。这里我建议大家给元素定一个宽度值,因为元素进行绝对定位后脱离文档流,其宽度是根据元素内容所占宽度来计算的,为这能让其视觉效果更好,最好给元素定义一个宽度值。
根据这种方法,我们稍作修改就能使元素不单是垂直居中,而且还可以水平居中,如:
HTML Markup
div id="wrap"test/div
复制代码
CSS Code
#wrap {
width: 200px;/*元素的宽度*/
height:200px;/*元素的高度*/
position: absolute; l
eft: 50%;/*配合margin-left的负值实现水平居中*/
margin-left: -100px;/*值的大小等于元素宽度的一半*/
top:50%;/*配合margin-top的负值实现垂直居中*/
margin-top: -100px;/*值的大小等于元素高度的一半*/
}
复制代码
这种方法可以实现元素的水平垂直居中,常用于页面在最中间的布局,使用这种方法一定要把握住:水平垂直居中的元素要有明确的大小(换句话说就是要有确切的宽和高度值);给元素进行绝对定位,并设置left,top值为“50%”(此处最好使用 对定位,如果只是单单水平居中,此处可以换成相对定位);最后设置margin-top和margin-left的负值,而且其值分别为元素高度和宽度的一半。
方法三:
方法三是使用的的div模拟表格效果,也就是说将多个div的“display”属性设置为禾“table”和“table-cell”,并设置他们的“vertical-align”的属性值为“middle”。有关于“display:table”更多的介绍可以点击这里或者去阅读Quirksmode的《The display declaration》一文。
HTML Code
div id="container"
div id="content"content/div
/div
复制代码
CSS Code
#container {
height: 300px;
display: table;/*让元素以表格形式渲染*/
}
#content {
display:table-cell;/*让元素以表格的单元素格形式渲染*/
vertical-align: middle;/*使用元素的垂直对齐*/
}
复制代码
优点:
这种方法不会像前面的两种方法一样,有高度的限制,此方法可以要据元素内容动态的改变高度,从而也就没有空间的限制,元素的内容不会因为没足够的空间而被切断或者出现难看的滚动条。
缺点:
不足之处呢?这种方法只适合现代浏览器,在IE6-7下无法正常运行;而且较前两者而言,结构也更复杂。
这种方法在现代浏览器下是非常方便。但是在IE6-7中是不被支持的,因为display:table在IE6-7中不被支持,那么为了解决这种方法在IE6-7的兼容,需要额外增加一个div,并使用hack,下面我们一起来看看其解决办法。
HTML Markup
div class="table"
div class="tableCell"
div class="content"content/div
/div
/div
复制代码
CSS Code
.table {
height: 300px;/*高度值不能少*/
width: 300px;/*宽度值不能少*/
display: table;
position: relative; float:left;
}
.tableCell {
display: table-cell;
vertical-align: middle;
text-align: center;
padding: 10px;
*position: absolute;
*top: 50%;
*left: 50%;
}
.content {
*position:relative;
*top: -50%;
*left: -50%;
}
复制代码
方法四:
这种方法有点新意,用这种方法你需要在居中元素前面放一个空的div(块元素就可以),然后设置这个div的高度为50%,margin-bottom为元素高度的一半,而且居中元素需要清除浮动。需要注意的是,使用这种方法,如果你的居中元素是放在body中的话,你需要给html,body设置一个“height:100%”的属性。
HTML Markup
body
div id="floater"!--This block have empty content --/div
div id="content"Content section/div
/body
复制代码
CSS Code
html,body {height: 100%;}
#floater{ float:left;
height:50%;/*相对于父元素高度的50%*/
margin-bottom: -120px;/*值大小为居中元素高度的一半(240px/2)*/
}
#content { clear:both;/*清除浮动*/
height: 240px; position: relative;
}
复制代码
优点:
这种方法能兼容所有浏览器,在没有足哆空间下,内容不会被切掉
缺点:
元素高度被固定死,无法达到内容自适应高度,如果居中元素加上overflow属性,要么元素出现滚动条,要么元素被切掉;另外就是一个不算缺点的缺点,那就是加了一个空标签。
方法五:
这种方法和方法三一样使用display:table-cell来实现,不过方法五不同之处是这个方法我们需要一个线盒型,用来实现IE下的效果,需要增加一上行内标签比如说“span”(此处最好使用行内标签,千万不要使用块标签,因为使用块标签会没有效果),并把这个线盒型高度设置为100%。
HTML Markup
p class="table"
span class="tableCell"Centering multiple lines brin a block container./span
!--[if lte IE 7]b/b![endif]--
/p
复制代码
CSS Code
style type="text/css"
.table {
border: 1px solid orange;
display: table;
height: 200px; width: 200px;
text-align: center;
}
.tableCell {
display: table-cell;
vertical-align: middle;
}
/style
!--[if lte ie 7]
style type="text/css"
.tableCell {
display: inline-block;
}
b {
display: inline-block;
height: 100%;
vertical-align: middle; width: 1px;
}
/style
![endif]--
复制代码
优点:
这种方法的优点和方法三是一样的,不会有高度的限制。
缺点:
不好的地方就是这种方法为了让IE运行正常,需要额外增加一些标签,另外就是线盒型的标签种类有限制。不过用起来还是蛮方便的。
方法六:
这种方法是采用的display:inline-block,然后借助另一个元素的高度来实现居中
Html Markup
div id="parent"
div id="vertically_center"
pI am vertically centered!/p
/div
div id="extra"!-- ie comment --/div
/div
复制代码
CSS Code
style type="text/css"
html,
body{
height: 100%;
}
#parent { h
eight: 500px;/*定义高度,让线盒型div#extra有一个参照物,可以是固定值,也可以是百分比*/
border: 1px solid red;
}
#vertically_center,
#extra {
display: inline-block;/*把元素转为行内块显示*/
vertical-align: middle;/*垂直居中*/
}
#extra {
height: 100%; /*设置线盒型为父元素的100%高度*/
}
/style
!--[if lt IE 8]
style type="text/css"
/*IE6-7不支持display:inline-block,所以在ie6-7另外写一个hack,用来支持ie6-7*/
#vertically_center,
#extra {
display: inline;
zoom: 1; }
#extra {
width: 1px;
}
/style
![endif]--
复制代码
优点:
可以自适应高度,简单易懂
缺点:
需要给元素的父元素设置一个高度,这个高度可以是一个固定值或者百分值高度,另外需要增加一个额外的标签,当作线盒型,如div#extra,并且需要设置其高度为100%。另外就是ie6-7不支持display:inline-block,需要给他们另外写一个样式。
这是一个很有意思的方法,但你要懂得如何使用display。有关于这种方法的操作,大家可以去看一看Jonathan Potter写的《CSS, Vertical Centering》。
直接float就可以了
ul, ul li{
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}
ul li{display:inline;float:left;width:50%;height:100px;padding:0 10px;}
ul
li/li
li/li
li/li
li/li
li/li
/ul
可以这么写试试看,图片直接设置为display:block;如果宽度是根据窗口缩放的话,可以直接设置为100%;如果定宽就写margin:0 auto;图片就是居中的。
1,输入position:fixed;top:0;left:0;将整个div固定在屏幕的顶部和左侧。
2、输入width:100%;height:100%;min-width:1000px;这个可以适合div的高度和宽度,而min-width是为了实现让屏幕宽度在1000px以内时,div的大小保持不变。
3、输入background-size: cover;-webkit-background-size: cover;-o-background-size: cover;使图片随屏幕大小同步缩放,但是有部分可能会被裁切,不过不至于会露白,下面两句是为chrome和opera浏览器作兼容。
4、输入background-position:center0;使图片的位置,居中,靠左对齐。
lign="center" 居中代码
CSS中的“text-align:center属性,margin:0 auto或定位属性
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流