web笔试题(3)

1.div层中文本的居中问题?

单行垂直居中(重点是里面的文字是单行)

<style>
#div1{
300px;
height:200px;
background:#F00;
line-height:200px;
overflow:hidden;
}

</style>
</head>

<body>
<div id="div1">hellohello</div>
</body>
</html>

2.多行未知高度文字的垂直居中

设定Padding,使上下的padding值相同即可。这种方法的优点就是它可以在任何浏览器上运行,并且代码很简单,只不过这种方法应用的前提就是容器的高度必须是可伸缩的。

<style>
#div1{
300px;

background:#F00;
padding:20px;//设置padding:xxx来实现
}

</style>
</head>

<body>
<div id="div1">
<p>hellohello</p>
<p>hellohello</p>
<p>hellohello</p>
</div>
</body>
</html>

3.多行文本固定高度的居中

CSS中的vertical-align属性只会对拥有valign特性的(X)HTML标签起作用,但是在CSS中还有一个display

属性能够模拟<table>,所以我们可以使用这个属性来让<div>模拟<table>就可以使用vertical-align了。注意,display:table和

display:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个<div>元素:

<style>
body { font-size:12px;font-family:tahoma;}
div#wrap {
height:400px;
display:table;
}
div#content {
vertical-align:middle;
display:table-cell;
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
}

</style>
</head>

<body>
<body>
<div id="wrap">
  <div id="content">现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!
  </div>
</div>
</body>
</html>

但不幸的是IE 6 并不能正确地理解display:table和display:table-cell,因此这种方法在

IE 6及以下的版本中是无效的。

4. 在IE中的解决方案

在IE 6及以下版本中,在高度的计算上存在着缺陷的。在IE 6中对父元素进行定位后,如果再对子元素进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的高度,而从父元素继承来的定位高度)。例如,

<div id="wrap">
<div id="subwrap">
<div id="content">
</div>
</div>
</div>
如果我们对subwrap进行了绝对定位,那么content也会继承了这个这个属性,虽然它不会在页面中马上显示出来,但如果再对content进行相对定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrap的position为40%,我们如果想使content的上边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才能使content回到原来的位置上去,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使

用这中方法来实现IE 6中的垂直居中:

<style>
body { font-size:12px;font-family:tahoma;}
div#wrap {
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
height:400px;
position:relative;
}
div#subwrap {
position:absolute;
top:50%;
}
div#content {
position:relative;
top:-50%;
}
</style>
</head>

<body>
<div id="wrap">
<div id="subwrap">
<div id="content">现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!
现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!现在我们要使这段文字垂直居中显示!
现在我们要使这段文字垂直居中显示!

</div>
</div>
</div>
</body>
</html>

div#wrap {
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
height:400px;
position:relative;
}
div#subwrap {
position:absolute;
border:1px solid #000;
top:50%;
}
div#content {
border:1px solid #000;
position:relative;
top:-50%;
}

五、完美的解决方案

那么我们综合上面两种方法就可以得到一个完美的解决方案,不过这要用到CSS hack的知识。对于如果使用CSS Hack来区分浏览器,你可

以参考这篇“简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera”:

div#wrap {
display:table;
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
height:400px;
_position:relative;
overflow:hidden;
}
div#subwrap {
vertical-align:middle;
display:table-cell;
_position:absolute;
_top:50%;
}
div#content {
_position:relative;
_top:-50%;
}
至此,一个完美的居中方案就产生了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> 多行文字实现垂直居中 </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body { font-size:12px;font-family:tahoma;}
div#wrap {
display:table;
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
height:400px;
_position:relative;
overflow:hidden;
}
div#subwrap {
vertical-align:middle;
display:table-cell;
_position:absolute;
_top:50%;
}
div#content {
_position:relative;
_top:-50%;
}
</style>
</head>
<body>
<div id="wrap">
<div id="subwrap">
<div id="content"><pre>现在我们要使这段文字垂直居中显示!
div#wrap {
border:1px solid #FF0099;
background-color:#FFCCFF;
760px;
height:500px;
position:relative;
}
div#subwrap {
position:absolute;
border:1px solid #000;
top:50%;
}
div#content {
border:1px solid #000;
position:relative;
top:-50%;
}</pre>
</div>
</div>
</div>
</body>
</html>

原文地址:https://www.cnblogs.com/qinxuemei/p/3981579.html