Posts Tagged ‘样式’

大家看了就明白了css样式中类class与标识id选择符的区别小结

星期三, 06月 4th, 2008

您可以用类选择符class和标识选择符id来定义自己de选择符.
这样做de好处是,依赖于class或者id,您可以不同地表现相同deHTML元素.
在CSS中,类选择符在一个半角英文句点(.)之前,而id则在半角英文井号(#)之前.
看起来像这样:
#top { background-color: #ccc; padding: 1em } .intro { color: red; font-weight: bold; }
HTML与CSSde连接用属性id和class.像这样:
<div id=”top”> <h1>Chocolate curry</h1> <p class=”intro”>This is my recipe for making curry purely with chocolate</p> <p class=”intro”>Mmm mm mmmmm</p> </div>
id和class不同之处在于,id用在唯一de元素上,而class则用在不止一个de元素上.
您也可以为一个指定deHTML元素应用选择符,把HTML选择符放置在前面就可以了,所以, p.jam { whatever }会应用在有类“jam”de段落上.

一个id名称在一个页面里面通常是唯一定义de,因此在页面里定义css通常建议使用class,这样您可以重复使用您decss. 而把id留给最需要使用html元素dejavascript等

用css alpha 滤镜 实现input file 样式美化代码

星期三, 06月 4th, 2008

在WEB上传文件时,要用到上传框:
<input type=”file” id=”f” name=”f”>
这东东在IE(其他偶没经过测试)中是一个非常特殊de对象. 如果是您手动写入de或其他对象经过某些事件触发填入de值 ,由于安全问题,在进行提交表单时,往往会被清空,所以上传失败. 简单点说,除非您de鼠标亲自点到了上传框f上,IE才会给您上传文件!
哪怕您将 f deonclick句柄赋给某个对象,如:
<input type=”file” id=”f” name=”f”>
<input onclick=”f.click()” value=”点击”>
您 “点击” 后,同样会弹出文件选择对话框,可惜失望地:您照样不能上传文件! 怎么办呢? 看下这段:
<BODY onmousemove=”f.style.pixelLeft=event.x-200;f.style.pixelTop=event.y-10;”>
<input type=”text”><input type=”button” onmousemove=”">
<input type=”file” id=”f” name=”f” style=”position:absolute;”>
</BODY>
随便点击鼠标,看到效果了吧? 基于上面de思路,偶们就可以把它弄到一个button下面就OK了!!
点击运行可以看到效果:
[Ctrl A 全选 提示:您可先修改部分相关代码,再按运行]

为了达到真正模拟de效果,还得要把f给隐藏,加个不透明dealpha 滤镜即可,再加上 hidefocus 属性,隐藏fde虚线:
点击运行可以看到效果:
[Ctrl A 全选 提示:您可先修改部分相关代码,再按运行]
可以看下opacity=0改为稍大些de效果.
OK了,现在您就可以控制它们de样式、位置了…

在IE中为abbr标签加样式

星期三, 06月 4th, 2008

作者:JunChen 2005-5-24 9:56:57
原文:http://www.sovavsiti.cz/css/abbr.html
翻译:JunChen

版权:译者JunChen所有,转载请联系译者.
简介

<abbr>是用来为web页面上de简称(译者注:这里把简称和缩写分开而论,简称范围比缩写大,取首字母de缩写用<acronym>标签)添加适当标注deXHTML标签,WindowsdeIE浏览器暂不支持<abbr>标签. 在IE里,您可以应用CSS给<acronym>但是不能应用给<abbr>标签,IE会为<acronym>标签detitle属性显示提示,但是会忽略<abbr>标签.

这个IEdebug(或者特色)使得一些网站人员认为<abbr>标签一点用都没有,而显然这么认为是不对de.在Mozilla和Opera里还是很正确de处理了这个标签,并且它对于web内容de可读性和语义化来说非常重要.这也是我为什么一直在寻找解决方法,最终我找到了.

解决方法

本方法基于一个简单de事实:即使IE会忽略<abbr>标签,但是其他嵌套在<abbr>标签里de标签还是正常de.所以我在嵌了一个<span>标签在<abbr>里,设置<span>detitle和class属性,然后<abbr>开始变得和<acronym>标签一样了.

相关代码例子

看一下下面de相关代码,是一个简单de缩写词de例子:

<abbr title=”Cascading Style Sheets”>CSS</abbr>
现在,对比一下修改后de相关代码:

<abbr title=”Cascading Style Sheets”><span class=”abbr” title=”Cascading Style Sheets”>CSS</span></abbr>
自动操作

手动de给每一个<abbr>标签嵌入<span>显然不可能——既无聊又对Mozilla和Opera没必要.幸运de是,现在有一个自动de、基于客户端脚本de解决方法.

您可能注意到了,这个页面(译者注:原作者de页面)上de简写词语即使在IE里都会有提示,并且加了CSS样式(虚下划线和一个问号状de鼠标光标).然而您如果看一下源相关代码,您将找不到在上文提到de<span>标签.这得益于本页加载de一个简单deJavaScript:

function styleAbbr() {
var oldBodyText, newBodyText, reg
if (isIE) {
oldBodyText = document.body.innerHTML;
reg = /<ABBR([^>]*)>([^<]*)<\/ABBR>/g;
newBodyText = oldBodyText.replace(reg, ‘<ABBR $1><SPAN class=\”abbr\” $1>$2</SPAN></ABBR>’);
document.body.innerHTML = newBodyText;
}
}
window.onload = function(){
styleAbbr()
};

isIE = (document.all) ? true:false;

这段脚本会检查客户端浏览器,如果是IE,那么则替换所有de<abbr>标签为修改过de版本(嵌入了<span>).注意de是我必须使用正则表达式和innerHTML属性来取代标准deDOM方法,因为IE不能通过DOM来获取<abbr>属性.

样式化

最后看一下这个页面上使用deCSS.相当简单:

abbr, acronym, span.abbr {
cursor: help;
border-bottom: 1px dashed #000;
}
Mozilla和Opera使用abbr和acronym属性选择器,IE则使用acronym和span.abbr.无论如何,<abbr>和<acronym>都被样式化了——一个问号状de鼠标光标(当鼠标指上后)和虚下划线.

其他

1.感谢Michael Kusyn提供了JavaScript解决方法.
2.更多关于<abbr>,<acronym>标签和两者de区别,参考Craig SailadeHTML is not an acronym… (Evolt.org)

欢迎交流意见评论,可以发邮件至marek@sovavsiti.cz.

引入CSS样式的五种方式

星期三, 06月 4th, 2008

一、使用STYLE属性

将STYLE属性直接加在个别de元件标签里,<元件(标签) STYLE=”性质(属性)1: 设定值1; 性质(属性)2: 设定值2; …}

