论坛首页 AJAX版 UI

发布一个基于Prototype和Canvas实现的仿Google导航条

浏览 3308 次
该帖已经被评为良好帖
作者 正文
时间:2008-07-07
你说的这个是html语言规范定义的合法嵌套关系,以及这种关系下对应的默认样式
比如:
<span><div></div></span>
很明显从语义上就是错误的,内联区域当然不能反过来包含basal分区
这一点当然大家都没有什么疑议。

但是——这种表现语义上合法嵌套关系对应的默认样式,是否也对CSS样式渲染做了规约呢?

通览CSS1-3,找不到这样的显式约定或关联的隐式约定,
再者,如果规范里有这方面的规约(或者是浏览器开发人员公认的),相信大多数遵循标准的现代浏览器都会对定义inline样式的元素所包含的子元素所做的block样式定义拒绝渲染的。
引用

<a href="javascript:;" style="background:#ff0;">aa<span style="display:block;margin:20px auto; height:100px; background:#f00;">bb</span>cc</a>dd


aa被分割为一个匿名block(但<a></a>依然表现内联样式特性),span定义为block后margin-top和margin-bottom也可以被正常渲染。
   
0 请登录后投票
时间:2008-07-07
讨论这个有点偏题了,抱歉,呵呵

另外,下面这个是我之前写的,也内存泄漏问题,希望得到指点修正一下:
引用

<!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>zCool</title>
<style type="text/css" >
#g li{
list-style:none;
float:left;
margin:20px;
border:1px solid #ccc;
width:50px;
height:37px;
background:url(http://www.google.cn/intl/zh-CN/images/toolbar_animation_20080512.png) no-repeat;
cursor:pointer;
}
img{
border:1px dashed #ccc;
}
</style>
</head>
<body>
<ul id="g">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<img src="http://www.google.cn/intl/zh-CN/images/toolbar_animation_20080512.png" />
<script type="text/javascript">
var _setInterval=window.setInterval;
window.setInterval=function(fn, delay){
if(typeof fn=="function"){
var args=Array.prototype.slice.call(arguments, 2);
var f=function(){fn.apply(null, args)};
return _setInterval(f, delay);
}
return _setInterval(fn, delay);
}

var li=document.getElementById("g").getElementsByTagName("li"), intervalId, j=0;
for(var i=0, l=li.length; i<l; i++){
var lii=li[i], bp="0px "+(i*-37)+"px";
lii.style.backgroundPosition=bp;
lii.onmouseover=function(){
intervalId=setInterval(flash, 50, this.style);
};
lii.onmouseout=(function(bp){
return function(){
intervalId=clearInterval(intervalId);
j=0;
this.style.backgroundPosition=bp;
}
})(bp);
}

function flash(ts){
if(j<5){
if(j<4){
ts.backgroundPosition=ts.backgroundPosition.replace(/^(-?\d+)(?=px\s-?\d+px)/, function(){return parseInt(arguments[1])-52;});
}else{
ts.backgroundPosition=ts.backgroundPosition.replace(/(-?\d+)(?=px$)/, function(){return parseInt(arguments[1])+4;});
}
j++;
intervalId=clearInterval(intervalId);
intervalId=setInterval(flash, 50, ts);
}else{
intervalId=clearInterval(intervalId);
j=0;
}
};
</script>
</body>
</html>

   
0 请登录后投票
时间:2008-07-08
修改了下:
引用

<!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>zCool</title>
<style type="text/css" >
#g{ display:inline;}
#g li{
list-style:none;
float:left;
margin:10px;
width:50px;
height:37px;
background:url(http://www.google.cn/intl/zh-CN/images/toolbar_animation_20080512.png) no-repeat;
cursor:pointer;
}
#g a{
position:absolute;
padding:48px 0 0;
width:50px;
font:12px/22px "宋体";
text-align:center;
white-space:nowrap;
text-decoration:none;
}
#g a:hover{
color:#f00;
text-decoration:underline;
}
em.new{
color:#f00;
font:10px "宋体";
vertical-align:top;
}
img{ border:1px dashed #ccc;}
</style>
</head>
<body>
<ul id="g">
<li><a href="javascript:;" title="搜索热门网络视频">视频</a></li>
<li><a href="javascript:;" title="搜索全球的图片">图片</a></li>
<li><a href="javascript:;" title="搜索您身边的分类生活信息">生活<em class="new">新!</em></a></li>
<li><a href="javascript:;" title="查询地址、搜索周边和规划线路">地图</a></li>
<li><a href="javascript:;" title="商业信息、财经新闻、实时股价和动态图表">财经</a></li>
<li><a href="javascript:;" title="查看分类热门搜索排行">热榜</a></li>
<li><a href="javascript:;" title="网址大全、快速直达分常用网站">网站导航</a></li>
</ul>
<img src="http://www.google.cn/intl/zh-CN/images/toolbar_animation_20080512.png" />
<script type="text/javascript">
// IE缓存图像
try{
document.execCommand("BackgroundImageCache", false, true);
}
catch(e){
}

var li=document.getElementById("g").getElementsByTagName("li"), intervalId, j=0;
for(var i=0, l=li.length; i<l; i++){
var lii=li[i], bp="0px "+(i*-37)+"px";
lii.style.backgroundPosition=bp;
lii.onmouseover=function(){
intervalId=setInterval((function(o){return function(){flash.call(o)}})(this), 50);
};
lii.onmouseout=(function(bp){
return function(){
intervalId=clearInterval(intervalId);
j=0;
this.style.backgroundPosition=bp;
}
})(bp);
}

function flash(){
var ts=this.style;
if(j<5){
if(j<4){
ts.backgroundPosition=ts.backgroundPosition.replace(/^(-?\d+)(?=px\s-?\d+px)/, function(){return parseInt(arguments[1])-52;});
}else{
ts.backgroundPosition=ts.backgroundPosition.replace(/(-?\d+)(?=px$)/, function(){return parseInt(arguments[1])+4;});
}
j++;
}else{
intervalId=clearInterval(intervalId);
j=0;
}
};
</script>
</body>
</html>

   
0 请登录后投票
论坛首页 AJAX版 UI

跳转论坛:
JavaEye推荐