バックエンド プログラマーがフロントエンド (CSS) について語る レッスン 7: ポジショニングとフローティング_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:47:20
オリジナル
1120 人が閲覧しました

1. ポジショニング:

1. ポジショニングの理解

(1) 相対ポジショニング

相対ポジショニングは習得するのが非常に簡単な概念です。要素が相対的に配置されている場合は、その位置に表示されます。次に、垂直または水平位置を設定することで、要素をその原点に対して「相対的に」移動できます。

top を 20px に設定すると、ボックスは元の位置の上部から 20 ピクセル下になります。 left を 30 ピクセルに設定すると、要素の左側に 30 ピクセルのスペースが作成され、要素が右に移動します。


#box_relative {
ログイン後にコピー
ログイン後にコピー
  position: relative;
ログイン後にコピー
  left: 30px;
ログイン後にコピー
ログイン後にコピー
  top: 20px;
ログイン後にコピー
ログイン後にコピー
}
ログイン後にコピー
ログイン後にコピー

以下に示すように:

相対配置を使用する場合、要素は移動したかどうかに関係なく、元のスペースを占有することに注意してください。 。したがって、要素を移動すると、他のボックスが覆われてしまいます。

(2) 絶対配置

絶対配置では、要素の位置がドキュメント フローから独立するため、スペースを占有しません。これは、要素の位置が通常のフロー内の位置を基準とするため、実際には通常のフロー位置決めモデルの一部とみなされる相対位置決めとは異なります。
通常のフロー内の他の要素は、絶対配置された要素が存在しないかのようにレイアウトされます:

#box_relative {
ログイン後にコピー
ログイン後にコピー
  position: absolute;
ログイン後にコピー
  left: 30px;
ログイン後にコピー
ログイン後にコピー
  top: 20px;
ログイン後にコピー
ログイン後にコピー
}
ログイン後にコピー
ログイン後にコピー

以下に示すように:

絶対配置された要素の位置は、最も近い既に位置決めされている祖先要素。要素に位置決めされた祖先要素がない場合、その位置は元の包含ブロックを基準とします。
ポジショニングに関する主な問題は、それぞれのポジショニングの意味を覚えておくことです。それで、ここで学んだことを復習しましょう。相対配置はドキュメント内の要素の初期位置に「相対」しますが、絶対配置は最も近い位置にある祖先要素に「相対」します。配置された祖先が要素が存在しない場合は、「に相対」します。元の包含ブロック。
注: ユーザー エージェントによっては、最初に含まれるブロックがキャンバスまたは HTML 要素になる場合があります。
ヒント: 絶対に配置されたボックスはドキュメント フローから独立しているため、ページ上の他の要素を覆うことができます。 z-index プロパティを設定することで、これらのボックスの積み重ね順序を制御できます。

2. CSS 配置プロパティ

CSS 配置プロパティを使用すると、要素を配置できます。

(1) 位置

要素を静的、相対、絶対、または固定位置に配置します。