例如:
<TD STYLE=”COLOR:BLUE; font-size:9pt; font-family:”标楷体”; line-height:150%>
这种用法de优点 是可灵巧应用样式於各标签中,但是缺点则是没有整篇文件de『统一性』.

二、使用STYLE标签

将样式规则写在<STYLE>…</STYLE>标签之中.
<STYLE TYPE=”text/CSS”>
<!–
样式规则表
–>
</STYLE>
例如:
<STYLE TYPE=”text/css”>
<!–
BODY {
  color: BLUE;
  background: #FFFFCC;
  font-size: 9pt}
TD, P {
  COLOR: GREEN;
  font-size: 9pt}
–>
</STYLE>
通常是将整个de <STYLE>…</STYLE>结构写在网页de<HEAD> </HEAD>部份之中.这种用法de优点就是在於整篇文件de统一性,只要是有声明dede元件即会套用该样式规则.缺点就是在个别元件de灵活度不足.

三、使用 LINK标签

将样式规则写在.cssde样式档案中,再以<LINK>标签引入.
假设我把样式规则存成一个example.cssde档案,我只要在网页中加入
<LINK REL=STYLESHEET TYPE=”text/css” HREF=”example.css”>
即可套用该样式档案中所制定好de样式了. 通常是将LINK标签写在网页de<head></head>部份之中.这种用法de优点就是在於可以把要套用相同样式规则de数篇文件都指定到同一个样式档案即可.缺点也是在个别文件或元件de灵活度不足.


四、使用@import引入

跟LINK用法很像,但必 放在<STYLE>…</STYLE> 中.
<STYLE TYPE=”text/css”>
<!–
  @import url(引入de样式表de位址、路径与档名);
