1、复选框与文字的偏移问题
一般情况下,复选框的小方框会与文字偏差2px,如下所示:
为了解决该问题,需要在页面(不能再单独的CSS中写)上添加vertical-align:-2px;
<label title="笑话"><input name="vip0" type="checkbox" value="" style="vertical-align:-2px" /> 笑话</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/9device-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]-->
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。