属性値:

  • absolute: 静的配置以外の最初の親要素に対して相対的に配置される絶対配置要素を生成します。要素の位置は、「left」、「top」、「right」、「bottom」属性によって指定されます。
  • 修正: ブラウザ ウィンドウを基準にして配置された絶対位置の要素を生成します。要素の位置は、「left」、「top」、「right」、「bottom」属性によって指定されます。
  • relative: 通常の位置を基準にして相対的に配置された要素を生成します。したがって、「left:20」は要素の LEFT 位置に 20 ピクセルを追加します。
  • static:デフォルト値。位置決めを行わない場合、要素は通常のフローで表示されます (上、下、左、右、または z-index 宣言は無視されます)。
  • inherit:position 属性の値を親要素から継承することを指定します。
  • (2) top、right、bottom、left

    Property Description
    top は、位置決めされた要素の上マージン境界と、その要素を含むブロックの上境界の間のオフセットを定義します。
    right は、位置決めされた要素の右マージン エッジと、その要素を含むブロックの右エッジの間のオフセットを定義します。
    bottom は、位置決めされた要素の下マージン境界と、その要素を含むブロックの下境界との間のオフセットを定義します。
    left は、位置決めされた要素の左マージンの端と、その要素を含むブロックの左端の間のオフセットを定義します。

    属性值:

  • auto:默认值。通过浏览器计算上边缘的位置。
  • %:设置以包含元素的百分比计的上边位置。可使用负值。
  • length:使用 px、cm 等单位设置元素的上边位置。可使用负值。
  • inherit:规定应该从父元素继承 top 属性的值。
  • (3)overflow

    设置当元素的内容溢出其区域时发生的事情。

    属性值:

  • visible:默认值。内容不会被修剪,会呈现在元素框之外。
  • hidden:内容会被修剪,并且其余内容是不可见的。
  • scroll:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  • auto:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
  • inherit:规定应该从父元素继承 overflow 属性的值。
  • (4)clip

    设置元素的形状。元素被剪入这个形状之中,然后显示出来。

    属性值:

  • shape:设置元素的形状。唯一合法的形状值是:rect (top, right, bottom, left)。
  • auto:默认值。不应用任何剪裁。
  • inherit:规定应该从父元素继承 clip 属性的值。
  • (5)vertical-align

    设置元素的垂直对齐方式。

    属性值:

  • baseline:默认。元素放置在父元素的基线上。
  • sub:垂直对齐文本的下标。
  • super:垂直对齐文本的上标
  • top:把元素的顶端与行中最高元素的顶端对齐
  • text-top:把元素的顶端与父元素字体的顶端对齐
  • middle:把此元素放置在父元素的中部。
  • bottom:把元素的顶端与行中最低的元素的顶端对齐。
  • text-bottom:把元素的底端与父元素字体的底端对齐。
  • length
  • %:使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
  • inherit:规定应该从父元素继承 vertical-align 属性的值。
  • (6)z-index:设置元素的堆叠顺序。

    属性值:

  • auto:默认。堆叠顺序与父元素相等。
  • number:设置元素的堆叠顺序。
  • inherit:规定应该从父元素继承 z-index 属性的值。
  • 二、浮动

    1、浮动的理解

    浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

    由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。

    请看下图,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘:

    再请看下图,当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失。

    如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框。

    如下图所示,如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”:

    2、CSS 浮动属性

    float

    属性值:

  • left:元素向左浮动。
  • right:元素向右浮动。
  • none:默认值。元素不浮动,并会显示在其在文本中出现的位置。
  • inherit:规定应该从父元素继承 float 属性的值。
  • 实例(把图像向右浮动):

    img
    ログイン後にコピー
      {
    ログイン後にコピー
      float:right;
    ログイン後にコピー
      }
    ログイン後にコピー

    3、来个实验吧!

    示例1:(认识float的两种特性)

    <!DOCTYPE html> 
    ログイン後にコピー
    ログイン後にコピー
    <html>
    ログイン後にコピー
        <head>
    ログイン後にコピー
    ログイン後にコピー
            <title>Demo</title>
    ログイン後にコピー
    ログイン後にコピー
        </head>
    ログイン後にコピー
    ログイン後にコピー
        <body>
    ログイン後にコピー
    ログイン後にコピー
            <div>
    ログイン後にコピー
    ログイン後にコピー
                <div style='float:left'><img src="image/1.jpg" ></div>
    ログイン後にコピー
                <div>
    ログイン後にコピー
                <div>
    ログイン後にコピー
                <div>
    ログイン後にコピー
            </div>
    ログイン後にコピー
    ログイン後にコピー
        </body>
    ログイン後にコピー
    ログイン後にコピー
    </html>
    ログイン後にコピー
    ログイン後にコピー

    截图如是:

    第一个

    :

    第二个

    :

    第一个

    去掉'float:left':

    我们对比这几幅截图,可以得知以下几点:

    1. float具有“包裹性”。(所谓包裹性就是普通的div如果没有设置宽度,它会撑满整个屏幕,而如果给div增加float:left之后,它会把内容紧紧包裹起来。)【见图(第一个
      )与图(第一个
      去掉'float:left')的对比】
    2. float具有“破坏性”。(所谓破坏性就是设置了float属性的元素会脱离文档流。)【见图(第一个
      )与图(第二个
      )】

    其实,如是解析仍感觉对float的“破坏性”描述的不太明白,好吧,再来个例子。看看float的本职工作。

    示例2:(我生来是做文字环绕效果的!)

    <!DOCTYPE html> 
    ログイン後にコピー
    ログイン後にコピー
    <html lang=“utf8”>
    ログイン後にコピー
        <head>
    ログイン後にコピー
    ログイン後にコピー
            <meta charset="utf-8">
    ログイン後にコピー
            <title>Demo</title>
    ログイン後にコピー
    ログイン後にコピー
        </head>
    ログイン後にコピー
    ログイン後にコピー
        <body>
    ログイン後にコピー
    ログイン後にコピー
            <div>
    ログイン後にコピー
    ログイン後にコピー
                <img src="image/1.jpg" style='float:left'>
    ログイン後にコピー
                哇咔咔,我生来是做文字文字环绕效果的!
    ログイン後にコピー
            </div>
    ログイン後にコピー
    ログイン後にコピー
        </body>
    ログイン後にコピー
    ログイン後にコピー
    </html>
    ログイン後にコピー
    ログイン後にコピー

    去掉'float:left'的元素:

    带有'float:left'的元素:

    元素去掉'float:left'时的

    元素:

    元素带有'float:left'时的

    元素:

    其实 ,我一直想强调,但一直没能说清楚的是:

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!