CSS还提供了大小相关属性来控制HTML组件的大小,例如通过width属性控制HTML组件的宽度,通过height属性控制HTML组件的高度。使用这种大小相关的属性允许开发者自定义HTML组件的大小。
  除此之外,CSS还提供了position、left、top等属性,开发者可以通过这些属性来控制HTML组件的位置,允许把HTML组件放置在页面上的任意位置。

大小相关属性

  大小相关属性主要用于设置目标对象的宽度、高度,包括最大宽度、高度,以及最小宽度、高度。常用的大小相关属性有如下几个。
  ➢ height:用于设置目标对象的高度。该属性值可以是任何有效的距离值。
  ➢ max-height:用于设置目标对象的最大高度。如果此属性的值小于min-height属性的值,将会被自动转换为min-height属性的值。该属性值可以是任何有效的距离值。
  ➢ min-height:用于设置目标对象的最小高度。如果此属性的值大于max-height属性的值,将会被自动转换为max-height属性的值。该属性值可以是任何有效的距离值。
  ➢ width:用于设置目标对象的宽度。该属性值可以是任何有效的距离值。
  ➢ max-width:用于设置目标对象的最大宽度。如果此属性的值小于min-width属性的值,将会被自动转换为min-width属性的值。该属性值可以是任何有效的距离值。
  ➢ min-width:用于设置目标对象的最小宽度。如果此属性的值大于max-width属性的值,将会被自动转换为max-width属性的值。该属性值可以是任何有效的距离值。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title>大小相关属性测试</title>
</head>  
<body>  
    <!-- 下面使用内联的CSS样式控制大小,
        为了得到更好的显示效果,并设置了背景色 -->
    <div style="width:200px;height:40px;background-color:#ddd">
    Java学习
    </div>
</body>  
</html>  

CSS 3新增的box-sizing属性

  在默认情况下,如果指定width、height属性,只是指定该元素的内容区的宽度、高度,对该元素的内补丁区、边框区、外补丁区所占的空间不产生任何效果。
  CSS 3新增了box-sizing属性来设置width、height控制哪些区域的宽度、高度,这样就可以让开发者控制起来更加方便。例如有些时候,开发者需要控制的并不是该元素内容的宽度、高度,而是该元素整体(包括padding区、border整体的宽度和高度),该属性支持如下几个属性值。
  ➢ content-box:设置width、height控制元素的内容区宽度和高度。
  ➢ padding-box:设置width、height控制元素的内容区加内补丁区的宽度和高度。
  ➢ border-box:设置width、height控制元素的内容区加内补丁区再加边框区的宽度和高度。

注意

  上面第二个属性值目前只有Firefox浏览器才支持。而且在Firefox浏览器中使用该属性时需要添加-moz-前缀,也就是写成-moz-box-sizing。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title>box-sizing属性</title>
</head>  
<body>  
    <div style="width: 200px;height:100px;background-color:#ddd;
        background-clip: content-box;
        border: 20px solid #555;
        padding: 20px;
        box-sizing: content-box;
        -moz-box-sizing: content-box;">
    box-sizing: content-box;
    </div>
    <div style="width: 200px;height:100px;background-color:#ddd;
        background-clip: content-box;
        border: 20px solid #555;
        padding: 20px;
        box-sizing: padding-box;
        -moz-box-sizing: padding-box;">
    box-sizing: padding-box;
    </div>
    <div style="width: 200px;height:100px;background-color:#ddd;
        background-clip: content-box;
        border: 20px solid #555;
        padding: 20px;
        box-sizing: border-box;
        -moz-box-sizing: border-box;">
    box-sizing: border-box;
    </div>
</body>  
</html>  
结果

  上面页面中定义了3个<div.../>元素,其width、height属性都被设置成200px、100px,其中第一个<div.../>元素的box-sizing属性为content-box,这表示该元素的内容区高度为100px,宽度为200px;第二个<div.../>元素的box-sizing属性为padding-box,这表示该元素的内容区加内补丁区的高度为100px,宽度为200px;第三个<div.../>元素的box-sizing属性为border-box,这表示该元素的内容区加内补丁区再加边框区的高度为100px,宽度为200px。使用浏览器浏览该页面,将看到如下图所示的效果。


IT料理

CSS 3新增的resize属性

  CSS 3还新增了一个resize属性,该属性用于指定是否允许用户通过拖动来改变元素的大小。该属性支持如下几个属性值。
  ➢ none:设置不允许用户通过拖动来改变组件的大小。
  ➢ both:设置不允许用户通过拖动来改变组件的高度和宽度。
  ➢ horizontal:设置不允许用户通过拖动来改变组件的宽度。
  ➢ vertical:设置不允许用户通过拖动来改变组件的高度。
  ➢ inherit:继承自父元素的resize属性值。这是默认值。
  resize属性对于所有设置了overflow的HTML组件有效,绝大部分主流浏览器如Firefox、Opera、Chrome都已支持该属性。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title>resize属性</title>
</head>  
<body>  
    <div style="width: 200px;height:100px;background-color:#eee;
        resize: both;
        overflow: auto;
        border: 2px solid #555;">
    resize: both;——指定可在两个方向上调整大小。
    </div>
    <div style="width: 200px;height:100px;background-color:#eee;
        resize: horizontal;
        overflow: auto;
        border: 2px solid #555;">
    resize: horizontal;——指定只可在横向上调整大小。
    </div>
    <div style="width: 200px;height:100px;background-color:#eee;
        resize: vertical;
        overflow: auto;
        border: 2px solid #555;">
    resize: vertical;——指定只可在纵向上调整大小。
    </div>
</body>  
</html>  

注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。