皮肤和样式表noob问题

时间:2009-08-27 03:30:01

标签: asp.net css skins

我有一个包含以下内容的皮肤文件:

< asp:TextBox runat="server" CssClass="FixedFont"/>

在与Skin文件相同的文件夹中,是以下css文件。 Css文件包含:

.FixedFont
    {
    font-family:Courier;    
    }

最后,我有一个ASPX页面,其中包含以下控件:

<asp:TextBox ID="TextBox1" runat="server">Test</asp:TextBox>

当我在设计模式下查看ASPX页面或运行页面时,我看到样式上的font-family属性确实影响了文本框控件,即它被更改为Courier。

但是,我还想做的是在我的ASPX页面上定义一个本地样式,

.DefaultWidth
    {
    width: 300px;
    }

...并拥有我的所有TextBox,以便它们具有相同的宽度。

如果我将TextBox1的CssClass属性设置为“DefaultWidth”...

<asp:textbox ID="TextBox1" CssClass="DefaultWidth">Hello</asp:TextBox>

...文本框的宽度更改为300px,但我失去了应用修复字体Courier样式的皮肤效果。

要获得要应用的两种效果,DefaultWidth和固定字体文本框效果,我必须将CSSClass属性设置为“DefaultWidth FixedFont”,这对我来说,似乎它破坏了第一个拥有皮肤的优势地点。我想我希望效果是CUMULATIVE,除非我添加了一个与SKIN冲突的样式,在这种情况下,我希望本地类应用于皮肤的效果。例如,如果我应用了第二个类Class2,除了其他效果之外还包括字体系列规范,我希望Class2中指定的字体覆盖FixedFont样式中的字体。但这似乎不是这里发生的事情。

管理这种情况的最佳方法是什么?我想常常想要一系列宽度都匹配的文本框,所以我想我除了在skin文件中使用应用于控件类型的效果外,还经常要在控件上指定一个CssClass。

解决方案是否不在SKIN中使用CSS?这似乎在维护方面也有缺点。

我遇到的第二个问题是,如果我使用以下类声明样式表..

.Button
{
    background-image: url('/images/button.gif')
}

...并将ASP按钮的CSSClass属性设置为“Button”,我看到图像平铺在按钮上。

但是,如果我在皮肤文件中输入以下代码

它找不到图像。

images文件夹是网站根目录下的第一个levl文件夹。

知道它为什么没有拿起图像。我已经尝试了其他各种途径,但这是唯一对我有意义的途径。

顺便说一下,图像在设计模式下应用,但在运行ity时它会消失。

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解了你的问题,但正如我从这里看到的那样,你应该以“本地”风格宣布这一点:

textbox.fixedfont { width:200px; }

或者只是对每个文本框,如果你确定影响每个宽度相同的文本框,那么皮肤无关紧要......

textbox { width:200px; }

如果这不是您所要求的,请更清楚。