CSS点滴整理

scrollHeight与scrollWidth

Chrome下body的这两个属性与其他元素有差异。

当页面的height <= body.clientHeight时,一切正常,body.clientHeight == body.scrollHeight

但当页面的height > body.clientHeight时,body.scrollHeight不是body的滚动高度,而是整个页面的高度

而且在IE下,如果没有设置body的宽高样式,那么scrollHeight等于body内部元素所占高度。

IE6下 <select>无法被其他元素覆盖(通过z-index)

font-size:13px在IE6下无效,但font-size:12px等等却可以

解决“高度塌陷”的方案

<div style="border:solid 1px black;width:400px;display:inline-block;">
  <div style="float:left;background:lightgreen;width:30%;">Sgfasd fashdsss dssssss ghfasdfsdfSSSDF</div>
  <div style="float:left;background:lightgrey;width:20%;">SSS df  fdsdf DF</div>
</div>

 重点是蓝色的部分

文字截断(长度超出部分用省略号表示)

word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/*当对象内文本溢出时显示省略标记(...);*/

如果是table的话还要加上下面的
table-layout:fixed;

 

竖直居中(容器内元素)

方案1  line-height:10px;
方案2  padding-top:5px;padding-bottom:5px;

 

 IE各版本间CSS差异

IE6不支持子元素选择器和相邻兄弟选择器 例 #main > div{} #main + div{}

IE6不支持属性选择器 例 a[href]{}

IE6不支持伪类

IE6不支持Min-Height ,Min-Width,Max-Height,Max-Width  (可变的宽度和高度极限值)

IE6不支持 display:fixed  绝对定位,且不随页面移动 (IE6+支持)

IE6,7不支持裁剪 clip:rect


浮动元素居中

父元素和子元素同时左浮动,然后父元素相对左移动50%,再然后子元素相对右移动50%,或者子元素相对左移动-50%也就可以了。

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        .p{
            position:relative;
            left:50%;
            float:left;
        }
        .c{
            position:relative;
            float:left;
            right:50%;
        }
    </style>
</head>
<body>
    <div class="p">
        <h1 class="c">Test Float Element Center</h1>
    </div>
</body>
</html>

 CSS Hack

添加针对所有IE的Style:

<!--[if IE]>
<!--
   TODO
   这类Hack不仅对CSS生效,
   对写在判断语句里面的所有代码都会生效
-->
<![endif]-->

针对IE各个版本的Hack

div{
    background:blue;
    background:blue \9;/*All IE*/
    _background:blue;/*IE6*/
    +background:blue;/*IE7*/
    *background:blue;/*IE6,7*/
    background:blue \0;/*IE8*/
    background:blue \9\0;/*IE9*/
}

 


利用ul和li实现元素的按序布局(例如导航

ul
{
    list-style: none;
    margin-left:5px;
    width: 98%;
    overflow: hidden;
}
li
{
    float: left;
    width:100px;
    margin-right: -1px;
    margin-top:2px;
    height: 20px;
    line-height: 20px;
    position: relative;
    overflow: hidden;
    border: 1px solid #B3B3B3;
    padding-left:2px;
    display:inline-block;
}

 在CSS文件中引用其他CSS文件.可用于简单的CSS文件整理

main.css

@import url("ligerui-common.css");
@import url("ligerui-dialog.css");
@import url("ligerui-form.css");

 给定一个元素,如果相邻的两个border颜色不相同时,效果只是两条垂直的不同色的线而已;但如果border-width足够大的话,将会有意想不到的效果,如下:

 

 如果上下(左右)border的宽度等于height(width)的话,就会出现下面的效果:

 

 再进一步  如果让上下border的颜色变成透明的,则成了一个箭头!而且还没用图片!

 


textarea 的resize问题

在Chrome下,textarea是可以通过拖动右下角的三角来调整大小。如下图

但有些时候我们不希望这个输入框可以被用户随意摆弄
解决方法:
text{resize:none;}


让文字包围图片

  • 将<img>的属性align设置成"left"或"right"
  • 给<img>添加样式float:left;或float:right;

 

 

posted @ 2013-02-19 17:30  TiestoRay  阅读(476)  评论(0编辑  收藏  举报