content area吗 和font-size相关 前面行内框盒子模型里面提到
字体小的时候每行距离不会太大,字体大的时候两行之间不会重叠
ie7及更低版本的ie浏览器不支持display:inline-block这个属性!
正确的解释是”使用inline-block属性在IE下会触发layout,因此元素上设置的width、height是能生效的,所以也就有了同其它浏览器一致的显示效果”,而不能说IE6/7支持 display:inline-block!
在IE下,display: inline-block只是触发了元素的layout。比如将display: inline-block设置到div上,只能保证这个div拥有块元素的特征(可以设置宽度,高度等),但还是会产生换行。接下来要设置display: inline,使其不产生换行。将display:inline-block;*display:inline;写在同一个样式上,inline-block属性是不会触发元素的layout的,因此我们还要额外加上 *zoom:1来触发layout!
IE7下块元素如何兼容 display:inline-block写法
方法1:直接让块元素设置为内联对象呈递(设置属性 display:inline),然后触发块元素的 layout(如:zoom:1等)。兼容各浏览器的代码如下: div {display:inline-block;*display:inline; *zoom:1;…}
解释:dispaly:inline-block照顾的是ie8+的浏览器,这是正常的设置,在低版本的ie下设置行内块有2个条件,一个是行内,一个是设置宽高,触发layout即可设置宽高,而div设置了宽高后还是会换行,layout不是为水平而设置的,所以为块级元素转行内块加上了*display:inline属性,但是display:inline不会触发layout,于是加上zoom:1重新触发layout,于是就形成了一个可以“设置宽高的行内元素”
方法2:先使用 display:inline-block 属性触发块元素,然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 样式声明中才有效果,这是 IE 的一个经典bug ,如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout不会消失)。代码如下(…为省略的其他属性内容): div {display:inline-block;…}div{*display:inline;}
p元素是块级元素。
给<a>增加style值:display:inline-block
上代码吧,我测试了没有这种问题啊。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>testDocument</title>
</head>
<body>
<div style="border:1px solid #0000ff;padding:0px">
<p style="background-color: red;font-family: simsun;font-size: 14px;line-height: 1.4286;">X123</p>
</div>
</body>
</html>
亲测 好使的,怀疑你的代码中存在标点错误,导致代码无法执行
是不是因为absolute的原因啊...
张含韵
你定义的哪部分是内容区域,你就把鼠标停在那个区域,右击鼠标,点审查元素就行了
在.box这个div里,img标签后加一个 试一下
这个问题问得非常好,其实,老师讲得有问题,基线的位置是不会动的。它的过程是这样的:行高开始比内容区域高,此时行间距大于0,随着行间距不断减少,减少到0,行高和内容区域一样高,这个时候还有空隙,这个空隙是什么呢?这个空隙是descender,就是基线到底线之间的距离。我们让行间距继续减少为负数,该负数的值正好等于descender,
此时,行框盒子底部上移,行框盒子底部和文字基线重合,descender部分溢出行框盒子
inline是设置成内联元素,display:inline-block的意思是设置成内联块状元素,你对元素的基本概念没整理清楚,再看看元素的分类以及概念你就知道了
行间距是与字体family有关的亲,CSS并没有直接设置行间距的属性,你只能通过line-height来间接影响行间距。当然,或许你也可以试着通过设置不同的字体来改变行间距,但这个不好控制,也没有什么意义
是height,你可以给个<textarea>给个100高度,20的行高验证一下,在没有上下padding的情况下结果是正好显示5行
行高是有content area+行间距 决定的 line-height 刚好等于content area+行间距 所以不矛盾
麻烦把你的代码贴出来,要不然我们也看不出出现了什么问题
132是文本所占的高度,用jquery的selector.height()方法就能取到高度。
<style type="text/css"> *{ margin: 0; padding: 0; font-family: "microsoft yahei"; //改变字体,高度也会改变 } #demo{ font-size: 100px; //改变字体大小,高度也会改变 } </style> <div id="demo">字体normal=?</div> <div class="result">demo高度=</div> <script src="js/jquery.min.js"> //要先引入jquery库 <script type="text/javascript"> $(function(){ var h = $("#demo").height() //取到文本高度 $(".result").append(h + "px") //添加到html中 }) </script>
简单的情况text-align:center; vertical-align: middle等,下面是复杂一点的:
// 方法一:已知元素的高宽
<div></div>
CSS:
.content{
background-color:#6699FF;
width:200px;
height:200px;
position: absolute;
top: 50%;
left: 50%;
/* 二分之一的负height,width */
margin-top:-100px ;
margin-left: -100px;
}
//方法二:未知元素的高宽
<div></div>
CSS:
.content{
background-color:#6699FF;
width:200px;
height:200px;
position: absolute;
/* transform: translate(-50%,-50%) 或 margin:auto与四边距相等 */
margin:auto; /*无这个就只有top、left起作用*/
top: 0;
left: 0;
bottom:0;
right: 0;
}
//3,两个按钮在div中居中,并相距一定距离
<style type="text/css">
div{width: 600px;height: 500px;background-color: rgba(240,240,240,0.9);text-align:
center;}
.button{ width:100px;height: 90px;background-color: #f00;position: relative;top: 50%;
transform: translate(0,-50%) }
.button1{margin-left: 0;margin-right: 100px;}
.button2{margin-right: 0;}
</style>
</head>
<body>
<div>
<input type="button" class="button button1"></input>
<input type="button" class="button button2"></input>
</div>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
#div1{line-height:300px;background:gray;text-align: center;}
#div1>img{vertical-align: middle;}
</style>
</head>
<body>
<div id="div1">
<img src="images/css.jpg"/>
</div>
</body>
</html>