html css 小技巧小bug 总结

 

 

一.火狐和chrome下textarea解决自动拉伸

textarea {
    resize: none;
}

 

二. IE7下,<p>等标签内部<a>添加float属性后没有和文字排在一行

 

<!-- '显示模式:' 和 '列表模式','缩略图模式' 没有在同一行中显示-->
<div class="view">
  显示模式:
   <a style="float:right;" title="列表模式" href="#" >列表模式</a>
   <a style="float:right;" title="缩略图模式" href="#" >缩略图模式</a>

</div>

<!-- '显示模式:' 和 '列表模式','缩略图模式' 在同一行中显示-->
<div class="view">
   <a style="float:right;" title="列表模式" href="#" >列表模式</a>
   <a style="float:right;" title="缩略图模式" href="#" >缩略图模式</a>
   显示模式:
</div>

 

结论: 在块元素中有文字时,需要有部分文字有float属性时,应该把浮动的文字放在块元素的内部前面,这样才会在同一行中浮动,而不会在下一行才浮动

三. IE7下,padding的值会算入width中

   查看元素布局时,会发现布局中的width把padding的值算了进去。

 

 

四、字体间距

行间距: line-height;

字间间距:letter-spacing;

首字缩进:text-indent;

 

 

五、图片垂直水平居中

在图片宽高未知,但最大宽高确定的情况下,在div等盒子中需要图片垂直水平都居中的实现可以用<table><td>来实现:

html:

 

<table>
      <td><img src="http://img5.hao123.com/data/8f5d57e5bc12734a86afa7f6ef0afba9_0" alt="" /></td>
</table>

 

css:

td{
    vertical-align:middle;
    text-align:center;
    width: 355px;
    height: 400px;
}

td img{
    max-width:280px;
    max-height:400px;
}

 

 六、ie下固定table的宽高

在ie下直接给table宽高值不能够实现固定宽高,这是需要再增加一个属性:table-layout

语法:
table-layout : auto | fixed 
参数:
auto :  默认的自动算法。布局将基于各单元格的内容。表格在每一单元格读取计算之后才会显示出来。速度很慢
fixed :  固定布局的算法。在这算法中,水平布局是仅仅基于表格的宽度,表格边框的宽度,单元格间距,列的宽度,而和表格内容无关

table{
    table-layout: fixed;
    width: 200px;
    height: 120px;
}

 

 

 七、清除浮动属性 clear的使用注意事项:

1、clear不是一个标签,它是css中的一个属性。

2、其属性值有四个

  clear:both|left|right|none;

  clear:both;表示该元素两边都不存浮动元素。      

  clear:left;表示该元素左边不存在浮动元素。      

  clear:right;表示该元素右边不存在浮动元素。      

  clear:none表示两边允许有浮动元素。

3、该属性的值指出了不允许有浮动对象的边。换句话,clear属性的作用就是“清除”浮动。 这个属性是用来控制float属性在文档流的物理位置的。当属性设置float(浮动)时,他所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来清除。

clear:both 使用不当造成的例子:在ie8+,chrome,火狐下出现

 

.aa {
    float:left;
    width:100px;
    height:200px;
    border:1px solid red;
}
.bb {
    margin-left:110px;
    border:1px solid blue;
    width:330px;
}
.cc {
    float:left;
    width:100px;
    height:100px;
    border:1px solid green;
}
.dd {
    float:left;
    border:1px solid black;
    width:100px;
    height:100px;
}
.clear{
        clear:both;
}

 

html:

<div class="aa"></div>
<div class="bb">
    <div class="cc"></div>
    <div class="cc"></div>
    <div class="cc"></div>
    <div class="clear"></div>
    <div class="dd"></div>
</div>

结果:因为.clear 的使用不当,在<div class="clear"></div>的位置清除了文档流的物理位置,使左右两边都没有浮动属性。造成bug出现

 修改css代码:

 

.aa {
    float:left;
    width:100px;
    height:200px;
    border:1px solid red;
}
.bb {
    margin-left:110px;
    border:1px solid blue;
    width:330px;
}
.cc {
    float:left;  // 改为right
    width:100px;
    height:100px;
    border:1px solid green;
}
.dd {
    float:left;
    border:1px solid black;
    width:100px;
    height:100px;
}
.clear{
        clear:both;  // 改为 right
}

//或者在父元素加 .clearfix

.clearfix:after{
  content:".";
  visibility:hidden;
  height:0;
  clear:both;

  display: block;
}

// 上面的那段代码有时候不是很给力,clear属性有些过犹不及

// 这段外国的代码和拉轰

.clearfix{

  overflow: auto;

  _height:1%;

}

// 真心的下面这段也是可以的

.clearfix{
  overflow:hidden;
  _zoom: 1;
}

 

结果:

结论:使用clear的时候要注意 需要清除的浮动位置是left、right,还是both。

 

七、字段换行

字段自动换行有两个属性控制:word-break 和 word-wrap

p{
word-break : break-all
word-wrap : break-word
}

语法:
word-break normal | break-all | keep-all 
参数:
normal 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行
break-all 该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
keep-all 与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本
说明:
设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
对于中文,应该使用break-all 。
对应的脚本特性为wordBreak

 word-wrapnormal break-word 
参数:
normal :  允许内容顶开指定的容器边界
break-word :  内容将在边界内换行。如果需要,词内换行(word-break)也行发生

 

 

八、 table清除4像素的间距

在table标签加入 border-collapse:collapse; 属性

 

table{border-collapse:collapse;}

 

 

 

 

 

 

 


 

 

posted @ 2012-10-25 09:17  oaijuru  阅读(361)  评论(0编辑  收藏  举报