CSS经验

1、复选框与文字的偏移问题
一般情况下,复选框的小方框会与文字偏差2px,如下所示:
请输入图片描述
为了解决该问题,需要在页面(不能再单独的CSS中写)上添加vertical-align:-2px;

<label title="笑话"><input name="vip0" type="checkbox" value="" style="vertical-align:-2px" />&nbsp;笑话</label>

效果如下:
请输入图片描述

2、png图片在IE8及以下的IE浏览器中出现黑边(对opacity动态操作时)
主要原因:IE8以下的浏览器bug,动态修改透明度,就会出现黑边问题。
解决方案:
(1) 设置容器的background-color背景颜色
(2)给容器加一个zoom:1;
IE修改透明度,不是通过css属性,而是通过filter滤镜,所以想要理解这个bug,就要从filter滤镜上找原因。filter作用于一个对象时,这个对象必须是有形体,也就是必须是layout,而IE存在一个很特殊的属性:hasLayout ,这个属性可以 赋予容器成layout,hasLayout这个属性有些诡异,你无法通过直接写css启动,而必须通过javascript启动,其实还有一种方法可以启动,就是使用特殊的css属性,变相将hasLayout启动,这个css属性就是 zoom (其他的属性比如display:inline-block、float:left等也行,而只有zoom没什么副作用)

3、背景自适应
(1)让背景图片和网页内容都浮动,背景图片在最底下即可!

<!--背景图片-->
<div id="bodybg">   
     <img src="images/body_bg.png" class="stretch" alt="" />   
</div>
<!--背景图片 end-->

<!--ajc-wrapper-->
<div class="ajc-wrapper">
    <!------所有网页内容----------------->
</div>
<!--ajc-wrapper end-->

**CSS设置**
    /*--------------背景图片-------------*/
    #bodybg {   
        width: 100%;        
        position: absolute;    
        left: 0px;    
        bottom: 0px;    
        z-index: -10;   
    }   

    .stretch {   
        width:100%;     
    }  
    /*--------------背景图片 end-------------*/


    /*---------------ajc-wrapper-----------------*/
    .ajc-wrapper{
        width:100%;
        height:100%;
        overflow-y:scroll;
        position: absolute;    
            left: 0px;    
            bottom: 0px;    
            z-index: 1000;   
    }
    /*---------------ajc-wrapper end-----------------*/

(2)方法2

body {
    background: url(/img/bg.jpg) no-repeat center center fixed;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

来自 https://gist.github.com/isayme/3ae56568728675d3fddb

4、浮动层上下所有居中

 <!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<style type="text/css">
.sty{
    position:absolute;
    width:300px;
    height:200px;
    left:50%;
    top:50%;
    margin-left:-150px;   //宽度的一半
    margin-top:-100px; //高度的一半
    background-color:#fefefe;
    border:dashed 3px #666; 
}
</style>

<body>

<div class="sty">
111
</div>
</body>
</html>

5、<!DOCTYPE html>很重要
噩梦开始的源头:之前写html或者jsp页面,从来不注意doctype的声明,也不太明白doctype的作用。直到最近碰到了一个非常奇葩的bug:某一个页面在IE7和8,Chrome,ff等下正常,但是在IE9下显示有问题,我就开始找啊找,各种调试,各种log,终于在httpWatch里边找到了答案:DOCTYPE未声明。于是我给页面添加了<!DOCTYPE html>,果然奏效了。
?
下面我就尽可能简洁扼要的说一下DOCTYPE的作用和用法。
1作用:声明文档的解析类型(document.compatMode),避免浏览器的怪异模式。
document.compatMode
BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。
CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。
? ? ? ?这个属性会被浏览器识别并使用,但是如果你的页面没有DOCTYPE的声明,那么compatMode默认就是BackCompat,
这也就是恶魔的开始 -- 浏览器按照自己的方式解析渲染页面,那么,在不同的浏览器就会显示不同的样式。
? ? 如果你的页面添加了<!DOCTYPE html>那么,那么就等同于开启了标准模式,那么浏览器就得老老实实的按照W3C的
标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。
这就是<!DOCTYPE html>的作用。
?
2 使用:<!DOCTYPE html>
2.1?使用也很简单,就是在你的html页面的第一行添加"<!DOCTYPE html>"一行代码就可以了
2.2?jsp的话,添加在<%@ page %>的下一行。
2.3 不用区分大小写哦
?
想了解更多,可以参考:
w3c :?http://www.w3school.com.cn/tags/tag_doctype.asp
博文:http://i.wanz.im/2010/05/28/why_doctype_html/

6、Css2如何实现背景透明文字不透明
div {background: rgba(200, 54, 54, 0.5); 主要用于手机

7、页面布局
(1)两列布局,左列固定,右列可伸缩
A.左列设置向左浮动和固定宽高,右列只有高度

<style type="text/css">
.left{
    background-color: #E8F5FE;
    border: 1px solid #A9C9E2;
    float: left;
    height: 300px;
    width: 200px;
}
.right{
    background-color: #F2FDDB;
    border: 1px solid #A5CF3D;
    height: 300px;
}
</style>

<div class="left">left</div>

<div class="right">right</div>

B.若要两栏之间有间隙,则需要设置右栏的margin-left(左侧外边距)

margin-left :左侧width + 间隙宽度

(2)三列布局,左右固定,中间可伸缩(有最小宽度)

<!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>
<meta http-equiv="Content-Type" />
<title>3列布局</title>
<style type="text/css">
body {
    font-family: Verdana, Arial;
    margin: 0;
    font-size: 12px;
}
#container{
    /*添加外层容器,用来设置最小宽度*/
    min-width:975px; /*For FF*/
    _width:expression((document.documentElement.clientWidth||document.body.clientWidth)<1000?"975px":"auto"); /*For IE6*/
    background-color:#fff;
    border:1px solid #33CCFF;
}

#dyhead {
    margin-bottom: 10px;
}
#dyleft {
    float: left;
    width: 200px;
    height:300px;
}
#dycenter {
    margin: 0 210px;
    height:300px;
}
#dyright {
    float: right;
    width: 200px;
    height:300px;
}
#dyfoot {
    margin-top: 10px;
    clear: both;
}
div {
    background-color: #eee;
    border: dotted 1px green;
}
</style>
</head>
<body>
<div id="container">
    <div id="dyhead">头部(3列布局,左右两栏宽度固定,中间栏自适应宽度)</div>
    <div id="dyleft">左栏固定宽度为200px</div>
    <div id="dyright">右栏固定宽度为200px</div>
    <div id="dycenter">中间自适应宽度</div>
    <!--注意这里,中间3列的div的顺序不是“左中右”,而“左右中”,中间一列写在最后-->
    <div id="dyfoot">底部</div>
