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

时间:2009-10-01 17:07:07

标签: asp.net css visual-studio

多年来,Visual Studio.NET为ASP.NET提供了“绝对定位”,您可以将控件拖动到设计器画布上的任何位置。但是,使用该功能始终存在强烈建议 。相反,普遍的智慧说你应该使用“流程布局”,因为如果你使用VS.NET的“绝对定位”,你的屏幕将无法正确显示屏幕分辨率与你的不同的用户。

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

因此,目前推荐的做法是使用CSS绝对定位来定位元素。

问题是: CSS对绝对定位的正确做法是什么,Visual Studio错误地做了什么?即使对于具有不同屏幕分辨率的用户,CSS绝对定位如何才能正常?而Visual Studio.NET不能?

更新:此处的回复已经为我解决了这个问题。以下是我总结的方法:

  1. 年龄前,VS.NET默认使用 绝对定位一切。 这就是VB如何运作的 开头(意思是,Windows应用程序 在网络甚至存在之前),和 VS.NET被认为与之类似 VB。
  2. 但是,使用绝对定位 对于网页上的所有内容都是一个 非常糟糕的主意。见其中一个 一些具体的回应如下 例子为何。
  3. 由于使用绝对定位 Web应用程序上的每个控件 这一切都是一个糟糕的主意 关于使用“流程布局”的建议 如雨后春笋般涌现。这是一种工作方式 没有绝对的VS.NET 定位一切。
  4. 现在CSS已经非常成熟和广泛 支持,是首选 定位机制 外观,它仍然是疯狂的 绝对定位一切,并且 出于同样的原因。大多数物品 应该被允许定位 他们自己“在流动中”。然而, 对于某些元素,这里和那里, 绝对的CSS定位可能会 感。
  5. VS.NET一直使用的机制 执行绝对定位是 实际上是内联CSS样式。
  6. 很高兴让所有这些都清理完毕。感谢。

2 个答案:

答案 0 :(得分:7)

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

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

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

最后要添加任何突发功能,您可以使用像Jquery这样的Javascript来直观地增强标准html控件的外观。

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

答案 1 :(得分:2)

默认情况下,绝对定位所有元素 - 正如Visual Studio所做的那样 - 设计网站是一种可怕的方式。那是一个坏主意,它现在仍然存在。

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

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

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

  • 常规对齐shuffle - 每当添加,删除或调整元素大小时,您必须手动确保所有控件仍然均匀分布且控件不重叠。如果他们这样做了......你刚刚将生命的下一个五分钟丢失到一般的对齐洗牌中。轻推控制并确保一切排好。
  • 选择所有并移动 - 如果新公司徽标比之前的公司徽标高10px,您最终会选择所有控件并将其向下移动10px ......但请等待..你以某种方式设法错过了那个控制。当你将控制权交到位时,又会受到五分钟的惩罚。
  • 动态内容地狱 - 您将描述框放在标题正下方...这大部分时间都有效。但现在标题已经包装并且与描述@#$#%重叠。上帝禁止你真正尝试任何包含大量动态内容的页面。

绝对定位你的一些元素并不错,但除非你将VB6应用程序移植到webform,否则没有理由绝对定位所有元素。