zoukankan      html  css  js  c++  java
  • Microsoft出招,Adobe接招,我们只好择优使用

    Adobe 推出的Spry主要采用了ajax技术,Spry内置了一些集成的功能,在网站制作中比较有用。下面简单的介绍一下并给出对策。

    使用Spry的tab能够快速建立Tab栏标签。事实上,ASP.NET AJAX的controlkits 也提供了tab控件,ASP.NET 提供的tab控件缺点是虽然功能强大,但是界面丑陋,要美化一个tab比较费力,adobe这个tab可以说只是外表的美化,这正是我们所需求的。

    首先启动Dreamweaver CS3,建立一个空白的HTML页面。在Insert菜单里,可以找到Spry下的Tabbed Panels,如下图(说明:这个Spry是CS3新增的,如果你用的是dreamweaver8 或者更早的2004版本,则没有这个功能。)

    点击后,会生成如下的脚本

    <script src="SpryAssets/SpryTabbedPanels.js" type="text/javascript"></script>
    <link href="SpryAssets/SpryTabbedPanels.css" rel="stylesheet" type="text/css" />
    <div id="TabbedPanels1" class="TabbedPanels">
    <ul class="TabbedPanelsTabGroup">
    <li class="TabbedPanelsTab" tabindex="0">Tab 1</li>
    <li class="TabbedPanelsTab" tabindex="0">Tab 2</li>
    </ul>
    
    <div class="TabbedPanelsContentGroup">
    <div class="TabbedPanelsContent">Content 1</div>
    <div class="TabbedPanelsContent">Content 2</div>
    </div>
    </div>
    
    <script type="text/javascript">
    <!--var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");//--></script>

    现在运行页面,如下一个tab就建成了。 如果你要查看微软提供的TAB,请单击此处http://ajax.asp.net/ajaxtoolkit/Tabs/Tabs.aspx

    关于使用时的注意事项:

    1) 如果你查看脚本,就可以发现他调用的TabbedPanels方法,所以在页面的最下部必须有如下代码,如果你将他放在也页面的顶部,你将看不到效果。

    var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");//-->

    2) tab的处理采用Tab--tabgroup--content思想,所以请注意防置的顺序,另外他主要使用了div,所以不要删除他生成的div,有些美化的都是靠div显示。

    下面是Adobe提供的Accordion, 好像有点丑。 要比较微软的,请单击此处 http://ajax.asp.net/ajaxtoolkit/Accordion/Accordion.aspx

    Spry是一系列功能的集合,在Spry菜单弹出的子菜单里,你开可以看到Menubar 等,你同样可以实验一下他的功能。。
    Spry菜单下,你还可以看到DataSet/Repeater,几乎就是和微软的DataSet/Repeater类型。Spry Xml DataSet,在数据访问方面,类似于MS提供的WebService,功能更强大,我还没有实验过

     另外,Spry还提供了 Validation,请参考顶部那个图,一开始我还以为是类似ASP.NET的验证控件呢,使用起来还行,Adobe毕竟是做美工的,所以比ASP.NET的要漂亮,如下图

    容,请访问
    http://labs.adobe.com/technologies/spry/articles/textfield_overview/

    关于文本框变色的讨论 在上面看到Adobe提供的文本框的变化效果后,可能很多人都想实现这个效果,仅仅是显示效果,在ASP.NET里实现这个效果很简单,下面介绍如何简单的实现这个效果。

    首先,我们需要写一个类来枚举当前页面的所有控件,如下:

    public static void SetInputControlsHighlight(Control container, string className, bool onlyTextBoxes)
    {
        foreach (Control ctl in container.Controls)
        {
            if ((onlyTextBoxes && ctl is TextBox) || ctl is TextBox || ctl is DropDownList ||
                ctl is ListBox || ctl is CheckBox || ctl is RadioButton ||
                ctl is RadioButtonList || ctl is CheckBoxList)
            {
                WebControl wctl = ctl as WebControl;
                wctl.Attributes.Add("onfocus", string.Format("this.className = '{0}';", className));
                wctl.Attributes.Add("onblur", "this.className = '';");
            }
            else
            {
                if (ctl.Controls.Count > 0)
                    SetInputControlsHighlight(ctl, className, onlyTextBoxes);
            }
        }
    }

    因为我们可能需要在多个页面使用这个功能,所以我们最好把他做成通用的,因此我们重写Page类,如下建立basePage,basePage最大的特点是从Page类派生,然后覆盖OnLoad事件,如下

    public class basePage:Page
    {
        protected override void OnLoad(EventArgs e)
        {
            SetInputControlsHighlight(this, "highlight", true);
        }
    }

    需要注意SetInputControlsHighlight的参数,第一个表示本身,第二个表示CSS的样式名,第三个表示是否只适合文本框,如果为true,那么当你页面有dropdown,listbox时都会采用你的样式,为false则不采用。

    现在我们需要建立highlight样式,因此,我建立一个stylesheet.css文件,如下,设置背景为: #fefbd2,文字颜色为红色。

    .highlight
    {
        background-color: #fefbd2;
        color:red
    }

    现在,再建立一个页面,default.aspx,并在上面放置2个文本框和一个dropdownlist作为演示,default从basePage派生,并添加对stylesheet.Css文件的引用

    public partial class _Default : basePage
    {
    
    }

    到此几乎所有的工作都好了,运行,如下

    当你选择不同的文本框时,当前选中的文本框将变色。

    关于本例的扩展:

    在SetInputControlsHighlight的定义里,你可以看到如下代码

    wctl.Attributes.Add("onfocus", string.Format("this.className = '{0}';", className));
    wctl.Attributes.Add("onblur", "this.className = '';");

    你完全可以添加更多的样式,例如

    wctl.Attributes.Add("onmouseover", "this.className = 'SSD';");
    wctl.Attributes.Add("onmouseout", "this.className = 'XXX';");

    这样你可以添加当鼠标移动过控件是的效果,例如更改背景色,文本的颜色等待。
    可以看到使用MS技术确实也有过人之处撒 :) ,用Adobe的DW则好像还比较困难 :(


    以前我总感觉MS的技术是最好的,当然现在不是这样认为了,一句话,MS有MS的简单,Adobe有Adobe的美化,所以对我们而言,两个在更多情况下应该结合起来用,是朋友而不是敌人。

  • 相关阅读:
    开发体系规范建议
    centos安装samba
    【OF框架】在部署中使用 Windows身份认证
    【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作
    【OF框架】定义框架标准WebApi,按照规范返回状态信息及数据信息
    【OF框架】使用IDbContextTransaction在框架中对多个实体进行事务操作
    【OF框架】新建库表及对应实体,并实现简单的增删改查操作,封装操作标准WebApi
    【OF框架】框架Cache/Session在负载均衡部署时,切换Memory/Redis测试
    【OF框架】在Visual Studio中启用Docker支持,编译生成,并在容器运行项目
    【OF框架】在Visual Studio中发布Docker镜像,推送镜像到Azure容器注册表
  • 原文地址:https://www.cnblogs.com/masahiro/p/10130775.html
Copyright © 2011-2022 走看看