–>
</STYLE>
例如:
<STYLE TYPE=”text/css”>
<!–
  @import url(http://yourweb/ example.css);
–>
</STYLE>
要注意de是,行末de分号是绝对不可少de!

五、使用<span></span>标记引入样式

例如:<span style=”font:12px/20px 宋体 #000000;”>WEB标准</span>

样式表CSS布局经验

星期三, 06月 4th, 2008

  随着时间de积累这里de内容会有增加或者修改,希望下面de东西对后来de标准学习者会有些帮助,或者毫无用处.

  主要de内容是在IE和MOZILLA之间de差异和容易忽视de细节,一些经典应用de最佳实现方法,应该避免违犯de错误.

  由于是自己平时经验de积累,难免会出现一些错误de解释,如有幸被高人看到,请务必指出,先谢过了.

  ul 标签在Mozilla中默认是有padding值de,而在IE中只有margin有值.

  同一个declass选择符可以在一个文档中重复出现,而id选择符却只能出现一次;对一个标签同时使用class和id进行CSS定义,如果定义有重复,id选择符做de定义有效.

  一个兼容性调整(IE和Mozilla)de笨办法:

  初学可能会碰到这样一个情况:同样一个标签de属性在IE设置成A显示是正常de,而在Mozilla里必须要设成B才能正常显示,或者两个倒过来.

  临时解决方法:

  选择符 {属性名:B !important ; 属性名:A;}

  如果一组要嵌套de标签之间需要些间距de话,那就留给位于里面de标签demargin属性吧,而不要去定义位于外面de标签depadding

  li 标签前面de图标推荐使用background-image 而不是list-style-image

  IE分不清继承关系和父子关系de差别,全部都是继承关系.

  在给您de标签疯狂加选择符de时候,别忘了在CSS里给选择符加上注释. 等您以后修改您deCSSde时候就知道为什么要这么做了.

  如果您给一个标签设置了一个深色调de背景图片和亮色调de文字效果.建议这个时候给您de标签再设置一个深色调de背景颜色.

  定义链接de四种状态要注意先后顺序: Link Visited Hover Active

  与内容无关de图片请使用background

  定义颜色可以缩写#8899FF = #89F

  table 在某些方面比其它标签表现de要好de多.请在需要列对齐de地方用它

<script>没有language这个属性,应该写成这样:
<script type=”text/javascript”>

  标题是标题,标题de文字是标题de文字.有时候标题不一定需要显示文字,所以:<h1>标题内容</h1> 改成 <h1><span>标题内容</span></h1>


  完美de单象素外框线表格

table {border-collapse:collapse;}
td {border:#000 solid 1px;}

  margin取负值可以在标签使用绝对定位de时候起到相对定位de作用,在页面居中显示时,使用绝对定位de层不适合使用left:XXpx这个属性. 把这个层放到一个要相对定位de标签旁,然后使用marginde负值是个好方法.

  绝对定位时使用margin值定位可以达到相对于本身所在位置de定,这与top,left等属性相对与窗口边缘de定位不同.绝对定位de优势在于可以让其它元素忽略它de存在.

W3C标准:实时切换CSS样式

星期三, 06月 4th, 2008

用W3C标准建造de网站,从理论上来说可以做到完全de表现与结构相分离.打个比方,就是可以在不动骨架(结构,XHMTL)和肌肉(行为,Javascript)de前提下,彻彻底底地换一身皮(表现,CSS).

当然,换皮之前您需要先按W3C标准建好您de网站,并且为它准备两套表现不一样deCSS.“换皮”实质上就是“换CSS”,我要做de,只是用某种方法让浏览器载入另一套CSS,重新渲染页面.方法有很多种,我就介绍最常见de三种.

方法一:什么也不干

啊?什么也不干?嗯,这个……准确地说是:就干那么一丁点儿 (您还真以为有这么好de事儿呀……).

假设我有两套CSS,分别封闭在两个不同de文件中:a.css和b.css.然后在<head>和</head>之间加入如下两行XHTML相关代码:

然后用您deFirefox打开这个页面,在菜单栏中选择:查看 -> 页面风格,应该可以看到如下de“风景”:

就这么简单,现在您就可以用Firefox来“换皮”了.IE?IE没这个功能……MS就是这么拽,W3C“明文推荐”:要求浏览器提供给用户自己选择样式表de权力,可它就不这么干.幸运de是这件事也不是太难杂,咱就代劳一下吧.

[separator]

方法二:Javascript

在方法一de基础上,可以用JavascriptdeDOM方法访问link对象,再将不需要deCSS设为“禁用(disabled)”,剩下deCSS就会被浏览器用来渲染页面.脚本如下,请注意其中de注释:

然后在合适de地方调用这个函数,以本页为例,添加如下两个按钮:

<input type=”button” value=”清光” onclick=”setStyle(”清光”);” />
<input type=”button” value=”冥焰” onclick=”setStyle(”冥焰”);” />
  

使 用Javascriptde好处是方便、快捷、简单,缺点也是很明显de:很难做到全站deCSS切换,只能局限在当前页上.为了记忆用户de选择,可行de方案就 是采用cookie.可是就算使用cookie,也需要在何时载入CSS,用户没有Javasciprt支持怎么办等问题上多做好些文章.所以不如用下面 de方法——

方法三:服务器端脚本

毫无疑问,最好deCSS切换器应该使用服务器端脚本(PHP、ASP、JSP等)来开发.这样做de好处是很明显de:直接、高效、兼容性好、可以记忆用户选择、甚至可以组合不同deCSS实现相当复杂de“皮肤”切换.

我这里就用PHP为例,用其他de语言也都大同小异,对一般de开发人员来说不会有任何困难.

基本思路是这样:用户选择一种“皮肤”,把用户de选择记入cookie(记入数据库也一样,不过这样系统开销会大一些),用户访问网站上de任何一个页面时,再从cookie(或数据库)中读出之前用户de选择,载入相应deCSS文件(这里还是以方法一中讲到dea.css和b.css为例).

创建一个名为switcher.phpde文件,内容如下:

<php$style =
$_GET["style"];setcookie(’’style”,$style,time() 31536000,”/”,”.site.com”,”0”)
;header(”location:”.$_SERVER[''HTTP_REFERER'']);?>
 

这段脚本先读取query数据,然后把参数stylede值记入cookie,最后返回上一页.接下来我就可以创建两个用于切换样式de链接了,并且放在合适de页面上,比如首页或用户管理后台(注意把其中desite.com换成您de域名):

<a href=”switcher.php?style=a”>主题A</a>
<a href=”switcher.php?style=b”>主题B</a>
  

点击任意一个链接,相应de就会把“a”或“b”记入cookie,然后就需要一段脚本来读取这个cookie值并且输出XHTML来引入对应deCSS:

<php if(isset($_COOKIE["style"])){$style= $_COOKIE["style"];}else{$style= “a”;//默认采用主题A?}?>
<link rel=”stylesheet” type=”text/css”
title=”当前选择de主题” href=”<?php echo $style ?>.css” />

每一个需要切换样式de页面都要加上这段相关代码,所以直接把它加入网站de头文件中就行了.当然您可以根据自己de需要修改这个脚本,但万变不离其宗,总de思路应该是不变de.

<script type=”text/javascript”>
function setStyle(title) {

//预定义变量
var i, links;

//用DOM方法获得所有delink元素
links?= document.getElementsByTagName(”link”);
for(i=0; links[i]; i ) {

//判断此link元素derel属性中是否有style关键字
//即此link元素是否为样式表link
//同时判断此link元素是否含有title属性
if(links[i].getAttribute(”rel”).indexOf(”style”) != -1
&& links[i].getAttribute(”title”)) {

//先不管三七二十一把它设为disabled
links[i].disabled = true;

//再判断它detitle中是否有我指定de关键字
if(links[i].getAttribute(”title”).indexOf(title) != -1)

//如果有则将其激活
links[i].disabled = false;
}
}
}
</script>

<link rel=”stylesheet” type=”text/css”
title=”主题A” href=”a.css” />

<link rel=”alternate stylesheet” type=”text/css”
title=”主题B” href=”b.css” />?

详谈 CSS样式表使用:链接/嵌入

星期三, 06月 4th, 2008

在阿捷dew3cn中,他说:

引用内容
在以前,我通常采用2种方法使用样式表:
页面内嵌法:就是将样式表直接写在页面相关代码dehead区.类似这样:
<style type=”text/css”> <!– body { background : white ; color : black ; } –> </style>
外部调用法:将样式表写在一个独立de.css文件中,然后在页面head区用类似以下相关代码调用.
<link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” />
在符合web标准de设计中,我使用外部调用法,好处不言而喻,您可以不修改页面只修改.css文件而改变页面de样式.如果所有页面都调用同一个样式表文件,那么改一个样式表文件,可以改变所有文件de样式.

可见阿捷是十分推崇用<link>de.补充一下阿捷de话,使用<link>de好处不单单是修改起样式表很方便,而且会使用户de浏览速度加快.用户第一次打开链接了样式表de页面后,样式表会自动下载到本地缓存当中.当用户再打开另一个页面,而这个页面如果也链接了同样de样式表de时候,会从缓存中读取相关de文件,这样就会加快浏览de速度.

但是我也碰到过这种情况:有时碰到网络不顺畅de情况,页面打开以后,链接de样式表没有加载成功.这种情况造成de后果,不仅仅是页面文字de颜色、大小等等样式无法显示,更麻烦de是很可能造成整个页面de布局乱了套!

比如有一次我打开Macromedia.comde时候,碰到公司网络不畅,也许是因为有很多人在bt吧…结果页面显示出de样子完全是没有样式表de样子,熟悉de布局看不到了,所有内容从上往下排列,就像用手机在浏览网站.虽然内容还能全部看到,但我不得不花些时间去熟悉这种新de布局,浏览de时候也有一种不顺畅de感觉.

在做金山在线首页de时候(上一版,现在已经看不到了),我就把所有样式嵌入到了页面de<head>区.首页是一个网站流览量最大de页面,必须保证高de可靠性.而且只对首页样式表采取嵌入de方式,其他页面还是用<link>,修改样式时不会增加太多de工作量.

周末做amaoagoude首页,我对样式更进一步进行了规划:把与布局有关de样式:#head、#left之类都嵌入到页面内部,其他样式采用链接de方式.

总结一下:

* 方法一:首页完全采用嵌入de方法,其他页面均采用链接de方式.优点:这样可以保证首页在网络状况不好de情况下仍然能够正确显示.缺点:修改样式时需要修改外部样式表和首页内嵌de样式表两个地方.
* 方法二:将负责布局de样式和其他样式分开写.首页嵌入布局de样式,链接其他样式;其他页面对于两套样式均采用链接方式.优点:修改样式时,比第一种工作量小.网络状况不好时,首页de外观不能完全保证,但至少布局不会乱.
* 如果制作de不是符合标准de页面,比如公司产品de一个小专题,领导要求用table制作以确保专题上线速度.对于各个页面都会用到de样式:链接.对于只有这一个页面会用到,但会用到很多次de样式:嵌入<head>.对于只有这一个页面会用到且只使用一次de样式:嵌入<head>或者干脆直接写style=”…”得了.

动态CSS站点教程:多个页面样式提供浏览者选择

星期三, 06月 4th, 2008

在cnbruce’’s blog上看到这个即时换STYLEde相关代码,觉得不错就COPY过来备用.
在见de例子就是:一个站点上有多个页面样式提供浏览者选择.同时,在选择了某样式后,再次打开该页面时,将仍然保持该样式.自然会想到了Cookie技术.


程序相关代码
<HTML>
<HEAD>
<link ID=”skin” rel=”stylesheet” type=”text/css”>
<TITLE>换肤技术</TITLE>
<SCRIPT LANGUAGE=javascript>
<!–
function SetCookie(name,value){
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(2<argc)?argv[2]:null;
var path=(3<argc)?argv[3]:null;
var domain=(4<argc)?argv[4]:null;
var secure=(5<argc)?argv[5]:false;
document.cookie=name “=” escape(value) ((expires==null)?”":(”; expires=” expires.toGMTString())) ((path==null)?”":(”; path=” path)) ((domain==null)?”":(”; domain=” domain)) ((secure==true)?”; secure”:”");
}

function GetCookie(Name) {
var search = Name “=”;
var returnvalue = “”;
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset = search.length;
end = document.cookie.indexOf(”;”, offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset,end));
}
}
return returnvalue;
}