</div>
</body>
</html>

8、表格
1、固定表格表头
主要方法:表格外面套一个div,用div来实现滚动(x方向超过隐藏)。同时,table必须有 border-collapse: collapse; (合并表格边框)。
把表头设置为相对定位,提高层级,使其浮在上边,不发生滚动

   <meta http-equiv="X-UA-Compatible" content="IE=7" /> 
    <style type="text/css"> 
    div{ 
        overflow-y: scroll; 
        overflow-x: hidden; 
        height: 100px; 
        margin-top: 5px; 
        margin-left: 12px; 
        padding-top: -2px; 
        padding-bottom: 5px; 
        border: 3px solid #009933; 
    } 
    table{ 
        width: 100%; 
        border-color: #d2f1ac; 
        border-collapse: collapse; 
        border-top: 0px solid #ffffff; 
    } 
    .fixedtd th{ 
        position: relative; 
        z-index: 1; 
        background: #009933; 
        text-align: center; 
    } 
    </style> 

9、CSS中用到的@ (媒体查询、引入字体)

媒体查询

@media screen and (max-width:980px) {
  .....
}
<link rel="stylesheet" media="screen and (orientation : portrait ) and (min-width:800px) "  href="portrait-screen.css" />

@font-face{
      font-family:FontName;
      src : url( URL );
}

@import  url("photo.css") screen and (man-width:360px);

在当前样式中按条件引入其他样式表

媒体查询能检测到的特性:
width:视口大小
height:视口大小
device-width:设备屏幕大小
device-height:设备屏幕大小
orientation:设备出于横向还是纵向
aspect-ratio:基于视口的宽高比,例如:16/9
device-aspect-ratio:基于屏幕的宽高比
color:颜色,min-color可检测设备是否拥有16位颜色
color-index:设备颜色索引表中的颜色数
monnchrome:检测单色帧缓冲区中每像素所使用的位数。值必须是非负整数
resolution:用来检测屏幕或打印机的分辨率
scan:电视机的扫描方式,progressive(逐行扫描)、interlace(隔行扫描)
grid:检测输出设备是网格设备还是位图设备

10、小的Tips

  • 1)鼠标图标参数:cursor : point

  • 2)常用链接<a href="javascript:void(0);"></a>表示不采取任何操作

  • 3)网页收藏栏图标

    <link rel="icon" href="/guodu.ico" mce_href="guodu.ico" type="image/x-icon">
    ico文件尺寸不能超过255 X 255

  • 4)表单控件输入“默认文字” (IE7、8不兼容)

    <input type="text" class="form-control" placeholder="Email address" autofocus>输入框里面的默认文字

  • 5)text-indent 文字缩进量

  • 6)css阴影效果

    IE9+ / Firefox / Chrome / Opera / Safari
    .shadow {
    -moz-box-shadow: 3px 3px 4px #000;
    -webkit-box-shadow: 3px 3px 4px #000;
    box-shadow: 3px 3px 4px #000;
    }

