惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

博客园 - 杨丹

AllanCodeMaker 代码生成器 release0.9.0 下载 支持C#,Java,可自订模板 Windows 10和Visual Studio 2015 能给.Net方向的开发从业者带来什么? 重写代码生成器支持模板(多层架构,MVC),多语言c#,java;支持mysql和sqlserver,动态编译 准备再次开始更新文章,做了10年.net,有项目需要转java 在WPF使用FolderBrowserDialog和OpenFileDialog。 .net4.0 和win7+iis7.5+vs2010了,配置项目时的问题。 试试live writer写cnblog LMS系统优化 WCF运行错误:“此集合已经包含方案 http 的地址”的解决办法 - 杨丹 中国房地产的实质 十六句经商名言 GridView中的数据导出为Excel【转】,和以前的有变化 [转]解决PowerDesigner中Name与Code同步的问题。 PowerDesigner Name/Code自动调整 [转] sql server 批量修改表和存储过程的所有者。 孤独 Ajax.net 错误 Could not load type 'Microsoft.Web.Extensions.Design.Dll'解决方法. 隐藏横向滚动条不成功的解决方案 - 杨丹 - 博客园 DataTable行列转置,实现横向显示数据记录
用javascript写的类似ModalPopupExtender控件的效果(因为自...
杨丹 · 2006-11-23 · via 博客园 - 杨丹

今天本来准备用ModalPopupExtender在项目中做一个效果的,ajax.net的AjaxControlToolkit 确实很方便,一下就把效果搞出来了,正准备高兴的时候,发现PopupControlID指向的panel中的服务端控件其实并不能激发服务器端事件。被一个网友的文章误导了,他肯定自己都没有试过,就在那里乱说可以。还在文章前面写上原创。我因为这个问题在找资料的时候,不一会儿就在别人那里找到个文章,结果发现他只是抄了别人一段,怪不得没头没尾。BS一下!哎,今天火气怎么这么大呢?怎么不大呢!?如果不被他误导,我早就去找别的方法去了,今天的工作进度又慢了。哎。好不,讲了这么多废话,少讲点,写完早点休息,:)。

    基于上述原因,我只好决定自己先用javascript来实现相同的效果,以后学好ajax后再看看怎么解决,也期待高人指点。
    首先我发现ModalPopupExtender控件有个BackgroundCssClass="modalBackground"属性 ,再对照这个css,
   .modalBackground {
            background-color:Gray;
            filter:alpha(opacity=70);
            opacity:0.7;
        }    
我就觉得它一定是用的一个层<div>来挡住了后面的页面,这个层一定要是占据整个页面,然后设置它的透明度,颜色就好了。然后至于没有被挡住的部分(确定与否的那个层),它的z-index只要比半透明层高就可以了。其实就是PopupControlID="Panel1"  对应于z-index最高的层,ModalPopupExtender1对应于半透明层。
 然后就可以开始编程了。
一、设计一个半透明层:
<style type="text/css">
html { height : 100%; }
body {
height : 100%;
 margin-left: 0px;
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
}
#cover{
position:absolute;
left : 0;
float:left;
margin:0;
width:100%;
height:100%;
background:#ffffff;
z-index:100;
filter: Alpha(Opacity=70);
opacity:0.7;}
</style>

<div id="cover" class=cover></div>

另一个层就是您要显示在遮照效果以上的,我这里就不写了,你的是什么就是什么。

注意,
1、最好是将html和body的height都设置为100%,因为带有 doctype 声明的话, html 和 body 元素也是有高度的, 把他们设定成 100% 才可以。
2、Alpha(Opacity=70);是设置透明度,不过这个透明度,在firefox下不能用,所以还要加上opacity:0.7,这个在firefox1.5+和oprea9+就能用了。

二、
现在就来控制这两个层的显示和隐藏。
这两个层的显示和隐藏一定是同时的(实际应用中应该是这样)。
可以写两个javascript函数,请看下面,多余的代码我删了
function hideMsg(control)
{

     document.getElementById("showMsg").style.display = 'none';//最上面的层(确定与否的那个层)
     document.getElementById('cover').style.display = 'none';//遮照层
}
function showMsg(control)
{

      document.getElementById("showMsg").style.display = '';;//最上面的层(确定与否的那个层)
     document.getElementById('cover').style.display = '';;//遮照层
    
}

然后理所当然在‘最上面的层’中的‘确定’和‘取消’都应该调用' hideMsg()'.
‘确定’和‘取消’可以是服务器端控件,所以真正是你想干什么就干什么了。(说大话了,脑筋快不行了,困了)。
记得初始化页面的时候先隐藏这两个层哦。

看看效果吧。

后:(遮照掉的部分是不能编辑的)

感觉是不是还行呢?也不用写太多代码。
大家有兴趣的话,多试试吧。
不过还是希望找到ModalPopupExtender控件能调用服务器端的方法,我这个也许是笨人的笨办法了,哎,又伤感了。明天还要继续上班,周末要去参加慈善慢跑。一个字----累。