Visual Studio.Net 的“绝对定位”有啥问题,CSS 的“绝对定位”是如何解决这个问题的?

Posted

技术标签:

【中文标题】Visual Studio.Net 的“绝对定位”有啥问题,CSS 的“绝对定位”是如何解决这个问题的?【英文标题】:What is the problem with Visual Studio.Net's "absolute positioning", and how is that problem fixed by CSS's "absolute positioning"?Visual Studio.Net 的“绝对定位”有什么问题,CSS 的“绝对定位”是如何解决这个问题的? 【发布时间】:2010-12-03 01:51:26 【问题描述】:

多年来,Visual Studio.NET 一直为 ASP.NET 提供“绝对定位”,您可以将控件拖到设计器画布上的任何位置。但是,一直有强烈的建议不要使用该功能。相反,常识说你应该使用“流布局”,因为如果你使用 VS.NET 的“绝对定位”,你的屏幕将无法正确呈现给屏幕分辨率与你不同的用户。

但是,这是老建议。不久前,CSS 出现了以符合标准的方式执行“绝对定位”的能力,并且大多数或所有浏览器都赶上了 CSS,并正确地实现了 CSS 定位(或至少足够好)。

所以目前推荐的做法是使用 CSS 绝对定位来定位元素。

问题是:CSS 在绝对定位方面做得对,Visual Studio 做错了什么? CSS 绝对定位怎么可能对不同屏幕分辨率的用户都行,而 Visual Studio.NET 不行?

更新:这里的回复已经为我解决了这个问题。我是这样总结的:

    很久以前,VS.NET 默认使用 一切的绝对定位。 这就是 VB 的工作方式 开始(意思是,Windows 应用程序 甚至在网络存在之前),以及 VS.NET 感觉类似于 VB。 但是,使用绝对定位 因为网页上的一切都是 非常糟糕的主意。见其中之一 下面是一些具体的回复 举例说明原因。 由于使用绝对定位 Web 应用程序上的每个控件 页面是个坏主意,所有这些 关于使用“流布局”的建议 如雨后春笋般涌现。这是一种工作方式 VS.NET 没有绝对 定位一切。 现在 CSS 如此成熟和广泛 支持,是首选 定位机制和 外观,它仍然是疯狂的 绝对定位一切,并且 出于同样的原因。大多数项目 应该允许定位 自己“在流动”。然而, 对于这里和那里的一些元素, 绝对 CSS 定位可能会使 感觉。 VS.NET 一直使用的机制 执行绝对定位是 实际上是内联 CSS 样式。

很高兴把这一切都弄清楚了。谢谢。

【问题讨论】:

“所以目前推荐的做法是使用 CSS 绝对定位来定位元素” - 谁推荐的? VS.NET总是使用 CSS 为 ASP.NET 实现绝对定位,原因很简单,CSS 是在 html 文档中实现绝对定位的唯一方法。 (CSS 定位比 ASP.NET 早几年。) 好吧,也许我弄错了。我的理解是,一般网络社区(Microsoft 世界之外)建议使用 CSS 定位。 HTML 元素应该传达结构,而不是定位或外观。然后,定位应该用CSS来完成。另外,我的理解是页面较大的组织元素应该通过 CSS 绝对定位来定位。例如,此链接 recc 使用 CSS-P 而不是表格驱动布局:webdesign.about.com/od/css/a/aa102102a.htm. 【参考方案1】:

作为一般的 web 开发点,绝对定位是不受欢迎的。它有一些罕见的用途,但在良好的 css 设计中并不多。

Visual Studio 通过使用内联 css 样式实现了这种布局,但它仍然是 css 绝对定位。

开发 Web 布局的最佳方式是从呈现为有效 HTML 元素的内容开始。然后通过对这些元素应用适当的级联规则来使用 CSS 改进布局。然后将类添加到需要与标准元素进行不同布局的单个元素。

最后,要添加任何 whiz bang 功能,您可以使用 Jquery 之类的 javascript 在视觉上增强标准 html 控件的外观。

通过这种方式,您的网站可以使用功能较弱的浏览器“优雅地降级”。

【讨论】:

【参考方案2】:

默认情况下绝对定位所有元素——就像 Visual Studio 过去那样——是一种糟糕的网站设计方式。当时这是个坏主意,现在仍然如此。

绝对定位的问题与标准或在浏览器中正确呈现无关(IE5 和 NN4 都支持 CSS 绝对定位,这是 Visual Studio.NET 用来定位元素的方式)。

Visual Studio 方法的问题在于,为了方便拖放界面,它剥夺了 HTML 和 CSS 的所有功能和优雅。它旨在让不懂任何 HTML 或 CSS 的开发人员开发 Web 应用程序。

当您的所有元素都绝对定位时,即使是 HTML/CSS 中的微不足道的更改也会成为一场噩梦。我的一些具体抱怨:

一般对齐调整 -- 每当添加、删除或调整元素大小时,您必须手动确保所有控件的间距仍然均匀且控件不重叠。如果他们这样做了……您只是在接下来的五分钟内失去了生命的总体对齐洗牌。将控件轻推到位并确保所有内容都排列整齐。 全选并移动 -- 如果新的公司徽标比之前的徽标高 10 像素,您最终会选择所有控件并将它们向下移动 10 像素...但是等等...您不知何故设法错过了那个控制。当您将控制权固定到位时,再罚 5 分钟。 动态内容地狱 -- 您将描述框放在标题的正下方……这在大多数情况下都有效。但是现在标题已经换行并与描述@#$#% 重叠。上帝禁止您尝试任何包含大量动态内容的页面。

绝对定位您的一些元素还不错,但除非您将 VB6 应用程序移植到网络表单,否则没有理由绝对定位所有元素。

【讨论】:

很棒的反应,谢谢。我同意你的看法,我开始看到光明。关于使用 FlowLayout 的旧建议不仅仅是避免 VS.Net 自己的绝对布局实现......它通常是关于避免绝对布局。网页不应该将每个元素都布局为绝对定位(然而 VS.Net 过去默认使用它)。很有帮助,谢谢。

以上是关于Visual Studio.Net 的“绝对定位”有啥问题,CSS 的“绝对定位”是如何解决这个问题的?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio.net 2002 在哪里有下载?

急需!!!visual studio.net 2005怎么 设置环境变量?

我装visual studio.net系统必备 的时候,点跳 过后,怎么让我插入visual studio.net

visual Studio .NET 安装

我在装Microsoft Visual Studio.NET的时候,要求重启怎么办

使用 c# 将 Visual Studio .net 2003 转换为 2008