【问题标题】:Getting A Control's Width ASP.NET获取控件的宽度 ASP.NET
【发布时间】:2011-06-12 11:31:50
【问题描述】:

在asp.net中,如何根据百分比获取控件的高度?

我可以获得宽度属性,但我将其设置为 100%,我需要实际像素

我需要它,以便我可以根据计算机的结果自定义我的网站。 (可以是任何控制面板、div 等)

【问题讨论】:

  • Web 服务器无法知道客户端的分辨率是多少。如果没有一些可怕的 javascript 黑客攻击,我认为这是不可能的。
  • @fearofawhackplanet,您可以使用渐进增强技术轻松做到这一点:html5boilerplate.com 我也推荐这本书以了解amzn.to/eXHapo

标签: c# asp.net controls height resolution


【解决方案1】:

只需访问(开箱即用)控件的高度属性(以像素为单位)。计算此宽度除以其容器在页面中的宽度之比,并将此数字表示为百分比。

例如:

(myControl.height/myPanel.height)/100 + "%";

但是,这不是设计网页以在不同大小的浏览器中正常运行的方式。根据您使用的控件类型,这可能会变得非常混乱,我只是在这里谈论外观。为此和您的容器使用固定宽度。如果需要,可以使用 CSS 和 JS 逐步增强您的网站。

冒着被烤焦的风险,我要说的是:永远不要使用流动布局——它们会改变布局的比例并破坏页面构成。使用流式布局总是导致您必须应用代码来更改图像相对于其容器的图像/高度比 - 这总是会导致图像质量下降和/或页面构图不佳。

【讨论】:

    【解决方案2】:

    我相信这在服务器端是不可能的,因为:

    • 输出布局在渲染阶段之前一直被修改。在此之前,这些估计是错误的/具有误导性,因此恕我直言,如果它们确实存在,它们将是糟糕的设计。
    • 布局和实际像素取决于浏览器设置和 HTML 标准的解释。尽管 ASP.NET 对浏览器的差异有一些了解,但它没有关于浏览器的直接信息,也不包含所有渲染引擎。

    百分比被重定向到浏览器渲染引擎,我怀疑标准的 ASP.NET 控件对特定值做任何事情。

    【讨论】:

    • 如果控件(服务器端)是在页面生命周期的早期创建的,它们的高度属性可以很容易地设置。
    • 并非普遍适用。此外,高度可以而且应该取决于以后发生的许多事情,包括数据(服务器端)、浏览器(客户端渲染)和用户(分辨率、用户 css 覆盖)。您可以说某些控件为 N px 的事实并不意味着它将在客户端上完全为 N px。依赖它是自找麻烦。
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多