IE 使用滤镜(兼容老版本)

.shadow {
    /* For IE 8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
    /* For IE 5.5 - 7 */
    filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');
}
  • 7)图片不存在的时候,显示一个默认图片

10、一行内文本超出指定宽度溢出的处理

  • 1)一般的文字截断(适用于内联与块):

.text-overflow {
display:block;/内联对象需加/
width:31em;
word-break:keep-all;/* 不换行 /
white-space:nowrap;/
不换行 /
overflow:hidden;/
内容超出宽度时隐藏超出部分的内容 /
text-overflow:ellipsis;/
当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一 起使用。*/
}

  • 2)对于表格文字溢出的定义:

table{
width:30em;
table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用。 /
}
td{
width:100%;
word-break:keep-all; /
不换行 /
white-space:nowrap; /
不换行 /
overflow:hidden; /
内容超出宽度时隐藏超出部分的内容 /
text-overflow:ellipsis; /
当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一 起使用。*/
}

  • 3)如何设置列表(li)超出部分显示省略号:

我们常常希望列表中的内容,超过设置的长度的时候,不要撑开父元素,也不希望它直接换行;我们更愿意让其超过部分用省略号来代替。而在title标签中,置放的是完整的标题。
这样的方法新手们常常不知道该如何搞定。下面就是方法的演示。不过请注意此方法适用与IE与OP浏览器!

li {
width:200px;
white-space:nowrap;
text-overflow:ellipsis;
overflow: hidden;
}

11、IE条件注释

<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="images/StyleSheet.css" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="images/css.css" />
<![endif]-->
<!–[if IE]>

这里是正常的html代码

<![endif]–>

  1,条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们。
  2,IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
  3,条件注释使用的是HTML的注释结构,因此他们只能使用在HTML文件里,而不能在CSS文件中使用。
可使用如下代码检测当前IE浏览器的版本(注意:在非IE浏览器中是看不到效果的)

<!--[if IE]>
       <h1>您正在使用IE浏览器</h1>
       <!–[if IE 5]>
           <h2>版本 5</h2>
       <![endif]-->
       <!--[if IE 5.0]>
           <h2>版本 5.0</h2>
       <![endif]-->
       <!--[if IE 5.5]>
           <h2>版本 5.5</h2>
       <![endif]-->
       <!--[if IE 6]>
           <h2>版本 6</h2>
       <![endif]-->
       <!--[if IE 7]>
           <h2>版本 7</h2>
       <![endif]-->
<![endif]-->

  那如果当前的浏览器是IE,但版本比IE5还低,该怎么办呢,可以使用<!–[if ls IE 5]>,当然,根据条件注释只能在IE5+的环境之下,所以<!–[if ls IE 5]>根本不会被执行。
  lte:就是Less than or equal to的简写,也就是小于或等于的意思。
  lt :就是Less than的简写,也就是小于的意思。
  gte:就是Greater than or equal to的简写,也就是大于或等于的意思。
  gt :就是Greater than的简写,也就是大于的意思。
  ! :就是不等于的意思,跟javascript里的不等于判断符相同

  Conditional comments属于CSS hack? 条件判断属于CSS hack吗?
  严格地说是属于CSS hack。因为就好象其他真正的css hack一样,它使得我们可以给一些浏览器赋予特殊的样式,再则它不依赖于某个浏览器的BUG来控制另外一个浏览器(的样式)。除此之外,条件判断还能用来做一些超出CSS HACK范围的事情(虽然这种情况很少发生)。
  因为条件判断不依赖于某个浏览器的hack,而是一个经过深思熟虑的特色功能,所以我相信它是可以被放心地使用的。当然,其他浏览器也有可能支持条件判断(到目前为止还没有),但是看起来,他们应该不会使用如<!–[if IE]>这样的语法。
  应该如何应用条件注释
  本文一开始就说明了,因为IE各版本的浏览器对我们制作的WEB标准的页面解释不一样,具体就是对CSS的解释不同,我们为了兼容这些,可运用条件注释来各自定义,最终达到兼容的目的。比如:

<!--默认先调用css.css样式表-->
<link rel="stylesheet" type="text/css" href="css.css" />
<!--[if IE 7]>
<!-- 如果IE浏览器版是7,调用ie7.css样式表 -->
<link rel="stylesheet" type="text/css" href="ie7.css" />
<![endif]-->
<!--[if lte IE 6]>
<!-- 如果IE浏览器版本小于等于6,调用ie.css样式表 -->
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]--> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值