var thisskin;
thisskin=GetCookie(”nowskin”);
if(thisskin!=”")
skin.href=thisskin;
else
skin.href=”css.css”;

function changecss(url){
if(url!=”"){
skin.href=url;
var expdate=new Date();
expdate.setTime(expdate.getTime() (24*60*60*1000*30));
//expdate=null;
//以下设置COOKIES时间为1年,自己随便设置该时间..
SetCookie(”nowskin”,url,expdate,”/”,null,false);
}
}
//–>
</SCRIPT>
</HEAD>
<BODY>

<P>请选择下面de下拉菜单测试换肤效果</P>

<a href=# onclick=”changecss(”css.css”)”>css.css</a>
<a href=# onclick=”changecss(”css1.css”)”>css1.css</a>
<a href=# onclick=”changecss(”css2.css”)”>css2.css</a>
<a href=# onclick=”changecss(”css3.css”)”>css3.css</a>
<br>

<select onchange=”changecss(this.value)”>
<option>选择样式单文件</option>
<script language=”javascript”>
var csss=new Array();
csss[0]=”css.css”;
csss[1]=”css1.css”;
csss[2]=”css2.css”;
csss[3]=”css3.css”;
var i;
for(i=0;i<4;i )
if(thisskin==csss[i])
document.write(”<option value=\”" csss[i] “\” selected>” csss[i] “样式单文件</option>”);
else
document.write(”<option value=\”" csss[i] “\”>” csss[i] “样式单文件</option>”);
</script>
</select>
</BODY>
</HTML>