??xml version="1.0" encoding="utf-8" standalone="yes"?> grid删除最后一行数据后Qstore reload ,因ؓ数据库中已经没有数据了,所以返回null . 但是ext不认q个东西Q所以在service中进行判断。如果数据ؓnull Q则q回 "{total:0,gridData:[]}" ; 重新~译Q运行后Q删除最后一行数据,׃看不C?/p>
]]>
原文Qhttp://www.alistapart.com/articles/holygrail
q个译的页面版权归greengnn所有,转蝲h明出?br>W一步:创徏一个结?br>
xhtml开始于header, footer, and container<div id="header"></div>
<div id="container"></div>
<div id="footer"></div>
CSS先定义containerQ给要加入的sideleftQ和sideright留下个位|?br>#container {
padding-left: 200px; /* LC width */
padding-right: 150px; /* RC width */
}
我们的布局现在看v来是q样?br>
?——创建框?br>
W二步:增加内容元素
在第一步基上增加内容元?code class=code><div id="header"></div>
<div id="container">
<div id="center" class="column"></div>
<div id="left" class="column"></div>
<div id="right" class="column"></div>
</div>
<div id="footer"></div>
然后分别定义widths和float 让元素排列在一条线上,q有清除footer的Q动对?br>#container .column {
float: left;
}
#center {
width: 100%;
}
#left {
width: 200px; /* LC width */
}
#right {
width: 150px; /* RC width */
}
#footer {
clear: both;
}
q里lcenter元素定义?00% widthQ让它占满montainer的可用空_现在的布局变成了这?br>
?Q增加内容元?br>
W三步:把left攑ֈ正确的位|?br>
要把left攑ֈ正确的位|,我们分两?br>
1.让left和center在同一水^U?code class=code>#left {
width: 200px; /* LC width */
margin-left: -100%;
}
看看效果
?——leftUd完成一?br>
2.用相对定位,把leftl箋Ud到正的位置#container .columns {
float: left;
position: relative;
}
#left {
width: 200px; /* LC width */
margin-left: -100%;
right: 200px; /* LC width */
}
上一步,leftq需要左U?00pxQ就可以了,所以就采用相对定位Q将他再向左?00px,pC惌的效果。让left距离他右边元素center 200px后,行了Qleftl于到自׃|上了?br>
?——leftC自己的位|?br>
W四步:让right也到自己的正的位置?br>
从上囄Q我们只需要把right推倒container的padding-right里面,看看怎么?br>#right {
width: 150px; /* RC width */
margin-right: -150px; /* RC width */
}
好了Q现在元素们都正归位了?br>
?——rightC自己正确的位|?br>
W五步:解决bug让布局更完?br>如果览器类型变_center变得比left了Q完的布局p打破Q我们给body 讄一个min-width
来解册个问题,因ؓIE不支持他Q所以不会有负面影响Q调整如?br>body {
min-width: 550px; /* 2x LC width + RC width */
}
q时在IE6Q完全打开的窗口)下,left元素距离左侧又太q了Q再调整* html #left {
left: 150px; /* RC width */
}
q些大小调整是根据上面已l定义的宽度来的Q你调整的时候也要根据自q实际情况?br>
现在增加padding
内容文字贴着容器的边Q相信你看得时候,不会很舒服,调整一?br>#left {
width: 180px; /* LC fullwidth - padding */
padding: 0 10px;
right: 200px; /* LC fullwidth */
margin-left: -100%;
}
当然不能只增加leftq完事Q要l一pd元素都必d上,也要调整增加paddingQ带来的新的bugQ调整如?br>body {
header和footer的padding可以随意增加Q这里就不提了,q有长度单位用em更具亲和力(em可以让用户用浏览器来调整自己需要的字体大小Q?br>但是不能混合使用Q选择em和px的时候明Z,察看效果
min-width: 630px; /* 2x (LC fullwidth +
CC padding) + RC fullwidth */
}
#container {
padding-left: 200px; /* LC fullwidth */
padding-right: 190px; /* RC fullwidth + CC padding */
}
#container .column {
position: relative;
float: left;
}
#center {
padding: 10px 20px; /* CC padding */
width: 100%;
}
#left {
width: 180px; /* LC width */
padding: 0 10px; /* LC padding */
right: 240px; /* LC fullwidth + CC padding */
margin-left: -100%;
}
#right {
width: 130px; /* RC width */
padding: 0 10px; /* RC padding */
margin-right: -190px; /* RC fullwidth + CC padding */
}
#footer {
clear: both;
}
/*** IE Fix ***/
* html #left {
left: 150px; /* RC fullwidth */
}
元素{高问题
采用http://www.positioniseverything.net/articles/onetruelayout/equalheight
有h译q来的:http://www.blueidea.com/tech/web/2006/3210.asp
里提到的ҎQ就不具体解释了?br>#container {
overflow: hidden;
}
#container .column {
padding-bottom: 20010px; /* X + padding-bottom */
margin-bottom: -20000px; /* X */
}
#footer {
position: relative;
}
再解决opera 8的bugQ代码调整如?br><div id="footer-wrapper">
<div id="footer"></div>
</div>* html body {
overflow: hidden;
}
* html #footer-wrapper {
float: left;
position: relative;
width: 100%;
padding-bottom: 10010px;
margin-bottom: -10000px;
background: #fff; /* Same as body
background */
}
]]>
margin:0 auto;
}
#ddd{
margin:0 auto;
padding: 3px;
background:#00FFCC;
border:solid 1px;
height: 300px;
}
#ddd h4{
margin:0px;
background:#6666FF;
line-height:20px;
}
#ddd ul{
margin:0px;
padding: 3px;
list-style:none;
}
#ddd ul li {
float:left;
}
#ddd a:visited{
background:#999999 url(../Mcredits.gif);
}
#ddd a:link{
background:#999999 url(../credits.gif);
}
#ddd a:hover{
background:#ff0000;
}
#leftmenu
{
position: absolute;
left: 0px;
width: 400px;
height: auto;
background-color: WhiteSmoke;
padding-top: 0px;
}
#leftmenu h3
{
font-size: 11.5;
margin: 0px;
margin-top: 10px;
padding-bottom: 2px;
padding-left: 3px;
border-top: solid 1px Gainsboro;
padding-top: 3px;
}
#leftmenu ul
{
list-style:none;
margin: 0px;
padding-left: 5px;
margin-left: 5px;
margin-bottom: 10px;
font-size: 11.5;
}
#leftmenu ul li
{
margin:0px;
float:left;
}
#leftmenu a
{
padding: 1px;
text-decoration: none;
}
#leftmenu a:active, #leftmenu a:visited, #leftmenu a:link
{
}
#leftmenu a:hover
{
font-style: italic;
}
</style>
]]>
16q制的色彩|如果每两位的值相同,可以~写一半,例如Q?br />#000000可以~写?000;#336699可以~写?369;
通常有下面四U书写方?
方便的记忆方法是时针,上右下左。具体应用在margin和padding的例子如下:
margin:1em 0 2em 0.5em;
Ҏ的属性如下:
可以~写Z句:border:1px solid #000;
语法?span class="code">border:width style color;
背景的属性如下:
可以~写Z句:background:#f00 url(background.gif) no-repeat fixed 0 0;
语法?span class="code">background:color image repeat attachment position;
你可以省略其中一个或多个属性|如果省略Q该属性值将用浏览器默认|默认gؓQ?/p>
字体的属性如下:
可以~写Z句:font:italic small-caps bold 1em/140% "Lucida Grande",sans-serif;
注意Q如果你~写字体定义Q至要定义font-size和font-family两个倹{?/p>
取消默认的圆点和序号可以q样写list-style:none;,
list的属性如?
可以~写Z句:list-style:square inside url(image.gif);
最q?l常有朋友问我一些工作中遇到的CSS问题。他们L不能很好的控制CSSQ媄响CSS的效率发挥。我来分析ȝ一下错误所在,帮助大家更加Ҏ使用CSS?/p>
本文ȝ了我开始用CSS布局Ҏ以来所有的技巧和兼容ҎQ我愿意把这些与你分享,我会重点解释一些新手容易犯的错?包括我自׃犯过?Q如果你已经是CSS高手Q这些经验技巧可能已l都知道Q如果你有更多的Q希望可以帮我补充?/p>
使用~写可以帮助减少你CSS文g的大,更加Ҏ阅读。css~写的主要规则请参看?a target="new">常用css~写语法ȝ》,q里׃展开描述?/p>
忘记定义寸的单位是CSS新手普遍的错误。在HTML中你可以只写width="100"Q但是在CSS中,你必ȝ一个准的单位Q比如:width:100px width:100em。只有两个例外情况可以不定义单位Q行高和0倹{除此以外,其他值都必须紧跟单位Q注意,不要在数值和单位之间加空根{?/p>
当在XHTML中用CSSQCSS里定义的元素名称是区分大写的。ؓ了避免这U错误,我徏议所有的定义名称都采用小写?/p>
class和id的值在HTML和XHTML中也是区分大写的,如果你一定要大小写合写Q请仔细认你在CSS的定义和XHTML里的标签是一致的?/p>
当你写给一个元素定义class或者idQ你可以省略前面的元素限定,因ؓID在一个页面里是唯一的,而clas s可以在页面中多次使用。你限定某个元素毫无意义。例如:
div#content { /* declarations */ }可以写成
#content { /* declarations */ }q样可以节省一些字节?/p>
通常padding的默认gؓ0Qbackground-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突Q可以在样式表一开始就先定义所有元素的margin和padding值都?Q象q样Q?/p>
* {
margin:0;
padding:0;
}
CSS中,子元素自动承父元素的属性|象颜艌Ӏ字体等Q已l在父元素中定义q的Q在子元素中可以直接l承Q不需要重复定义。但是要注意Q浏览器可能用一些默认D盖你的定义?/p>
如果对同一个元素的定义有多U,以最接近(最一U?的定义ؓ最优先Q例如有q么一D代?/p>
Update: Lorem ipsum dolor set
在CSS文g中,你已l定义了元素pQ又定义了一个class"update"
p {q两个定义中Qclass="update"被使用Q因为class比p更近。你可以查阅W3C的?Calculating a selector’s specificity?了解更多?/p>
一个标{֏以同时定义多个class。例如:我们先定义两个样式,W一个样式背景ؓ#666Q第二个样式?0 px的边框?/p>
.one{width:200px;background:#666;}
.two{border:10px solid #F00;}
在页面代码中Q我们可以这栯?/p> <div class="one two"></div>
q样最l的昄效果是这个div既有#666的背景,也有10px的边框。是的,q样做是可以的,你可以尝试一下?/p>
CSS初学者不知道使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这D代码:
<div id="subnav">q段代码的CSS定义是:
div#subnav ul { /* Some styling */ }你可以用下面的方法替代上面的代码
<ul id="subnav">样式定义是:
#subnav { /* Some styling */ }用子选择器可以你的代码和CSS更加z、更加容易阅诅R?/p>
Z节省字节Q我不要l背景图片\径加引号Q因为引号不是必ȝ。例如:
background:url("images/***.gif") #333;可以写ؓ
background:url(images/***.gif) #333;如果你加了引P反而会引v一些浏览器的错误?/p>
当一些元素类型、class或者id都有共同的一些属性,你就可以使用l选择器来避免多次的重复定义。这可以节省不少字节?
例如Q定义所有标题的字体、颜色和marginQ你可以q样写:
h1,h2,h3,h4,h5,h6 {如果在用时Q有个别元素需要定义独立样式,你可以再加上新的定义Q可以覆盖老的定义Q例如:
h1 { font-size:2em; }当你用CSS来定义链接的多个状态样式时Q要注意它们书写的顺序,正确的顺序是Q?link :visited :hover :active。抽取第一个字母是"LVHA"Q你可以记忆?LoVe HAte"(喜欢讨厌)。ؓ什么这么定义,可以参考Eric Meyer的?a target="new">Link Specificity》?/p>
如果你的用户需要用键盘来控Ӟ需要知道当前链接的焦点Q你q可以定?focus属性?focus属性的效果也取决与你书写的位置Q如果你希望聚焦元素昄:hover效果Q你把:focus写在:hover前面Q如果你希望聚焦效果替代:hover效果Q你把:focus攑֜:hover后面?/p>
一个非常常见的CSS问题Q定位用Q动的时候,下面的层被Q动的层所覆盖Q或者层里嵌套的子层出了外层的范围?/p>
通常的解军_法是在Q动层后面d一个额外元素,例如一个div或者一个brQƈ且定义它的样式ؓclear: both。这个办法有一点牵强,q运的是q有一个好办法可以解决Q参看这文章?a target="new">How To Clear Floats Without Structural Markup?注:本站尽快翻译此??/p>
上面2U方法可以很好解xQ动超出的问题Q但是如果当你真的需要对层或者层里的对象q行clear的时候怎么办?一U简单的Ҏ是用overflow属性,q个Ҏ最初的发表在?a target="new">Simple Clearing of Floats》,又在?a target="new">Clearance》和?a target="new">Super simple clearing floats》中被广泛讨论?/p>
上面那一UclearҎ更适合你,要看具体的情况,q里不再展开。另外关于float的应用,一些优U的文章已l说得很清楚Q推荐你阅读Q?a target="new">Floatutorial》、?a target="new">Containing Floats》和?a target="new">Float Layouts?/p>
q是一个简单的技巧,但是值得再说一遍,因ؓ我看见太多的新手问题都是问这个:CSS如何横向居中Q你需要定义元素的宽,q且定义横向的marginQ如果你的布局包含在一个层(容器)中,pq样Q?/p>
你可以这样定义它横向居中:
#wrap {但是IE5/Win不能正确昄q个定义Q我们采用一个非常有用的技巧来解决Q用text-align属性。就象这P
body {W一个body的text-align:center; 规则定义IE5/Win中body的所有元素居?其他览器只是将文字居中) Q第二个text-align:left;是将#warp中的文字居左?/p>
因ؓ老版本浏览器不支持CSSQ一个通常的做法是使用@import技巧来把CSS隐藏h。例如:
@import url("main.css");然而,q个Ҏ对IE4不v作用Q这让我很是头疼了一阵子。后来我用这L写法Q?/p> @import "main.css";
q样可以在IE4中也隐藏CSS了,呵呵Q还节省?个字节呢。想了解@import语法的详l说明,可以看这里?a target="new">centricle’s css filter chart?/p>
有些时候,你需要对IE览器的bug定义一些特别的规则Q这里有太多的CSS技?hacks)Q我只用其中的两种ҎQ不微软在卛_发布的IE7 beta版里是否更好的支持CSSQ这两种Ҏ都是最安全的?/p>
另外一U方法,我认为比CSS Hacks更加l得赯验是采用微Y的私有属性条件注?conditional comments)。用q个Ҏ你可以给IE单独定义一些样式,而不影响L式表的定义。就象这P
<!--[if IE]>当调试CSS发生错误Q你p象排版工人,逐行分析CSS代码。我通常在出问题的层上定义一个背景颜Ԍq样p很明昄到层占据多大I间。有些h用borderQ一般情况也是可以的Q但问题是,有时候border 会增加元素的寸Qborder-top和boeder-bottom会破坏纵向margin的|所以用background更加安全些?
另外一个经常出问题的属性是outline。outline看v来象boederQ但不会影响元素的尺寸或者位|。只有少数浏览器支持outline属性,我所知道的只有Safari、OmniWeb、和Opera?/p>
在写CSS代码的时候,对于~进、断行、空|每个人有每个人的书写习惯。在l过不断实践后,我决定采用下面这L书写样式Q?/p>
selector1,
selector2 {
property:value;
}
当用联合定义时Q我通常每个选择器单独写一行,q样方便在CSS文g中找到它们。在最后一个选择器和大括号{之间加一个空|每个定义也单独写一行,分号直接在属性值后Q不要加I格?/p>
我习惯在每个属性值后面都加分P虽然规则上允许最后一个属性值后面可以不写分P但是如果你要加新样式时容易忘记补上分可生错误,所以还是都加比较好?/p>
最后,关闭的大括号}单独写一行?/p>
I格和换行有助与阅读?/p>